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
|
|
|
|