Skip to content

Commit

Permalink
modified the interface in telnet
Browse files Browse the repository at this point in the history
  • Loading branch information
Norman Mo authored and Norman Mo committed Oct 5, 2012
1 parent bdf39f0 commit de8434c
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 83 deletions.
117 changes: 75 additions & 42 deletions model/Model.py
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,16 @@ class Post(Model):
_index_table = 'argo_filehead'
_junk_table= 'argo_filehead_junk'

lastp = 'argo:lastpost'
FILTER_G = 'gmark=1'
FILTER_M = 'mmark=1'
FILTER_O = 'replyid=0'

def sql_filter_tid(self, tid):
return 'tid=%s' % tid

def sql_filter_owner(self, owner):
return 'owner=%s' % owner


def _move_post(self, tablename, pid, new_tablename):
self.db.execute("INSERT INTO `%s` "
Expand All @@ -347,49 +356,70 @@ def _move_post(self, tablename, pid, new_tablename):
return self.db.execute("DELETE FROM %s "
"WHERE pid=%%s" % tablename, pid)

def _move_post_range(self, tablename, new_tablename, start, end):
def _move_post_range(self, tablename, new_tablename, bid, start, end):
self.db.execute("INSERT INTO `%s` "
"(SELECT * "
"FROM `%s` "
"WHERE pid>=%%s AND pid<%%s AND not flag)" % \
"WHERE bid=%%s AND pid>=%%s AND "
"pid<%%s AND not flag)" % \
(new_tablename, tablename),
start, end)
bid, start, end)
return self.db.execute("DELETE FROM %s "
"WHERE pid>=%%s AND pid<%%s AND not flag" % tablename, start, end)
"WHERE bid=%%s AND pid>=%%s AND pid<%%s "
"AND not flag" % tablename, bid, start, end)

def _move_post_many(self, tablename, new_tablename, pids):
def _move_post_many(self, tablename, new_tablename, bid, pids):
self.db.executemany("INSERT INTO `%s` "
"(SELECT * "
"FROM `%s` "
"WHERE pid=%%s AND not flag)" % (new_tablename, tablename),
"WHERE bid=%s AND pid=%%s AND not flag)" % \
(new_tablename, tablename, bid),
pids)
return self.db.executemany("DELETE FROM %s "
"WHERE pid=%%s AND not flag" % tablename, pids)
"WHERE bid=%s AND pid=%%s AND not flag" %\
(tablename, bid),
pids)

def remove_post_junk(self, pid):
return self._move_post(self._index_table, pid, self._junk_table)

def remove_post_junk_range(self, start, end):
return self._move_post_range(self._index_table, self._junk_table, start, end)
def remove_post_junk_range(self, bid, start, end):
return self._move_post_range(self._index_table, self._junk_table,
bid, start, end)

def remove_post_personal(self, pid):
return self.db.execute("DELETE FROM %s WHERE pid=%%s" % \
self._index_table.
pid)

def get_junk_posts(self, num, limit):
return self.db.query("SELECT * FROM `%s` ORDER BY pid LIMIT %%s,%%s" % \
self._junk_table, num, limit)
def get_junk_posts(self, bid, num, limit):
return self.db.query("SELECT * FROM `%s` WHERE bid=%%s ORDER BY pid "
"LIMIT %%s,%%s" % self._junk_table,
bid, num, limit)

def get_rank_num(self, bid, pid):
return self.db.get('SELECT count(*) as sum'
'FROM `%s` '
'WHERE bid = %%s'
'AND pid<%%s '
'ORDER BY pid' % self._index_table, bid,
pid)['sum']
res = self.db.get('SELECT count(*) as sum'
'FROM `%s` '
'WHERE bid = %%s'
'AND pid<%%s '
'ORDER BY pid' % self._index_table, bid,
pid)
return res and res['sum']

def get_rank_num_cond(self, bid, pid, cond):
return self.db.get('SELECT count(*) as sum'
'FROM `%s` '
'WHERE bid = %%s AND pid<%%s AND %%s '
'ORDER BY pid' % (self._index_table, bid, cond),
pid)['sum']
res = self.db.get('SELECT count(*) as sum'
'FROM `%s` '
'WHERE bid = %%s AND pid<%%s AND %%s '
'ORDER BY pid' % (self._index_table, bid, cond),
pid)
return res and res['sum']

