Exemple #1
0
    def create_tag(self):
        schema = TagAdminSchema()
        schema = schema.bind(request=self.request)
        form = HieroForm(self.request, schema)

        if self.request.method == 'GET':
            if isinstance(self.request.context, RootFactory):
                return dict(form=form)
            else:
                return dict(
                    form=form,
                    appstruct = self.request.context.__json__(self.request)
                )
        else:
            try:
                controls = self.request.POST.items()
                captured = form.validate(controls)
            except deform.ValidationFailure, e:
                return dict(form=e, errors=e.error.children)


            if isinstance(self.request.context, RootFactory):
                tag = self.Tag()
            else:
                tag = self.request.context

            tag.title = captured['title']

            self.session.add(tag)

            self.request.session.flash(_(u'The tag was created'), 'success')

            return HTTPFound(
                location=self.request.route_url('hiero_admin_tag_index')
            )
Exemple #2
0
    def create_entry(self):
        schema = EntryAdminSchema()
        schema = schema.bind(request=self.request)
        form = HieroForm(self.request, schema)

        if self.request.method == 'GET':
            if isinstance(self.request.context, RootFactory):
                return dict(form=form)
            else:
                appstruct = self.request.context.__json__(self.request,
                    convert_date=False)

                appstruct['tags'] = [str(t.id) for t in appstruct['tags']]

                return dict(
                    form=form,
                    appstruct=appstruct
                )
        else:
            try:
                controls = self.request.POST.items()
                captured = form.validate(controls)
            except deform.ValidationFailure, e:
                return dict(form=e, errors=e.error.children)


            if isinstance(self.request.context, RootFactory):
                entry = self.Entry()
            else:
                entry = self.request.context

            entry.title = captured['title']
            entry.owner_id = captured['owner']
            entry.content = captured['content']
            entry.markup = captured['markup']

            tags = self.session.query(self.Tag).all()

            saved_tags = []

            for tag in tags:
                if captured['tags']:
                    if str(tag.id) in captured['tags']:
                        saved_tags.append(tag)

            entry.tags = saved_tags

            formatter = get_formatter(captured['markup'])

            if formatter:
                entry.html_content = formatter(entry.content).get_html()
            else:
                entry.html_content = entry.content

            entry.category_id = captured['category']
            entry.series_id = captured['series']
            entry.is_featured = captured['is_featured']
            entry.is_published = captured['is_published']
            entry.enable_comments = captured['enable_comments']
            published_on = captured['published_on']
            entry.published_on = published_on.replace(tzinfo=None)


            if captured['slug']:
                entry.slug = captured['slug']

            self.session.add(entry)

            self.session.flush()

            self.request.session.flash(_(u'The entry was created'), 'success')

            return HTTPFound(
                location=self.request.route_url('hiero_admin_entry_index')
            )