class BlockItemForm(Form): item = fields.Select2TagsField( 'Item', [ validators.required(), validators.CallableValidator(validate_block_item) ], save_as_list=False, render_kw=get_block_item_kw, description=('Enter absolute URL `http://..` or `/foo/bar.html` ' 'or select existing content.')) name = fields.StringField('Name', description='optional') order = fields.IntegerField('Order', default=0) item_type = fields.SmartSelect2Field( 'Type', [validators.required()], default='link', choices=lambda: [ item for item in app.config.get('BLOCK_ITEM_TYPES', [('link', 'Link')]) ]) custom_vars = InlineFieldList(InlineFormField(CustomVariablesForm), label='Custom Variables') index_id = fields.HiddenField('index_id') category_id = fields.HiddenField('category_id') tag_id = fields.HiddenField('tag_id') author_id = fields.HiddenField('author_id') url_id = fields.HiddenField('url_id') content_type = fields.HiddenField('content_type', default='block_item')
class CustomVariablesForm(Form): key = fields.StringField('Key', [validators.required()], description='lower_snake_case') value = fields.StringField( 'Value', [validators.required()], description=('Optionally define format using @int,@float,@bool,@json ' 'ex:`@float 42.1` or `@int 42` or `@bool false` ' 'or `@json ["item1", "item2"]`'))
class CreateForm(BaseForm): """Default create form where content format is chosen""" content_type = fields.SelectField(_('Type'), [validators.required()], choices=[('article', _('Article')), ('page', _('Page'))]) content_format = fields.SmartSelect2Field( _('Format'), [validators.required()], choices=get_content_format_choices)
class CreateForm(BaseForm): """Default create form where content format is chosen""" content_type = fields.SelectField('Type', [validators.required()], choices=[('article', 'Article'), ('page', 'Page')]) content_format = fields.SmartSelect2Field( 'Format', [validators.required()], choices=get_content_format_choices, # TODO: remove thsi `allow_blank` once select3 submit on enter is fix allow_blank=True)
class BaseEditForm(BaseForm): """Edit form with all missing fields except `content`""" # content_type = fields.PassiveStringField( # 'Type', # render_kw=READ_ONLY # ) # content_format = fields.PassiveStringField( # 'Format', # render_kw=READ_ONLY # ) tags = fields.Select2TagsField('Tags', save_as_list=True, render_kw=get_tags_kw) date = fields.DateTimeField('Date', [validators.required()], default=dt.datetime.now) modified = fields.HiddenField('Modified') slug = fields.StringField('Slug') # TODO: validate slug collision language = fields.SmartSelect2Field( 'Language', choices=lambda: [(lng, lng) for lng in current_app.config.get( 'BABEL_LANGUAGES', ['en'])], default=get_default_language) # translations = fields.HiddenField('Translations') # todo: ^ create action 'add translation' published = fields.BooleanField('Status', render_kw={ 'data-toggle': "toggle", 'data-on': "Published", 'data-off': "Draft", "data-onstyle": 'success' })
class BaseEditForm(BaseForm): """Edit form with all missing fields except `content`""" content_type = fields.PassiveStringField(_('Type'), render_kw=READ_ONLY) content_format = fields.PassiveStringField(_('Format'), render_kw=READ_ONLY) tags = fields.Select2TagsField(_('Tags'), save_as_list=True) # todo: ^ provide settings.default_tags + db_query date = fields.DateTimeField(_('Date'), [validators.required()], default=dt.datetime.now) # todo: ^default should be now modified = fields.HiddenField(_('Modified')) # todo: ^populate on save slug = fields.StringField(_('Slug')) # todo: create based on category / title language = fields.SmartSelect2Field( _('Language'), choices=lambda: [(lng, lng) for lng in current_app.config.get( 'BABEL_LANGUAGES', ['en'])]) translations = fields.HiddenField(_('Translations')) # todo: ^ create action 'add translation' published = fields.BooleanField(_('Status'), render_kw={ 'data-toggle': "toggle", 'data-on': _("Published"), 'data-off': _("Draft"), "data-onstyle": 'success' })
class BaseForm(Form): title = fields.StringField( 'Title', [validators.required()], description='TIP: `My Title` turns to`my-title.html` url') summary = fields.TextAreaField('Summary') category = fields.Select2TagsField( 'Category', [validators.CallableValidator(validate_category)], save_as_list=False, render_kw=get_category_kw, default=get_default_category, description=('TIP: Leave blank and url will be `/my-title.html`<br>' '`foo` url will be `/foo/my-title.html` <br>' '`foo/bar` url will be `/foo/bar/my-title.html` <br>')) authors = fields.Select2TagsField('Authors', [validators.required()], save_as_list=True, render_kw=get_authors_kw, default=get_default_author)
class UserForm(Form): username = fields.StringField( 'Username', [validators.required()], description='used as login' ) fullname = fields.StringField( 'Full Name', [validators.required()], description='shows in author page' ) email = fields.StringField('Email') password = fields.PasswordField( 'Password', description=( "For new users provide a password. <br>" "For existing users provide for change. <br>" "or leave blank to keep existing password. <br>" ) )
class CreateForm(BaseForm): """Default create form where content format is chosen""" # TODO: Make content_type an optional field by ASK_CONTENT_TYPE config # content_type = fields.SelectField( # 'Type', # [validators.required()], # choices=[('article', 'Article'), ('page', 'Page')] # ) content_format = fields.SmartSelect2Field( 'Format', [validators.required()], choices=get_content_format_choices, # TODO: remove this `allow_blank` once select2 submit on enter is fix allow_blank=True)
class BaseForm(Form): title = fields.StringField(_('Title'), [validators.required()]) # todo: validade existing category/title summary = fields.TextAreaField(_('Summary')) category = fields.Select2TagsField( _('Category'), [validators.CallableValidator(validate_category)], save_as_list=False, render_kw={'data-tags': '["hello", "world"]'}, # todo: ^ settings.default_categories + db_query default='general' # todo: default should come from settings ) authors = fields.Select2TagsField( _('Authors'), [validators.required()], save_as_list=True, render_kw={'data-tags': '["Bruno Rocha", "Karla Magueta"]'}, # todo: settings.default_authors + current + db_query default=['Bruno Rocha'] # todo: default should be current user if auth else O.S user else ? )
class BaseEditForm(BaseForm): """Edit form with all missing fields except `content`""" # content_type = fields.PassiveStringField( # 'Type', # render_kw=READ_ONLY # ) # content_format = fields.PassiveStringField( # 'Format', # render_kw=READ_ONLY # ) tags = fields.Select2TagsField('Tags', save_as_list=True, render_kw=get_tags_kw) date = fields.DateTimeField('Date', [validators.required()], default=dt.datetime.now) modified = fields.HiddenField('Modified') slug = fields.StringField('Slug') language = fields.SmartSelect2Field( 'Language', choices=lambda: [(lng, lng) for lng in app.config.get('BABEL_LANGUAGES', ['en'])], default=get_default_language) # translations = fields.HiddenField('Translations') # todo: ^ create action 'add translation' published = fields.BooleanField('Status', render_kw={ 'data-toggle': "toggle", 'data-on': "Published", 'data-off': "Draft", "data-onstyle": 'success' }) comments = fields.BooleanField('Comments', default=True, render_kw={ 'data-toggle': "toggle", 'data-on': "Enabled", 'data-off': "Disabled", "data-onstyle": 'success' }) # to be used only for Block type block_items = InlineFieldList(InlineFormField(BlockItemForm), label='Items') custom_vars = InlineFieldList(InlineFormField(CustomVariablesForm), label='Custom Variables')