def rank2pid(self, bid, rank):
res = self.db.get("SELECT pid FROM `%s` "
"WHERE bid=%%s ORDER BY pid "
"LIMIT %%s, 1" % self._index_table,
bid, rank)
return res and res['pid']

#####################

Expand Down Expand Up @@ -710,13 +740,18 @@ class Mail(Model):
def send_mail(self, **kwargs):
return self.table_insert(self._index_table, kwargs)

def set_m_mark(self, touid, mail):
def set_m_mark(self, mail):
mail['flag'] = mail['flag'] ^ self.FLAG_M_MARK
self.db.execute("UPDATE `%s` SET flag=%%s WHERE mid=%%s" % self._index_table,
mail['flag'], mail['mid'])
return mail

def remove_mail_range(self, uid, touserid, start, end):
def remove_mail(self, mid):
return self.db.execute("DELETE FROM `%s` "
"WHERE mid=%%s" % self._index_table,
mid)

def remove_mail_range(self, touserid, start, end):
return self.db.execute("DELETE FROM `%s` "
"WHERE touserid=%%s "
"AND mid>=%%s AND mid<=%%s AND flag=0" % self._index_table,
Expand Down Expand Up @@ -763,6 +798,12 @@ def get_mid_rank(self, touserid, mid):
'ORDER BY mid' % self._index_table,
mid, touserid)['sum']

def rank2mid(self, touserid, rank):
res = self.db.get("SELECT mid "
"WHERE touser=%%s ORDER BY mid"
"LIMIT %s, 1" % self._index_table,
touserid, rank)

