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