def handle(self):
'''
Handles a Add Container request. Adds the specific container to the database
:return: a rendered site specific for the request
'''
self.form = AddForm(self.request.POST, self.request.FILES)
if not self.form.is_valid():
messages.add_message(self.request, messages.ERROR,
'No valid container detected. Maybe your container needs a password?')
return self._render_upload_page(form=self.form)
try:
result = UserCertificateManager.add_keycontainer(self.form._cert_bytes(),
self.form._read_password())
for e in result.exceptions:
messages.add_message(self.request, messages.WARNING, str(e))
if not result.success:
return self._render_upload_page()
if result.certificate is not None and result.privatekey is None:
result.privatekey = result.certificate.private_key
if result.certificate is None and result.privatekey is not None:
result.certificate = result.privatekey.certificates.all()[0]
return self._render_added_page(result)
except (ValueError, TypeError, AsymmetricKeyError, OSError) as e:
messages.add_message(self.request, messages.ERROR,
"Error reading file. Maybe your file is corrupt?")
return self._render_upload_page(form=self.form)
except Exception as e:
messages.add_message(self.request, messages.ERROR,
"Internal error: " + str(e))
return self._render_upload_page(form=self.form)
评论列表
文章目录