summaryrefslogtreecommitdiff
path: root/postgresqleu/digisign/backendforms.py
blob: 670a4be0f89d3c70feb383d7ea9bdff0e2f3c130 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from django import forms

from postgresqleu.util.backendforms import BackendForm, BackendBeforeNewForm
from postgresqleu.util.forms import SelectSetValueField

from postgresqleu.digisign.models import DigisignProvider
from postgresqleu.digisign.util import digisign_provider_choices


class BackendDigisignProviderNewForm(BackendBeforeNewForm):
    helplink = 'digisign'
    classname = forms.ChoiceField(choices=digisign_provider_choices(), label='Implementation class')

    def get_newform_data(self):
        return self.cleaned_data['classname']


class BackendProviderForm(BackendForm):
    list_fields = ['name', 'displayname', 'active', 'classname_short']
    helplink = 'digisign'
    form_before_new = BackendDigisignProviderNewForm
    verbose_field_names = {
        'classname_short': 'Implementation',
    }
    queryset_extra_fields = {
        'classname_short': r"substring(classname, '[^\.]+$')",
    }
    extrabuttons = [
        ('View log', 'log/'),
    ]

    config_fields = []
    config_fieldsets = []
    config_readonly = []

    class Meta:
        model = DigisignProvider
        fields = ['name', 'displayname', 'active', 'classname']

    @property
    def fieldsets(self):
        fs = [
            {'id': 'common', 'legend': 'Common', 'fields': ['name', 'displayname', 'active', 'classname'], }
        ] + self.config_fieldsets

        return fs

    @property
    def readonly_fields(self):
        return ['classname', ] + self.config_readonly

    @property
    def exclude_fields_from_validation(self):
        return self.config_readonly

    @property
    def json_form_fields(self):
        return {
            'config': self.config_fields,
        }

    def fix_fields(self):
        if self.newformdata:
            self.instance.classname = self.newformdata
            self.initial['classname'] = self.newformdata