def validate_slug(self, field): if len(field.data) > 50: raise ValidationError, _("Slug must be less than 50 characters") slug = slugify(field.data) if field.data else slugify(self.title.data)[:50] posts = Post.query.filter_by(slug=slug) if self.obj: posts = posts.filter(db.not_(Post.id == self.obj.id)) if posts.count(): error = _("This slug is taken") if field.data else _("Slug is required") raise ValidationError, error
def _set_tags(self, tags): self._tags = tags if self.id: # ensure existing tag references are removed d = db.delete(post_tags, post_tags.c.post_id==self.id) db.engine.execute(d) for tag in set(self.taglist): slug = slugify(tag) tag_obj = Tag.query.filter(Tag.slug==slug).first() if tag_obj is None: tag_obj = Tag(name=tag, slug=slug) db.session.add(tag_obj) tag_obj.posts.append(self)
def _set_name(self, name): self._name = name.lower().strip() self.slug = slugify(name)
def linked_taglist(self): return [(tag, route.url_for('tag', slugify(tag))) \ for tag in self.taglist]
def _set_slug(self, slug): if slug: self._slug = slugify(slug)
def _set_title(self, title): self._title = title.lower().strip() if self.slug is None: self.slug = slugify(title)[:50]