Revize 9cf9a19d
Přidáno uživatelem Michal Seják před asi 4 roky(ů)
src/controllers/certificates_controller.py | ||
---|---|---|
10 | 10 |
SSL_ID, SIGNATURE_ID, AUTHENTICATION_ID, \ |
11 | 11 |
DATETIME_FORMAT, ROOT_CA_ID, INTERMEDIATE_CA_ID, CERTIFICATE_ID # TODO DATABASE_FILE - not the Controller's |
12 | 12 |
from src.exceptions.database_exception import DatabaseException |
13 |
from src.exceptions.unknown_exception import UnknownException |
|
13 | 14 |
from src.model.subject import Subject |
14 | 15 |
from src.services.certificate_service import CertificateService, RevocationReasonInvalidException, \ |
15 | 16 |
CertificateStatusInvalidException, CertificateNotFoundException, CertificateAlreadyRevokedException |
... | ... | |
161 | 162 |
cert = self.certificate_service.get_certificate(v) |
162 | 163 |
|
163 | 164 |
if cert is None: |
164 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA
|
|
165 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA |
|
165 | 166 |
else: |
166 | 167 |
return {"success": True, "data": cert.pem_data}, C_SUCCESS |
167 | 168 |
|
... | ... | |
183 | 184 |
cert = self.certificate_service.get_certificate(v) |
184 | 185 |
|
185 | 186 |
if cert is None: |
186 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA
|
|
187 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA |
|
187 | 188 |
else: |
188 | 189 |
data = self.cert_to_dict_full(cert) |
189 | 190 |
if data is None: |
... | ... | |
239 | 240 |
if certs is None: |
240 | 241 |
return E_GENERAL_ERROR, C_INTERNAL_SERVER_ERROR |
241 | 242 |
elif len(certs) == 0: |
242 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA
|
|
243 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA |
|
243 | 244 |
else: |
244 | 245 |
ret = [] |
245 | 246 |
for c in certs: |
... | ... | |
296 | 297 |
cert = self.certificate_service.get_certificate(v) |
297 | 298 |
|
298 | 299 |
if cert is None: |
299 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA
|
|
300 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA |
|
300 | 301 |
|
301 | 302 |
if cert.parent_id is None: |
302 | 303 |
return E_NO_CERTIFICATES_FOUND, C_NO_DATA |
... | ... | |
448 | 449 |
return E_NO_CERTIFICATES_FOUND, C_NOT_FOUND |
449 | 450 |
else: |
450 | 451 |
return {"success": True, "data": self.certificate_service.get_public_key_from_certificate(cert)}, C_SUCCESS |
452 |
|
|
453 |
def delete_certificate(self, id): |
|
454 |
""" |
|
455 |
Deletes a certificate identified by ID, including its corresponding subtree (all descendants). |
|
456 |
:param id: target certificate ID |
|
457 |
:rtype: DeleteResponse |
|
458 |
""" |
|
459 |
try: |
|
460 |
v = int(id) |
|
461 |
except ValueError: |
|
462 |
return E_WRONG_PARAMETERS, C_BAD_REQUEST |
|
463 |
|
|
464 |
try: |
|
465 |
self.certificate_service.delete_certificate(v) |
|
466 |
except CertificateNotFoundException: |
|
467 |
return E_NO_CERTIFICATES_FOUND, C_NOT_FOUND |
|
468 |
except DatabaseException: |
|
469 |
return E_CORRUPTED_DATABASE, C_INTERNAL_SERVER_ERROR |
|
470 |
except CertificateStatusInvalidException or RevocationReasonInvalidException or UnknownException: |
|
471 |
return E_GENERAL_ERROR, C_INTERNAL_SERVER_ERROR |
|
472 |
|
|
473 |
return {"success": True, "data": "The certificate and its descendants have been successfully deleted."} |
Také k dispozici: Unified diff
Re #8572 - Added the `delete_certificate(id)` method to the Controller.