Example #1
0
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)
Example #2
0
    def on_model_change(self, form, model, is_created):
        # check if exists

        existent = db.index.find_one({
            'title': model['title'],
            'category': model['category']
        })

        duplicate_error_message = u'{0} "{1}/{2}" {3}'.format(
            _('duplicate error:'), model['category'], model['title'],
            _('already exists.'))

        if (is_created and existent) or (existent
                                         and existent['_id'] != model['_id']):
            raise ValidationError(duplicate_error_message)

        if is_created:
            model['date'] = dt.datetime.now()
            model['slug'] = slugify(model['title'])
        else:
            model['modified'] = dt.datetime.now()

        get_format(model).before_save(form, model, is_created)
Example #3
0
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 ?
    )
Example #4
0
    def action_clone_item(self, ids):
        if len(ids) > 1:
            flash(
                _("You can select only one item for this action"),
                'error'
            )
            return

        instance = self.get_instance(ids[0])
        new = instance.from_json(instance.to_json())
        new.id = None
        new.published = False
        new.last_updated_by = None  # User.objects.get(id=current_user.id)
        new.updated_at = datetime.datetime.now()
        new.slug = "{0}-{1}".format(new.slug, random.getrandbits(32))
        new.save()
        return redirect(url_for('.edit_view', id=new.id))
Example #5
0
def validate_category(form, field):
    if field.data is not None:
        items = field.data.split(',')
        if len(items) > 1:
            return _(u'You can select only one category')
Example #6
0
class MarkdownEditForm(BaseEditForm):
    content = fields.TextAreaField(_('Markdown Content'))
Example #7
0
class HTMLEditForm(BaseEditForm):
    content = fields.TextAreaField(_('HTML Content'))
Example #8
0
class PlainEditForm(BaseEditForm):
    content = fields.TextAreaField(_('Plain Content'))
Example #9
0
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'
                                    })
Example #10
0
def configure(app, db, admin):
    admin.register(db.index,
                   ContentView,
                   name=_('Content'),
                   endpoint='contentview')
    return 'content'