def get_topic_mid_rank(self, touserid, mid):
return self.db.get('SELECT count(*) as sum'
'FROM `%s` '
Expand Down Expand Up @@ -831,11 +872,6 @@ def set_reply(self, mid):
self._index_table
self.db.execute(sql, mid)

def get_rank(self, userid, uid, mid):
return self.db.get("SELECT count(*) as sum FROM `%s` "
"WHERE mid<=%%s AND touserid=%%s" % self._index_table,
mid, userid)['sum']

class Disgest(Model):

u'''
Expand Down Expand Up @@ -984,10 +1020,10 @@ def is_read(self,userid,boardname,pid):
first_pid = self.ch.zrange(key, 0, 0)[0]
return pid < int(first_pid)

def is_new_board(self,userid,boardname):
bid = self.board.name2id(boardname)
def is_new_board(self,userid,bid):
lastpid = self.post.get_last_pid(bid)
return lastpid is not None and not self.is_read(userid, boardname, lastpid)
return lastpid is not None and not self.is_read(userid, boardname,
lastpid)

def set_read(self,userid,boardname,pid):
if self.is_read(userid, boardname, pid):
Expand All @@ -999,7 +1035,7 @@ def set_read(self,userid,boardname,pid):
self.ch.zremrangebyrank(key, 0, self.limit_max - read_num )
return self.ch.zadd(key,pid,pid)

def clear_unread(self,userid,boardname,last):
def clear_unread(self, userid, boardname, last):
key = self.keyf%(userid,boardname)
self.ch.delete(key)
self.ch.zadd(key, last, last)
Expand Down Expand Up @@ -1433,12 +1469,12 @@ def reply_post(self,boardname,userid,title,content,addr,
# self.notify.add_notice_notify(post['owner'])
return pid

def update_post(self,boardname,userid,pid,content):
def update_post(self,userid,pid,content):
return self.post.update_post(pid,
owner = userid,
content=content)

def update_title(self, userid, boardname, pid, new_title):
def update_title(self, userid, pid, new_title):
return self.post.update_post(pid, title=new_title)

def has_edit_title_perm(self, userid, pid):
Expand Down Expand Up @@ -1495,7 +1531,7 @@ def __init__(self, manager):
self.userinfo = manager.get_module('userinfo')
self.mail = manager.get_module('mail')

def set_post_replyattr(self,userid, boardname, pid, replyable):
def set_post_replyattr(self,userid, pid, replyable):
self.post.update_post(pid, replyable=replyable)

def add_board(self, userid, boardname, sid, description, allowteam, postteam, denyteam, adminteam):
Expand Down Expand Up @@ -1539,7 +1575,7 @@ def set_m_mark(self, userid, board, post):
self.post.update_post( post['pid'], flag=post['flag'])
return post

def remove_post_junk(self, userid, boardname, pid):
def remove_post_junk(self, userid, pid):
self.post.remove_post_junk(pid)

def remove_post_junk_range(self, userid, boardname, start, end):
Expand Down Expand Up @@ -1657,9 +1693,6 @@ def get_user(self, userid, toquery):
base['teams'] = self.team.user_teams(userid)
return base

def post_index2pid(self, boardname, index):
return self.post.index2pid(boardname, index)

class FreqControl(Model):

u'''
Expand Down
2 changes: 1 addition & 1 deletion telnet/boardlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def get(self, char):
def get_default_index(self, boards, default=0):
userid = self.userid
for index,b in enumerate(boards):
if manager.readmark.is_new_board(userid, b['boardname']):
if manager.readmark.is_new_board(userid, b['bid']):
return index
else :
return default
Expand Down
7 changes: 2 additions & 5 deletions telnet/edit.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ def initialize(self, boardname, post):
perm = manager.query.get_board_ability(self.userid, boardname)
if not perm[0] :
self.goto_back()
post = manager.post.get_post(boardname, post['pid']) ## reload to get date in realtime
post = manager.post.get_post(post['pid']) ## reload to get date in realtime
if not (perm[1] and post['replyable']):
self.pause(u'你没有发文权力或本文禁止回复!')
manager.status.set_status(self.seid,
Expand Down Expand Up @@ -398,10 +398,7 @@ def finish(self):
self.restore_screen()

def modify_and_goto_back(self, text):
manager.action.update_post(self.boardname,
self.userid,
self.pid,
text)
manager.action.update_post(self.userid, self.pid, text)
self.goto_back()

def publish(self):
Expand Down
2 changes: 1 addition & 1 deletion telnet/jumper.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def initialize(self, boardname, pid):
perm = manager.query.get_board_ability(self.userid, boardname)
if not perm[0] :
self.goto_back()
post = manager.post.get_post(boardname, pid)
post = manager.post.get_post(pid)
if post :
self.setup(self.wrapper_post(post))
else:
Expand Down
19 changes: 8 additions & 11 deletions telnet/mail.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@ def initialize(self, mode=0):
self.setup(dataloader, counter)

def _get_loader(self, mode):
return (self.MODE_LOADER[mode](self.uid, self.userid),
self.MODE_COUNTER[mode](self.uid, self.userid))
return (self.MODE_LOADER[mode](self.userid),
self.MODE_COUNTER[mode](self.userid))

def reset_mode(self, mode):
dataloader, counter = self._get_loader(mode)
Expand All @@ -178,23 +178,21 @@ def reply(self, mail):
self.suspend('_reply_mail_o', mail=mail)

def set_m_mark(self, mail):
return manager.mail.set_m_mark(self.session.user.uid,
mail)
return manager.mail.set_m_mark(mail)

def remove_mail(self, mail):
if self.bottom_do(self.confirm, prompt=u'删除你的文章?[y/n] ') :
manager.mail.remove_mail(self.session.user.uid,
mail['mid'])
if self.bottom_do(self.confirm, prompt=u'删除你的邮件?[y/n] ') :
manager.mail.remove_mail(mail['mid'])
self.reload()

def remove_mail_range(self):
start = self.readline(prompt=u'首篇文章编号: ')
if start.isdigit():
end = self.readline(prompt=u'末篇文章编号:')
if end.isdigit() :
start_mid = manager.mail.index2mid(self.session.user.uid,
int(start) - 1)
end_mid = manager.mail.index2mid(self.session.user.uid,
start_mid = manager.mail.rank2mid(self.session.user.uid,
int(start) - 1)
end_mid = manager.mail.rank2mid(self.session.user.uid,
int(end) - 1)
if start_mid >= end_mid :
return
Expand Down Expand Up @@ -413,7 +411,6 @@ def initialize(self, mail, mode=0):

def _set_mode(self, mode):
self.next_loader, self.prev_loader = self.MODE_LOADER[mode](
self.session.user.uid,
self.userid
)
self.bottom_tpl = self.MODE_BOTTOM[mode]
Expand Down
Loading

0 comments on commit de8434c

Please sign in to comment.