From 3048a5c158f7585b4e753827ac3783642a2a95dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Krienb=C3=BChl?= Date: Tue, 21 Jun 2016 16:11:16 +0200 Subject: [PATCH] Builtin forms may now be deleted/edited just like custom forms Resolves #213 --- HISTORY.rst | 3 +++ onegov/town/forms/__init__.py | 6 +----- onegov/town/forms/form_definition.py | 14 -------------- onegov/town/initial_content.py | 2 +- onegov/town/layout.py | 13 +------------ onegov/town/models/__init__.py | 3 +-- onegov/town/upgrade.py | 18 +++++++++++------- onegov/town/views/form_collection.py | 2 +- onegov/town/views/form_definition.py | 3 +-- 9 files changed, 20 insertions(+), 44 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 9d979b6..745e85b 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,6 +1,9 @@ Changelog --------- +- Builtin forms may now be deleted/edited just like custom forms. + [href] + - Fixes telephone number on people records being unclickable. [href] diff --git a/onegov/town/forms/__init__.py b/onegov/town/forms/__init__.py index 875feed..82f5547 100644 --- a/onegov/town/forms/__init__.py +++ b/onegov/town/forms/__init__.py @@ -5,10 +5,7 @@ RoomAllocationEditForm ) from onegov.town.forms.event import EventForm -from onegov.town.forms.form_definition import ( - BuiltinDefinitionForm, - CustomDefinitionForm -) +from onegov.town.forms.form_definition import CustomDefinitionForm from onegov.town.forms.newsletter import NewsletterForm, NewsletterSendForm from onegov.town.forms.page import LinkForm, PageForm from onegov.town.forms.person import PersonForm @@ -27,7 +24,6 @@ from onegov.town.forms.userprofile import UserProfileForm __all__ = [ - 'BuiltinDefinitionForm', 'CustomDefinitionForm', 'DaypassAllocationForm', 'DaypassAllocationEditForm', diff --git a/onegov/town/forms/form_definition.py b/onegov/town/forms/form_definition.py index 60e9c19..24d7f2b 100644 --- a/onegov/town/forms/form_definition.py +++ b/onegov/town/forms/form_definition.py @@ -22,20 +22,6 @@ class FormDefinitionBaseForm(Form): filters=[sanitize_html, annotate_html]) -class BuiltinDefinitionForm(FormDefinitionBaseForm): - """ Form to edit builtin forms. """ - - definition = TextAreaField( - label=_("Definition"), - validators=[validators.InputRequired(), ValidFormDefinition()], - render_kw={ - 'rows': 24, - 'readonly': 'readonly', - 'data-editor': 'form' - } - ) - - class CustomDefinitionForm(FormDefinitionBaseForm): """ Same as the default form definition form, but with the definition made read-only. diff --git a/onegov/town/initial_content.py b/onegov/town/initial_content.py index e543dc6..94782f4 100644 --- a/onegov/town/initial_content.py +++ b/onegov/town/initial_content.py @@ -203,7 +203,7 @@ def add_builtin_forms(session, definitions=None): name=name, title=title, definition=definition, - type='builtin' + type='custom' ) assert form.form_class().has_required_email_field, ( diff --git a/onegov/town/layout.py b/onegov/town/layout.py index 23e1bda..60e2b38 100644 --- a/onegov/town/layout.py +++ b/onegov/town/layout.py @@ -509,18 +509,7 @@ def editbar_links(self): classes=('edit-link', ) ) - if self.form.type == 'builtin': - delete_link = DeleteLink( - text=_("Delete"), - url=self.request.link(self.form), - confirm=_("This form can't be deleted."), - extra_information=_( - "This is a builtin-form. " - "Builtin-forms can't be deleted." - ) - ) - - elif self.form.has_submissions(with_state='complete'): + if self.form.has_submissions(with_state='complete'): delete_link = DeleteLink( text=_("Delete"), url=self.request.link(self.form), diff --git a/onegov/town/models/__init__.py b/onegov/town/models/__init__.py index f58905d..3540daa 100644 --- a/onegov/town/models/__init__.py +++ b/onegov/town/models/__init__.py @@ -2,7 +2,7 @@ from onegov.town.models.clipboard import Clipboard from onegov.town.models.editor import Editor from onegov.town.models.file import File, FileCollection -from onegov.town.models.form import BuiltinFormDefinition, CustomFormDefinition +from onegov.town.models.form import CustomFormDefinition from onegov.town.models.image import Image, ImageCollection, Thumbnail from onegov.town.models.page import AtoZPages, News, Topic from onegov.town.models.page_move import PageMove @@ -22,7 +22,6 @@ __all__ = [ 'AtoZ', 'AtoZPages', - 'BuiltinFormDefinition', 'Clipboard', 'CustomFormDefinition', 'DaypassResource', diff --git a/onegov/town/upgrade.py b/onegov/town/upgrade.py index a20f261..1f17c67 100644 --- a/onegov/town/upgrade.py +++ b/onegov/town/upgrade.py @@ -4,19 +4,14 @@ """ from onegov.core.orm.abstract import sort_siblings from onegov.core.upgrade import upgrade_task -from onegov.form import FormCollection +from onegov.form import FormCollection, FormDefinition from onegov.libres import ResourceCollection from onegov.page import PageCollection from onegov.town import TownApp -from onegov.town.initial_content import add_builtin_forms, add_resources +from onegov.town.initial_content import add_resources from onegov.town.models.extensions import ContactExtension -@upgrade_task('Update builtin forms') -def update_builtin_forms(context, always_run=True): - add_builtin_forms(context.session) - - @upgrade_task('Add initial libres resources') def add_initial_libres_resources(context): if isinstance(context.app, TownApp): @@ -60,3 +55,12 @@ def change_contact_html(context): # forces a re-render of the contact html item.contact = item.contact + + +@upgrade_task('Convert builtin forms into custom forms') +def convert_builtin_forms(context): + forms = FormCollection(context.session) + + query = forms.definitions.query() + query = query.filter(FormDefinition.type == 'builtin') + query.update({FormDefinition.type: 'custom'}) diff --git a/onegov/town/views/form_collection.py b/onegov/town/views/form_collection.py index 8f00be1..ad81449 100644 --- a/onegov/town/views/form_collection.py +++ b/onegov/town/views/form_collection.py @@ -1,4 +1,4 @@ -""" Lists the builtin and custom forms. """ +""" Lists the custom forms. """ from onegov.core.security import Public from onegov.form import FormCollection diff --git a/onegov/town/views/form_definition.py b/onegov/town/views/form_definition.py index 1bd040f..62eeefc 100644 --- a/onegov/town/views/form_definition.py +++ b/onegov/town/views/form_definition.py @@ -5,7 +5,7 @@ from onegov.form import FormCollection, FormDefinition from onegov.town import _, TownApp from onegov.town.elements import Link -from onegov.town.forms import BuiltinDefinitionForm, CustomDefinitionForm +from onegov.town.forms import CustomDefinitionForm from onegov.town.layout import FormEditorLayout from onegov.town.models import CustomFormDefinition from webob import exc @@ -17,7 +17,6 @@ def get_form_class(model, request): model = CustomFormDefinition() form_classes = { - 'builtin': BuiltinDefinitionForm, 'custom': CustomDefinitionForm }