Files
mayan-edms/mayan/apps/document_signatures/forms.py
Roberto Rosario 36a51eeb73 Switch to full app paths
Instead of inserting the path of the apps into the Python app,
the apps are now referenced by their full import path.

This solves name clashes with external or native Python libraries.
Example: Mayan statistics app vs. Python new statistics library.

Every app reference is now prepended with 'mayan.apps'.

Existing config.yml files need to be updated manually.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-04-05 02:02:57 -04:00

104 lines
3.3 KiB
Python

from __future__ import absolute_import, unicode_literals
import logging
from django import forms
from django.utils.translation import ugettext_lazy as _
from mayan.apps.acls.models import AccessControlList
from mayan.apps.common.forms import DetailForm
from mayan.apps.django_gpg.models import Key
from mayan.apps.django_gpg.permissions import permission_key_sign
from .models import SignatureBaseModel
logger = logging.getLogger(__name__)
class DocumentVersionSignatureCreateForm(forms.Form):
key = forms.ModelChoiceField(
label=_('Key'), queryset=Key.objects.none()
)
passphrase = forms.CharField(
label=_('Passphrase'), required=False,
widget=forms.widgets.PasswordInput
)
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
logger.debug('user: %s', user)
super(
DocumentVersionSignatureCreateForm, self
).__init__(*args, **kwargs)
queryset = AccessControlList.objects.filter_by_access(
permission_key_sign, user, queryset=Key.objects.private_keys()
)
self.fields['key'].queryset = queryset
class DocumentVersionSignatureDetailForm(DetailForm):
def __init__(self, *args, **kwargs):
extra_fields = (
{'label': _('Signature is embedded?'), 'field': 'is_embedded'},
{
'label': _('Signature date'), 'field': 'date',
'widget': forms.widgets.DateInput
},
{'label': _('Signature key ID'), 'field': 'key_id'},
{
'label': _('Signature key present?'),
'field': lambda x: x.public_key_fingerprint is not None
},
)
if kwargs['instance'].public_key_fingerprint:
key = Key.objects.get(
fingerprint=kwargs['instance'].public_key_fingerprint
)
extra_fields += (
{'label': _('Signature ID'), 'field': 'signature_id'},
{
'label': _('Key fingerprint'),
'field': lambda x: key.fingerprint
},
{
'label': _('Key creation date'),
'field': lambda x: key.creation_date,
'widget': forms.widgets.DateInput
},
{
'label': _('Key expiration date'),
'field': lambda x: key.expiration_date or _('None'),
'widget': forms.widgets.DateInput
},
{
'label': _('Key length'),
'field': lambda x: key.length
},
{
'label': _('Key algorithm'),
'field': lambda x: key.algorithm
},
{
'label': _('Key user ID'),
'field': lambda x: key.user_id
},
{
'label': _('Key type'),
'field': lambda x: key.get_key_type_display()
},
)
kwargs['extra_fields'] = extra_fields
super(
DocumentVersionSignatureDetailForm, self
).__init__(*args, **kwargs)
class Meta:
fields = ()
model = SignatureBaseModel