def message(): userid = authed() message = getclient().getmessage() db = getconn() touch = db.get( u"SELECT touch_notification,touch_starpost" " FROM herzog_userdata" " WHERE userid=%s", userid) if touch: touch_notification = touch.touch_notification touch_starpost = touch.touch_starpost else: touch_notification = touch_starpost = 0 notification_num = getconn().get( u"SELECT count(nid) as t FROM herzog_notification" " WHERE userid=%s AND (lastupdate > %s)" " ORDER BY lastupdate DESC" " LIMIT 6", userid, touch_notification) print notification_num, touch_notification star_num = getconn().get( u"SELECT count(herzog_topic.tid) as t FROM herzog_topic" " INNER JOIN herzog_topicship" " ON herzog_topic.tid = herzog_topicship.tid" " WHERE herzog_topicship.userid=%s AND" " herzog_topicship.flag & 8" " AND herzog_topic.lastreply > %s" " LIMIT 15", userid, touch_starpost) return '%s,%s,%s,%s' % (message['newfavs'], message['mails'], notification_num['t'], star_num['t'])
def norepeatvote(userid, tid=None, rid=None, **ps): if tid : if getconn().get( u"SELECT tid FROM herzog_topicship" " WHERE userid=%s AND tid=%s AND (flag & %s >0)", userid, tid, flag.UPVOTE) : raise HZActionError("No vote again") else : if getconn().get( u"SELECT rid FROM herzog_replyship" " WHERE userid=%s AND rid=%s AND (flag & %s >0)", userid, rid, flag.UPVOTE) : raise HZActionError('No vote again') return True
def starpost(): try: offset = int(request.args.get('offset', 0)) except: offset = 0 userid = authed() db = getconn() starpost = db.query( u"SELECT herzog_topic.tid,title" " FROM herzog_topic INNER JOIN herzog_topicship" " ON herzog_topic.tid = herzog_topicship.tid" " WHERE herzog_topicship.userid=%%s AND" " herzog_topicship.flag & 8" " ORDER BY herzog_topic.lastreply DESC" " LIMIT %s, 15" % offset, userid) # update touch time touch = db.get( u"SELECT touch_starpost FROM herzog_userdata" " WHERE userid=%s", userid) now = getnow() if touch: touch = touch.touch_starpost db.execute( u"UPDATE herzog_userdata SET touch_starpost=%s" " WHERE userid=%s", now, userid) else: db.execute( u"INSERT INTO herzog_userdata " " (userid, touch_notification, touch_starpost)" " VALUES (%s, %s, %s)", userid, now, now) return render_template('starpost.html', starpost=starpost, touch=touch)
def index(): db = getconn() topics = db.query(u"SELECT tid, owner, title, score, v, lastupdate," " lastreply, replynum, partnum, upvote, fromapp," " flag, content, boardname FROM herzog_topic" " ORDER BY score DESC LIMIT 21") if len(topics) == 21 : score = topics[-1].score del topics[20] else : score = -1 boards = getclient().allboards() # Filter the topics use a whitelist fresh = groupup(topics) # TODO : topics may be NONE # TODO : perm filter # TODO : fresh and topten topten = [ dict(title=t.title, tid=t.tid, owner=t.owner) for t in topics[:10] ] img = hzd.get('page:fresh:image') goods = hzd.geta('page:fresh:goods') ad = hzd.geto('pgae:fresh:ad') return render_template('fresh.html', fresh=fresh, img=img, boards=boards, score=score, topten=topten, goods=goods, ad=ad)
def cms_manage(): db = getconn() pages = db.query(u"SELECT pid, pagepath, pagename, lastupdate, lastuserid" " FROM herzog_cms_page") res = db.query(u"SELECT rid, resname, lastupdate, lastuserid" " FROM herzog_cms_resource") return render_template("cms_manage.html", pages=pages, res=res)
def flagup(userid, flag, tid=None, rid=None) : db = getconn() if tid : dt = db.get(u"SELECT utid FROM herzog_topicship" " WHERE userid=%s AND tid=%s", userid, tid) if dt : dt = dt.utid db.execute(u"UPDATE herzog_topicship SET flag=flag|%s" " WHERE utid=%s", flag, dt) else : dt = db.insert(u"INSERT INTO herzog_topicship" " (userid, tid, flag) VALUES" " (%s, %s, %s)", userid, tid, flag) else : dt = db.get(u"SELECT utid FROM herzog_replyship" " WHERE userid=%s AND rid=%s", userid, rid) if dt : dt = dt.utid db.execute(u"UPDATE herzog_replyship SET flag=flag|%s" " WHERE utid=%s", flag, dt) else : dt = db.insert(u"INSERT INTO herzog_replyship" " (userid, rid, flag) VALUES" " (%s, %s, %s)", userid, rid, flag) return dt
def send_at_notification(ret, *args, **kwargs): db = getconn() print ret, kwargs if not 'rid' in ret: tid = ret['tid'] title = kwargs['title'] rid = 0 else: tid = ret.get('tid') or kwargs['tid'] rid = ret['rid'] title = db.get(u"SELECT title FROM herzog_topic" " WHERE tid=%s", tid) title = title['title'] params = '%s\n%s\n%s\n%s' % (title.replace( '\n', ' '), kwargs['userid'], tid, rid) touserids = RE_AT.findall(kwargs['content'])[:5] cli = getclient() now = getnow() for touserid in touserids: userid = cli.userexists(userid=touserid) if 'userid' in userid: userid = userid['userid'] else: continue db.execute( u"INSERT INTO herzog_notification" " (userid, t, params, s, lastupdate)" " VALUES (%s, %s, %s, %s, %s)", touserid, TYPE_AT, params, tid, now)
def edit_resource(resname): userid = authed() res = getconn().get( u"SELECT * FROM herzog_cms_resource" " WHERE resname=%s", resname) res['ds'] = res['ds'] return render_template('edit_resource.html', res=res)
def notification(): try: offset = int(request.args.get('offset', 0)) except: offset = 0 userid = authed() db = getconn() notification = db.query( u"SELECT nid,t,params,lastupdate" " FROM herzog_notification" " WHERE userid=%%s" " ORDER BY lastupdate DESC" " LIMIT %d, 15" % offset, userid) # update touch touch = db.get( u"SELECT touch_notification" " FROM herzog_userdata" " WHERE userid=%s", userid) now = getnow() if touch: touch = touch.touch_notification db.execute( u"UPDATE herzog_userdata SET " " touch_notification=%s" " WHERE userid=%s", now, userid) else: db.execute( u"INSERT INTO herzog_userdata " " (userid, touch_notification, touch_starpost)" " VALUES (%s, %s, %s)", userid, now, now) return render_template('notification.html', notification=notification, touch=touch)
def send_upvote_notification(ret, userid, tid=None, rid=None, *args, **kwargs): db = getconn() if 'tid' is not None: rid = 0 title = db.get( u"SELECT title, owner FROM herzog_topic" " WHERE tid=%s", tid) touserid = title['owner'] title = title['title'] else: tid = db.get(u"SELECT tid FROM herzog_reply" " WHERE rid=%s", rid) tid = tid['tid'] title = db.get( u"SELECT title, owner FROM herzog_topic" " WHERE tid=%s", tid) touserid = title['owner'] title = title['title'] params = '%s\n%s\n%s\n%s' % (title.replace( '\n', ' '), kwargs['userid'], tid, rid) cli = getclient() touserid = cli.userexists(userid=touserid) now = getnow() if 'userid' in touserid: touserid = touserid['userid'] db.execute( u"INSERT INTO herzog_notification" " (userid, t, params, s, lastupdate)" " VALUES (%s, %s, %s, %s, %s)", touserid, TYPE_UPVOTE, params, tid, now)
def del_fs_reply(userid, rid, **ps): db = getconn() reply = db.get( u"SELECT tid, oldfilename FROM herzog_reply" " WHERE rid=%s", rid) if not reply: raise HZActionError('No such reply') if not reply.oldfilename: logger.warning( "Try delete a no oldfilename file, userid=%s, fromhost=%s, reply=%s", userid, request.remote_addr, reply) return True topic = db.get(u"SELECT boardname FROM herzog_topic" " WHERE tid=%s", reply.tid) if not topic: raise HZActionError('No such topic') r = getclient().do_del(board=topic.boardname, file=reply.oldfilename) if 'error' in r: if r['emsg'] == u"文件不存在, 删除失败": if (isowner_topic(userid, tid)): warning( "Delete a no exists file, filename=%s, userid=% [%s], fromhost=%s", topic.oldfilename, authed, request.remote_addr, topic) return True raise HZActionError(r['emsg']) return True
def update_topic(userid, tid, title, content, **ps): db = getconn() now = getnow() summary = gen_summary(content) db.execute(u"UPDATE herzog_topic SET title=%s, content=%s, lastupdate=%s," " summary=%s WHERE tid=%s", title, content, now, summary, tid) return dict()
def board(boardname): db = getconn() board = getclient().showboard(board=boardname) if 'error' in board: abort(404) userid = getuserid() if userid: topics = db.query( u"SELECT herzog_topic.tid, owner, title, score, v, lastupdate," " lastreply, replynum, partnum, upvote, fromapp, readtime," " herzog_topicship.flag, content, upvote, boardname, herzog_topicship.flag as tsflag, readtime FROM herzog_topic" " LEFT JOIN herzog_topicship" " ON herzog_topicship.tid=herzog_topic.tid AND userid=%s" " WHERE boardname=%s" " ORDER BY score DESC LIMIT 16", userid, boardname) else: topics = db.query( u"SELECT tid, owner, title, score, v, lastupdate," " lastreply, replynum, partnum, upvote, fromapp," " flag, content, upvote, boardname FROM herzog_topic" " WHERE boardname=%s ORDER BY score DESC LIMIT 16", boardname) if len(topics) == 16: score = topics[-1].score del topics[15] else: score = -1 bsetting = getbsetting(boardname) or dict() print bsetting return render_template('board.html', board=board, bsetting=bsetting, topics=topics)
def index(): db = getconn() topics = db.query(u"SELECT tid, owner, title, score, v, lastupdate," " lastreply, replynum, partnum, upvote, fromapp," " flag, content, boardname FROM herzog_topic" " ORDER BY score DESC LIMIT 21") if len(topics) == 21: score = topics[-1].score del topics[20] else: score = -1 boards = getclient().allboards() # Filter the topics use a whitelist fresh = groupup(topics) # TODO : topics may be NONE # TODO : perm filter # TODO : fresh and topten topten = [ dict(title=t.title, tid=t.tid, owner=t.owner) for t in topics[:10] ] img = hzd.get('page:fresh:image') goods = hzd.geta('page:fresh:goods') ad = hzd.geto('pgae:fresh:ad') return render_template('fresh.html', fresh=fresh, img=img, boards=boards, score=score, topten=topten, goods=goods, ad=ad)
def board(boardname): db = getconn() board = getclient().showboard(board=boardname) if 'error' in board : abort(404) userid = getuserid() if userid : topics = db.query(u"SELECT herzog_topic.tid, owner, title, score, v, lastupdate," " lastreply, replynum, partnum, upvote, fromapp, readtime," " herzog_topicship.flag, content, upvote, boardname, herzog_topicship.flag as tsflag, readtime FROM herzog_topic" " LEFT JOIN herzog_topicship" " ON herzog_topicship.tid=herzog_topic.tid AND userid=%s" " WHERE boardname=%s" " ORDER BY score DESC LIMIT 16", userid, boardname) else : topics = db.query(u"SELECT tid, owner, title, score, v, lastupdate," " lastreply, replynum, partnum, upvote, fromapp," " flag, content, upvote, boardname FROM herzog_topic" " WHERE boardname=%s ORDER BY score DESC LIMIT 16", boardname) if len(topics) == 16 : score = topics[-1].score del topics[15] else : score = -1 bsetting = getbsetting(boardname) or dict() print bsetting return render_template('board.html', board=board, bsetting=bsetting, topics=topics)
def update_reply(userid, rid, content, **ps): db = getconn() now = getnow() db.execute( u"UPDATE herzog_reply SET content=%s, lastupdate=%s" " WHERE rid=%s", content, now, rid) return dict()
def update_topic(userid, tid, title, content, **ps): db = getconn() now = getnow() summary = gen_summary(content) db.execute( u"UPDATE herzog_topic SET title=%s, content=%s, lastupdate=%s," " summary=%s WHERE tid=%s", title, content, now, summary, tid) return dict()
def ajax_get_reply(): form = getfields(_require=('rid',), _form=request.args) db = getconn() reply = db.get(u"SELECT rid, brid, replyid, owner, lastupdate," " fromapp, flag, content FROM herzog_reply" " WHERE rid=%s", form['rid']) reply['html_content'] = postHtml(reply['content']) reply['owner_avatar'] = url_for_avatar(reply['owner']) return json_success(reply=reply)
def get_all_bsetting(): bsetting = getconn().get(u"SELECT ds FROM herzog_cms_resource" " WHERE resname='site::bsetting'") if not bsetting: return None bsetting = json.loads(bsetting['ds']) bs = {} for it in bsetting['boards']['list']: bs[it['info']['title']] = it return bs
def page_preview(): form = getfields(_require=('pagepath', 'pagename', 'ds')) db = getconn() pagedata = db.get(u"SELECT tpl FROM herzog_cms_page" " WHERE pagepath=%s", form['pagepath']) if not pagedata: abort(404) return render_template('cms/%s.html' % pagedata.tpl, pagename=form['pagename'], **ds)
def page_preview() : form = getfields(_require=('pagepath', 'pagename', 'ds')) db = getconn() pagedata = db.get(u"SELECT tpl FROM herzog_cms_page" " WHERE pagepath=%s", form['pagepath']) if not pagedata : abort(404) return render_template('cms/%s.html' % pagedata.tpl, pagename=form['pagename'], **ds)
def getbsetting(boardname): bsetting = getconn().get(u"SELECT ds FROM herzog_cms_resource" " WHERE resname='site::bsetting'") if not bsetting: return None bsetting = json.loads(bsetting['ds']) for it in bsetting['boards']['list']: if it['info']['title'] == boardname: return it return None
def get_all_bsetting() : bsetting = getconn().get(u"SELECT ds FROM herzog_cms_resource" " WHERE resname='site::bsetting'") if not bsetting : return None bsetting = json.loads(bsetting['ds']) bs = {} for it in bsetting['boards']['list'] : bs[it['info']['title']] = it return bs
def getbsetting(boardname) : bsetting = getconn().get(u"SELECT ds FROM herzog_cms_resource" " WHERE resname='site::bsetting'") if not bsetting : return None bsetting = json.loads(bsetting['ds']) for it in bsetting['boards']['list'] : if it['info']['title'] == boardname : return it return None
def unvote(userid, tid=None, rid=None, **ps): if flagdown(userid, flag.UPVOTE, tid=tid, rid=rid) is False : raise HZActionError("Have not vote it") db = getconn() if tid : db.execute(u"UPDATE herzog_topic SET upvote=upvote-1" " WHERE tid=%s", tid) else : db.execute(u"UPDATE herzog_reply SET upvote=upvote-1" " WHERE rid=%s", rid) return dict()
def upvote(userid, tid=None, rid=None, **ps): db = getconn() if tid : db.execute(u"UPDATE herzog_topic SET upvote=upvote+1" " WHERE tid=%s", tid) dt = flagup(userid, flag.UPVOTE, tid=tid) else : db.execute(u"UPDATE herzog_reply SET upvote=upvote+1" " WHERE rid=%s", rid) dt = flagup(userid, flag.UPVOTE, rid=rid) return dict(dt=dt)
def flag_reply(ret, userid, tid, *s, **ps): db = getconn() now = getnow() if db.get(u"SELECT utid FROM herzog_topicship" " WHERE userid=%s AND tid=%s AND (flag & %s >0)", userid, tid, flag.SPEAK) : db.execute(u"UPDATE herzog_topic SET replynum=replynum+1" " , lastreply=%s WHERE tid=%s", tid, now) else : db.execute(u"UPDATE herzog_topic SET replynum=replynum+1" " , partnum=partnum+1, lastreply=%s WHERE tid=%s", tid, now) flagup(userid, flag.REPLY, tid=tid)
def update2fs(userid, tid, title, content, **ps): db = getconn() topic = db.get(u"SELECT boardname, oldfilename FROM herzog_topic" " WHERE tid=%s", tid) if not topic : raise HZActionError('No such topic') r = getclient().do_edit(board=topic.boardname, title=title.encode('utf8'), text=content.encode('utf8'), file=topic.oldfilename) if r.has_key('error') : raise HZActionError(r['emsg']) return True
def flag_comment(ret, userid, replyid, *s, **ps): db = getconn() now = getnow() if db.get(u"SELECT utid FROM herzog_topicship" " WHERE userid=%s AND tid=%s AND (flag & %s >0)", userid, ret['tid'], flag.SPEAK) : db.execute(u"UPDATE herzog_topic SET lastcomment=%s" " WHERE tid=%s", now, ret['tid']) else : db.execute(u"UPDATE herzog_topic SET partnum=partnum+1" " , lastreply=%s WHERE tid=%s", now, ret['tid']) flagup(userid, flag.COMMENT, tid=ret['tid']) flagup(userid, flag.COMMENT, rid=replyid)
def query_postid(b, f) : db = getconn() topic = db.get(u"SELECT tid FROM herzog_topic" " WHERE boardname=%s AND oldfilename=%s LIMIT 1", b, f) if topic : return topic reply = db.get(u"SELECT rid FROM herzog_reply LEFT JOIN herzog_topic" " ON herzog_reply.tid = herzog_topic.tid" " WHERE herzog_reply.oldfilename=%s AND boardname=%s LIMIT 1", f, b) if reply : return reply return None
def page(pagepath): db = getconn() pagedata = db.get(u'SELECT pagename, tpl, ds FROM herzog_cms_page' ' INNER JOIN herzog_cms_resource' ' ON herzog_cms_page.resname = ' ' herzog_cms_resource.rescname' ' WHERE pagepath=%s', pagepath) if not pagedata : abort(404) if '.' in pagedata.tpl : abort(404) return render_template('cms/%s.html' % pagedata.tpl, pagename=pagedata.pagename, **json.loads(pagedata.ds))
def send_reply_notification(ret, userid, tid, *args, **kwargs): print 1 db = getconn() touserid = db.get( u"SELECT owner, title FROM herzog_topic" " WHERE tid=%s", tid) params = '%s\n%s\n%s\n%s' % (touserid.title.replace( '\n', ' '), userid, tid, ret['rid']) now = getnow() db.execute( u"INSERT INTO herzog_notification" " (userid, t, params, s, lastupdate)" " VALUES (%s, %s, %s, %s, %s)", touserid.owner, TYPE_REPLY, params, tid, now)
def page(pagepath): db = getconn() pagedata = db.get( u'SELECT pagename, tpl, ds FROM herzog_cms_page' ' INNER JOIN herzog_cms_resource' ' ON herzog_cms_page.resname = ' ' herzog_cms_resource.rescname' ' WHERE pagepath=%s', pagepath) if not pagedata: abort(404) if '.' in pagedata.tpl: abort(404) return render_template('cms/%s.html' % pagedata.tpl, pagename=pagedata.pagename, **json.loads(pagedata.ds))
def topic(userid, boardname, title, content, fromaddr, time=None, summary=None, fromapp='', **ps) : if time is None : time = dt.now() if summary is None : summary = gen_summary(content) if title > 36 : title = title[:36] tid = getconn().execute( u" INSERT INTO herzog_topic" " (boardname, owner, title, lastupdate, lastreply," " lastcomment, fromaddr, summary, content)" " VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)", boardname, userid, title, time, time, time, fromaddr, summary, content) return dict(tid=tid)
def topic(tid): db = getconn() userid = authed() if userid : topic = db.get(u"SELECT herzog_topic.tid as tid, owner, title, score, v," " lastupdate, lastreply, replynum, partnum, upvote," " fromapp, herzog_topic.flag, content, upvote, boardname," " herzog_topicship.flag as tsflag, readtime FROM herzog_topic" " LEFT JOIN herzog_topicship" " ON herzog_topicship.tid=herzog_topic.tid" " AND herzog_topicship.userid=%s" " WHERE herzog_topicship.tid=%s", userid, tid) else : topic = db.get(u"SELECT tid, owner, title, score, v, lastupdate," " lastreply, replynum, partnum, upvote, fromapp," " flag, content, upvote, boardname FROM herzog_topic" " WHERE tid=%s", tid) if not topic : abort(404) if userid : replys0 = db.query(u"SELECT herzog_reply.rid, brid, replyid, owner," " lastupdate, fromapp, herzog_reply.flag, content," " upvote, herzog_replyship.flag as rsflag" " FROM herzog_reply LEFT JOIN herzog_replyship" " ON herzog_replyship.rid=herzog_reply.rid" " AND herzog_replyship.userid=%s" " WHERE tid=%s ORDER BY brid LIMIT 100", userid, tid) else : replys0 = db.query(u"SELECT herzog_reply.rid, brid, replyid, owner," " lastupdate, fromapp, flag, content, upvote" " herzog_replyship.flag as rsflag" " FROM herzog_reply" " WHERE tid=%s ORDER BY brid LIMIT 100", userid, tid) lastbranch = None lastcomments = None replys = [] for r in replys0 : if lastbranch is None or r.brid != lastbranch.brid : lastcomments = r['comments'] = [] lastbranch = r replys.append(r) else : lastcomments.append(r) topic['boarddesc'] = getboards()[topic['boardname']]['boarddesc'] return render_template('topic.html', topic=topic, replys=replys)
def reply(userid, tid, content, fromaddr, time=None, fromapp='', *ps) : replyid = brid = 0 if time is None : time = dt.now() db = getconn() rid = db.execute(u"INSERT INTO herzog_reply" " (tid, brid, replyid, owner, lastupdate," " fromaddr, fromapp, content) VALUES" " (%s, %s, %s, %s, %s, %s, %s, %s)", tid, brid, replyid, userid, time, fromaddr, fromapp, content) db.execute(u"UPDATE herzog_reply SET brid=%s WHERE rid=%s", rid, rid) db.execute(u"UPDATE herzog_topic SET lastreply=%s WHERE tid=%s", time, tid) return dict(rid=rid, tid=tid)
def update2fs_reply(userid, rid, content, **ps) : db = getconn() reply = db.get(u"SELECT tid, oldfilename FROM herzog_reply" " WHERE rid=%s", rid) if not reply : raise HZActionError('No such reply') topic = db.get(u"SELECT boardname FROM herzog_topic" " WHERE tid=%s", reply.tid) if not topic : raise HZActionError("No such topic") header, _, quote, tail = getfspost(topic.boardname, reply.oldfilename) r = getclient().do_edit(board=topic.boardname, title=header['title'].decode('gbk').encode('utf8'), text=content.encode('utf8'), file=reply.oldfilename) if r.has_key('error') : raise HZActionError(r['emsg']) return True
def comment(userid, replyid, content, fromaddr, time=None, fromapp='', *ps) : if time is None : time = dt.now() db = getconn() reply = db.get("SELECT tid, brid FROM herzog_reply WHERE rid=%s", replyid) if not reply : raise HZActionError("No such topic") rid = db.execute(u"INSERT INTO herzog_reply" " (tid, brid, replyid, owner, lastupdate," " fromaddr, content) VALUES" " (%s, %s, %s, %s, %s, %s, %s)", reply.tid, reply.brid, replyid, userid, time, fromaddr, content) db.execute(u"UPDATE herzog_topic SET lastcomment=%s WHERE tid=%s", time, reply.tid) return dict(rid=rid, tid=reply.tid)
def update_resource(): userid = authed() form = getfields(_require=('resname', 'ds')) try: json.loads(form['ds']) except ValueError : return json_error(3, "Wrong json value") db = getconn() rid = db.get(u"SELECT rid FROM herzog_cms_resource" " WHERE resname=%s", form['resname']) if rid : db.execute(u"UPDATE herzog_cms_resource SET" " resname=%s, ds=%s, lastuserid=%s" " WHERE rid=%s", form['resname'], form['ds'], userid, rid.rid) else : db.execute(u"INSERT INTO herzog_cms_resource" " (resname, ds, lastuserid) VALUES" " (%s, %s, %s)", form['resname'], form['ds'], userid) return json_success()
def flagdown(userid, flag, tid=None, rid=None) : db = getconn() if tid : dt = db.get(u"SELECT utid FROM herzog_topicship" " WHERE userid=%s AND tid=%s AND (flag & %s >0)", userid, tid, flag) if dt is None : return False dt = dt.utid db.execute(u"UPDATE herzog_topicship SET flag=flag^%s" " WHERE utid=%s", flag, dt) else : dt = db.get(u"SELECT utid FROM herzog_replyship" " WHERE userid=%s AND rid=%s AND (flag & %s >0)", userid, rid, flag) if not dt : return False dt = dt.utid db.execute(u"UPDATE herzog_replyship SET flag=flag^%s" " WHERE utid=%s", flag, dt) return dt
def update_page(): userid = authed() form = getfields(_require=('pagepath', 'pagename', 'tpl', 'rid')) db = getconn() pid = db.query(u"SELECT pid FROM herzog_cms_page" " WHERE pagepath=%s", form['pagepath']) if pid : if form['pagename'].strip() : db.execute(u"UPDATE herzog_cms_page SET" " pagename=%s, pagepath=%s, tpl=%s, rid=%s, lastuserid=%s", " WHERE pid=%s", form['pagename'], form['pagepath'], form['tpl'], form['rid'], userid, pid.pid) else : db.execute(u"DELETE FROM herzog_cms_page" " WHERE pid=%s", pid.pid) else : rid = db.execute(u"INSERT INTO herzog_cms_page" " pagename, pagepath, tpl, rid, lastuserid VALUES" " (%s, %s, %s, %s, %s)", form['pagename'], form['pagepath'], form['tpl'], form['rid'], userid) return json_success()
def topic(tid): db = getconn() topic = db.get(u"SELECT tid, owner, title, score, v, lastupdate," " lastreply, replynum, partnum, upvote, fromapp," " flag, content FROM herzog_topic WHERE tid=%s", tid) if not topic : abort(404) replys0 = db.query(u"SELECT rid, brid, replyid, owner, lastupdate," " fromapp, flag, content FROM herzog_reply" " WHERE tid=%s ORDER BY brid LIMIT 100", tid) lastbranch = None lastcomments = None replys = [] for r in replys0 : if lastbranch is None or r.brid != lastbranch.brid : lastcomments = r['comments'] = [] lastbranch = r replys.append(r) else : lastcomments.append(r) return render_template('topic.html', topic=topic, replys=replys)
def edit_resource(resname): userid = authed() res = getconn().get(u"SELECT * FROM herzog_cms_resource" " WHERE resname=%s", resname) res['ds'] = res['ds'] return render_template('edit_resource.html', res=res)
def comment_reply_exists(replyid, **ps) : reply = getconn().get(u"SELECT rid FROM herzog_reply WHERE rid=%s", replyid) if not reply : raise HZActionError("No such reply") return True
def setv(userid, tid, v, **ps): db = getconn() db.execute(u"UPDATE herzog_topic SET v=%s WHERE tid=%s", v, tid) return dict()
def update_reply(userid, rid, content, **ps): db = getconn() now = getnow() db.execute(u"UPDATE herzog_reply SET content=%s, lastupdate=%s" " WHERE rid=%s", content, now, rid) return dict()