本文整理汇总了Python中x84.bbs.DBProxy.release方法的典型用法代码示例。如果您正苦于以下问题:Python DBProxy.release方法的具体用法?Python DBProxy.release怎么用?Python DBProxy.release使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类x84.bbs.DBProxy
的用法示例。
在下文中一共展示了DBProxy.release方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: add_oneline
# 需要导入模块: from x84.bbs import DBProxy [as 别名]
# 或者: from x84.bbs.DBProxy import release [as 别名]
def add_oneline(msg):
"""
Add a oneliner to the local database.
"""
import time
from x84.bbs import getsession, DBProxy, ini
session = getsession()
udb = DBProxy('oneliner')
udb.acquire()
udb[max([int(key) for key in udb.keys()] or [0]) + 1] = {
'oneliner': msg,
'alias': getsession().handle,
'bbsname': ini.CFG.get('system', 'bbsname'),
'timestamp': time.strftime('%Y-%m-%d %H:%M:%S'),
}
udb.release()
session.buffer_event('oneliner_update', True)
session.send_event('global', ('oneliner_update', True))
示例2: add_comment
# 需要导入模块: from x84.bbs import DBProxy [as 别名]
# 或者: from x84.bbs.DBProxy import release [as 别名]
def add_comment(key):
""" Prompt user to add a comment about a bbs. """
# pylint: disable=R0914
# Too many local variables.
from x84.bbs import getsession, getterminal, echo, DBProxy, LineEditor
from x84.bbs import getch
session, term = getsession(), getterminal()
prompt_comment = u'\r\n\r\nWhAt YOU GOt tO SAY? '
prompt_chg = u'\r\n\r\nChANGE EXiStiNG ? [yn] '
echo(term.move(term.height, 0))
echo(prompt_comment)
comment = LineEditor(max(10, term.width - len(prompt_comment) - 5)).read()
if comment is None or 0 == len(comment.strip()):
return
new_entry = (session.handle, comment)
comments = DBProxy('bbslist', 'comments')
comments.acquire()
existing = comments[key]
if session.handle in (_nick for (_nick, _cmt) in comments[key]):
# change existing comment,
echo(prompt_chg)
if getch() not in (u'y', u'Y'):
comments.release()
return
# re-define list without existing entry, + new entry
comments[key] = [(_enick, _ecmt) for (_enick, _ecmt) in existing
if session.handle != _enick] + [new_entry]
comments.release()
return
# re-define as existing list + new entry
comments[key] = existing + [new_entry]
comments.release()
示例3: rate_bbs
# 需要导入模块: from x84.bbs import DBProxy [as 别名]
# 或者: from x84.bbs.DBProxy import release [as 别名]
def rate_bbs(key):
""" Prompt user to rate a bbs. """
# pylint: disable=R0914
# Too many local variables
from x84.bbs import getsession, getterminal, echo, LineEditor, DBProxy
from x84.bbs import getch
session, term = getsession(), getterminal()
prompt_rating = u'\r\n\r\nRAtE 0.0 - 4.0: '
prompt_chg = u'\r\n\r\nChANGE EXiStiNG ? [yn] '
msg_invalid = u'\r\n\r\niNVAlid ENtRY.\r\n'
echo(term.move(term.height, 0) + '\r\n')
echo(prompt_rating)
s_rating = LineEditor(3).read()
if s_rating is None or 0 == len(s_rating.strip()):
return
try:
f_rating = float(s_rating)
except ValueError:
echo(msg_invalid)
return
if f_rating < 0 or f_rating > 4:
echo(msg_invalid)
return
entry = (session.handle, f_rating)
ratings = DBProxy('bbslist', 'ratings')
ratings.acquire()
if session.handle in (_handle for (_handle, _rating) in ratings[key]):
echo(prompt_chg)
if getch() not in (u'y', u'Y'):
ratings.release()
return
# re-define list without existing entry, + new entry
ratings[key] = [(__handle, __rating)
for (__handle, __rating) in ratings[key]
if session.handle != __handle] + [entry]
ratings.release()
return
# re-define as existing list + new entry
ratings[key] = ratings[key] + [entry]
ratings.release()
示例4: main
# 需要导入模块: from x84.bbs import DBProxy [as 别名]
# 或者: from x84.bbs.DBProxy import release [as 别名]
#.........这里部分代码省略.........
term.underline('sysop'.ljust(15)),),
u'\r\n'.join([board_fmt % (
term.bold(host.rjust(25)),
term.reverse(board.center(30)),
term.bold_underline(sysop),)
for (host, board, sysop) in boards]),
u'\r\n\r\n',
term.bold(
u'back to the mundane world...'),
u'\r\n',))
commit_msg = term.bold_blue(
u'-- ! thANk YOU fOR YOUR CONtRibUtiON, bROthER ! --')
write_msg = term.red_reverse(
u'bURNiNG tO ROM, PlEASE WAiT ...')
db_firstrecord = ((time.time() - 1984,
u'B. b.', u'bEhAVE YOURSElVES ...'),)
automsg_len = 40
artfile = os.path.join(os.path.dirname(__file__), 'art', '1984.asc')
def refresh_prompt(msg):
""" Refresh automsg prompt using string msg. """
echo(u''.join((u'\r\n\r\n', term.clear_eol, msg)))
def refresh_automsg(idx):
""" Refresh automsg database, display automsg of idx, return idx. """
session.flush_event('automsg')
autodb = DBProxy('automsg')
automsgs = sorted(autodb.values()) if len(autodb) else db_firstrecord
dblen = len(automsgs)
# bounds check
if idx < 0:
idx = dblen - 1
elif idx > dblen - 1:
idx = 0
tm_ago, handle, msg = automsgs[idx]
asc_ago = u'%s ago' % (timeago(time.time() - tm_ago))
disp = (u''.join(('\r\n\r\n',
term.bold(handle.rjust(max_user)),
term.bold_blue(u'/'),
term.blue(u'%*d' % (len('%d' % (dblen,)), idx,)),
term.bold_blue(u':'),
term.blue_reverse(msg.ljust(automsg_len)),
term.bold(u'\\'),
term.blue(asc_ago),)))
echo(u''.join((
u'\r\n\r\n',
Ansi(disp).wrap(term.width),
)))
return idx
def refresh_all(idx=None):
"""
refresh screen, database, and return database index
"""
echo(u''.join((u'\r\n\r\n', term.clear_eol,)))
for line in showcp437(artfile):
echo(line)
idx = refresh_automsg(-1 if idx is None else idx)
refresh_prompt(prompt_msg)
return idx
idx = refresh_all()
while True:
if session.poll_event('refresh'):
idx = refresh_all()
elif session.poll_event('automsg'):
refresh_automsg(-1)
echo(u'\a') # bel
refresh_prompt(prompt_msg)
inp = getch(1)
if inp in (u'g', u'G', term.KEY_EXIT, unichr(27), unichr(3),):
# http://www.xfree86.org/4.5.0/ctlseqs.html
# Restore xterm icon and window title from stack.
echo(unichr(27) + u'[23;0t')
echo(goodbye_msg)
getch(1.5)
disconnect('logoff.')
elif inp in (u'n', u'N', term.KEY_DOWN, term.KEY_NPAGE,):
idx = refresh_automsg(idx + 1)
refresh_prompt(prompt_msg)
elif inp in (u'p', u'P', term.KEY_UP, term.KEY_PPAGE,):
idx = refresh_automsg(idx - 1)
refresh_prompt(prompt_msg)
elif inp in (u's', u'S'):
# new prompt: say something !
refresh_prompt(prompt_say)
msg = LineEditor(width=automsg_len).read()
if msg is not None and msg.strip():
echo(u''.join((u'\r\n\r\n', write_msg,)))
autodb = DBProxy('automsg')
autodb.acquire()
idx = max([int(ixx) for ixx in autodb.keys()] or [-1]) + 1
autodb[idx] = (time.time(), handle, msg.strip())
autodb.release()
session.send_event('global', ('automsg', True,))
refresh_automsg(idx)
echo(u''.join((u'\r\n\r\n', commit_msg,)))
getch(0.5) # for effect, LoL
# display prompt
refresh_prompt(prompt_msg)