def GET(self, id): entry = self.getEntry(id) if entry: f = entryForm() entry.tagList = ",".join([i.name for i in entry.tags]) f.title.value = entry.title f.slug.value = entry.slug f.content.value = entry.content d['entry'] = entry d['f'] = f return render.entry_edit(**d)
def POST(self, id): f = entryForm() entry = self.getEntry(id) i = web.input(tags=None) if f.validates(): if i.tags is not None: newTags = set([i.strip() for i in i.tags.split(',')]) originalTags = set([i.name.strip() for i in entry.tags]) tagsAdd = list(newTags - originalTags) tagsDel = list(originalTags - newTags) #添加tag if tagsAdd: for tag in tagsAdd: t = web.ctx.orm.query(Tag).filter( 'LOWER(name)=:name').params(name=tag).first() if t: entry.tags.append(t) else: entry.tags.append(Tag(tag)) #删除tag if tagsDel: for tag in tagsDel: t = web.ctx.orm.query(Tag).filter( 'LOWER(name)=:name').params(name=tag).first() if t: if t.entry_num == 1: web.ctx.orm.delete(t) else: t.entry_num = t.entry_num - 1 entry.tags.remove(t) entry.title = f.title.value entry.slug = f.slug.value entry.content = f.content.value entry.modified_time = datetime.now() return web.seeother('/entry/list/') else: d['f'] = f d['entry'] = entry return render.entry_edit(**d)
def POST(self, id): f = entryForm() entry = self.getEntry(id) i = web.input(tags=None) if f.validates(): if i.tags is not None: newTags = set([i.strip() for i in i.tags.split(',')]) originalTags = set([i.name.strip() for i in entry.tags]) tagsAdd = list(newTags - originalTags) tagsDel = list(originalTags - newTags) #添加tag if tagsAdd: for tag in tagsAdd: t = web.ctx.orm.query(Tag).filter('LOWER(name)=:name').params(name=tag).first() if t: entry.tags.append(t) else: entry.tags.append(Tag(tag)) #删除tag if tagsDel: for tag in tagsDel: t = web.ctx.orm.query(Tag).filter('LOWER(name)=:name').params(name=tag).first() if t: if t.entry_num == 1: web.ctx.orm.delete(t) else: t.entry_num = t.entry_num - 1 entry.tags.remove(t) entry.title = f.title.value entry.slug = f.slug.value entry.content = f.content.value entry.modified_time = datetime.now() return web.seeother('/entry/list/') else: d['f'] = f d['entry'] = entry return render.entry_edit(**d)