Passed
Push — main ( 38d8f7...b77d07 )
by Jochen
04:19
created

byceps.blueprints.admin.snippet.forms   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Test Coverage

Coverage 96.15%

Importance

Changes 0
Metric Value
eloc 31
dl 0
loc 55
ccs 25
cts 26
cp 0.9615
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A MountpointCreateForm.validate_url_path() 0 5 2
A MountpointCreateForm.set_site_id_choices() 0 4 2
1
"""
2
byceps.blueprints.admin.snippet.forms
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
:Copyright: 2006-2021 Jochen Kupperschmidt
6
:License: Revised BSD (see `LICENSE` file for details)
7
"""
8
9 1
from __future__ import annotations
10
11 1
from flask_babel import lazy_gettext
12 1
from wtforms import SelectField, StringField, TextAreaField
13 1
from wtforms.validators import InputRequired, ValidationError
14
15 1
from ....services.site.transfer.models import Site
16 1
from ....util.l10n import LocalizedForm
17
18
19 1
class MountpointCreateForm(LocalizedForm):
20 1
    site_id = SelectField(lazy_gettext('Site'), [InputRequired()])
21 1
    endpoint_suffix = StringField(lazy_gettext('Identifier'), [InputRequired()])
22 1
    url_path = StringField(lazy_gettext('URL path'), [InputRequired()])
23
24 1
    def set_site_id_choices(self, sites: set[Site]) -> None:
25 1
        self.site_id.choices = [
26
            (site.id, site.title)
27
            for site in sorted(sites, key=lambda site: site.title)
28
        ]
29
30 1
    @staticmethod
31
    def validate_url_path(form, field):
32 1
        if not field.data.startswith('/'):
33
            raise ValidationError(
34
                lazy_gettext('URL path has to start with a slash.')
35
            )
36
37
38 1
class FragmentCreateForm(LocalizedForm):
39 1
    name = StringField(lazy_gettext('Name'), [InputRequired()])
40 1
    body = TextAreaField(lazy_gettext('Text'), [InputRequired()])
41
42
43 1
class FragmentUpdateForm(FragmentCreateForm):
44 1
    pass
45
46
47 1
class DocumentCreateForm(FragmentCreateForm):
48 1
    title = StringField(lazy_gettext('Title'), [InputRequired()])
49 1
    head = TextAreaField(lazy_gettext('Page header'))
50 1
    image_url_path = StringField(lazy_gettext('Image URL path'))
51
52
53 1
class DocumentUpdateForm(DocumentCreateForm):
54
    pass
55