本文整理汇总了Python中x84.bbs.getsession函数的典型用法代码示例。如果您正苦于以下问题:Python getsession函数的具体用法?Python getsession怎么用?Python getsession使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了getsession函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: kbhit
def kbhit(self, timeout=0, _intr_continue=True):
# _intr_continue has no meaning here, sigwinch or events do not
# interrupt the event IPC.
from x84.bbs import getsession
val = getsession().read_event('input', timeout)
if val is not None:
getsession()._buffer['input'].append(val)
return True
return False
示例2: notify_update_database
def notify_update_database(self, content):
new_content = {}
for key, oneliner in content:
if str(key) not in self.existing_content:
new_content[key] = oneliner
if new_content:
self.log.info('[shroo.ms] %d new entries', len(new_content))
self.new_content = new_content
getsession().buffer_event('oneliner', True)
else:
self.log.debug('[shroo.ms] no new entries')
示例3: prompt
def prompt():
"""
Return string suitable for displaying prompt and available commands.
"""
from x84.bbs import getsession, getterminal, Ansi
session, term = getsession(), getterminal()
decorate = lambda key, desc: u''.join((
u'(', term.green_underline(key,),
u')', term.reverse_green(desc.split()[0]), u' ',
u' '.join(desc.split()[1:]), u' ',))
return Ansi(u''.join((
u' ' * 2,
term.green_reverse(':keys'), u' ',
decorate('c', 'hAt USR'),
decorate('s', 'ENd MSG'),
(u''.join((
decorate('p', 'lAYbACk REC'),
decorate('w', 'AtCh liVE'),
decorate('d', 'iSCONNECt SiD'),
decorate('e', 'diT USR'),
decorate('v', 'iEW SiD AttRS'),
u' ',)) if 'sysop' in session.user.groups else u''),
decorate('Escape/q', 'Uit'),
decorate('Spacebar', 'REfRESh'),
))).wrap(int(term.width * .7), indent=u' ' * 8)
示例4: send_passkey
def send_passkey(user):
""" Send passkey token to user by e-mail. """
session = getsession()
passkey = base64.encodestring(os.urandom(50))[:password_max_length]
email_msg = MIMEText(msg_mailbody.format(bbsname=system_bbsname,
session=session,
user=user,
passkey=passkey))
email_msg['From'] = msg_mailfrom
email_msg['To'] = user.email
email_msg['Subject'] = msg_mailsubj.format(bbsname=system_bbsname)
try:
smtp = smtplib.SMTP(mail_smtphost)
smtp.sendmail(msg_mailfrom, [user.email], email_msg.as_string())
smtp.quit()
except Exception as err:
log.exception(err)
echo('{0}'.format(err))
return False
log.info(u'Password reset token delivered '
u'to address {0!r} for user {1!r}.'
.format(user.email, user.handle))
return passkey
示例5: saysomething
def saysomething(dumb=True):
"""
Prompt user to post oneliner, also prompt user to post
to bbs-scene.org if configured, returning background Thread.
"""
import time
from x84.bbs import getsession, getterminal, echo, LineEditor, ini
session, term = getsession(), getterminal()
prompt_say = u'SAY WhAt ?! '
# heard_msg = u'YOUR MESSAGE hAS bEEN VOiCEd.'
yloc = term.height - 3
xloc = max(0, ((term.width / 2) - (MAX_INPUT / 2)))
if dumb:
echo(u'\r\n\r\n' + term.bold_blue(prompt_say))
else:
echo(term.move(yloc, xloc) or u'\r\n\r\n')
echo(term.bold_blue(prompt_say))
ole = LineEditor(MAX_INPUT)
ole.highlight = term.green_reverse
oneliner = ole.read()
if oneliner is None or 0 == len(oneliner.strip()):
if not dumb:
# clear input line,
echo(term.normal + term.move(yloc, 0) + term.clear_eol)
return None
session.user['lastliner'] = time.time()
# post local-onlyw hen bbs-scene.org is not configured
if not ini.CFG.has_section('bbs-scene'):
add_oneline(oneliner.strip())
return None
return post_bbs_scene(oneliner, dumb)
示例6: prompt_ok
def prompt_ok():
"""
Prompt user to continue, True if they select yes.
"""
from x84.bbs import getsession, getterminal, echo, getch, Selector
session, term = getsession(), getterminal()
prompt_confirm = u'EVERYthiNG lOOk Ok ?'
prompt_continue = u'YES (CONtiNUE)'
prompt_chg = u'NO! (ChANGE)'
def prompt_ok_dumb():
""" Dummy terminal prompt for confirm/cancel. """
echo('\r\n\r\n%s\r\n' % (prompt_confirm,))
echo('1 - %s\r\n' % (prompt_continue,))
echo('2 - %s\r\n\r\n' % (prompt_chg,))
echo('select (1, 2) --> ')
while True:
inp = getch()
if inp == u'1':
return True
elif inp == u'2':
return False
if session.env.get('TERM') == 'unknown':
return prompt_ok_dumb()
sel = Selector(yloc=term.height - 1, xloc=5,
width=term.width - 10,
left=prompt_continue, right=prompt_chg)
echo(term.normal)
echo(term.move(term.height - 2, 0) + term.clear_eol)
echo(prompt_confirm.center(term.width - 1) + '\r\n')
echo(term.clear_eol + sel.refresh())
while True:
echo(sel.process_keystroke(getch()))
if sel.selected:
return True if sel.selection == prompt_continue else False
示例7: display_msg
def display_msg(msg):
""" Display full message """
from x84.bbs import getterminal, getsession, echo, decode_pipe
session, term = getsession(), getterminal()
body = msg.body.splitlines()
style = getstyle()
receipt = (msg.recipient if msg.recipient is not None
else u'<(None)=All users>')
echo(u' AUthOR: ' + style['highlight'](msg.author) + u'\r\n\r\n')
echo(u' RECiPiENt: ')
echo(style['lowlight'](receipt))
echo(u'\r\n\r\n')
echo(u' SUBjECt: ')
echo(style['lowlight'](msg.subject))
echo(u'\r\n\r\n')
echo(u' tAGS: ')
echo(style['lowlight'](u', '.join(msg.tags)))
echo(u'\r\n\r\n')
echo(term.underline(u' bOdY: '.ljust(term.width - 1)) + u'\r\n')
echo(decode_pipe(u'\r\n'.join(body)) + term.normal)
echo(u'\r\n' + term.underline(u''.ljust(term.width - 1)))
echo(u'\r\n\r\n')
session.activity = 'Constructing a %s message' % (
u'public' if u'public' in msg.tags else u'private',)
return
示例8: process_keystroke
def process_keystroke(inp, key=None):
""" Process general keystroke and call routines. """
from x84.bbs import getsession, DBProxy, gosub, echo
session = getsession()
if inp is None:
return False
elif type(inp) is int:
return False
elif inp in (u't', u'T') and key is not None:
bbs = DBProxy('bbslist')[key]
gosub('telnet', bbs['address'], bbs['port'],)
elif inp in (u'a', u'A'):
add_bbs()
elif inp in (u'c', u'C') and key is not None:
add_comment(key)
elif inp in (u'r', u'R') and key is not None:
rate_bbs(key)
elif inp in (u'i', u'I') and key is not None:
echo(get_bbsinfo(key) + '\r\n')
elif inp in (u'v', u'V') and key is not None:
view_ansi(key)
elif inp in (u'd', u'D') and key is not None and (
'sysop' in session.user.groups):
del DBProxy('bbslist')[key]
else:
return False # unhandled
return True
示例9: usernum
def usernum(self):
from x84.bbs import getsession
from x84.bbs.userbase import list_users
try:
return list_users().index(getsession().user.handle)
except ValueError:
return 999
示例10: main
def main(anonymous=False, new=False, username=''):
""" Main procedure. """
from x84.bbs import (
getsession,
getterminal,
find_user,
get_user,
User,
)
session, term = getsession(), getterminal()
session.activity = 'sftp'
if anonymous:
user = User(u'anonymous')
else:
assert not new, ("[email protected] user not supported by SFTP.")
# ProperCase user-specified handle
handle = find_user(username)
assert handle is not None, handle
# fetch user record
user = get_user(handle)
# assign session user, just as top.py function login()
session.user = user
while True:
inp = term.inkey() # should block indefinately
log = logging.getLogger(__name__)
log.warn('Got inkey: {0!r}'.format(inp))
示例11: get_centigrade
def get_centigrade():
""" Blocking prompt for setting C/F preference. """
from x84.bbs import getterminal, getsession, echo
term = getterminal()
session = getsession()
if bool(session.user.handle == 'anonymous'):
# anonymous cannot set a preference.
return
echo(u''.join((
u'\r\n\r\n',
term.yellow(u'Celcius'),
term.bold_yellow(u'('),
term.bold_yellow_reverse(u'C'),
term.bold_yellow(u')'),
u' or ',
term.yellow(u'Fahrenheit'),
term.bold_yellow(u'('),
term.bold_yellow_reverse(u'F'),
term.bold_yellow(u')'),
u'? ')))
while True:
inp = term.inkey()
if inp in (u'c', u'C'):
session.user['centigrade'] = True
session.user.save()
break
elif inp in (u'f', u'F'):
session.user['centigrade'] = False
session.user.save()
break
elif inp in (u'q', u'Q', term.KEY_EXIT):
break
示例12: main
def main(handle=None):
""" Main procedure. """
# pylint: disable=R0914,R0912,R0915
# Too many local variables
# Too many branches
# Too many statements
session, term = getsession(), getterminal()
session.activity = 'top'
# attempt to coerce encoding of terminal to match session.
coerce_terminal_encoding(term, session.encoding)
# fetch user record
user = get_user_record(handle)
# register call
login(session, user)
# display art and prompt for quick login
quick = do_intro_art(term, session)
echo(term.move_down() * 3)
# only display news if the account has not
# yet read the news since last update.
gosub('news', quick=True)
if not quick:
# display last 10 callers, if any
gosub('lc')
# one-liners
gosub('ol')
goto('main')
示例13: prompt
def prompt():
"""
Return string suitable for displaying prompt and available commands.
"""
from x84.bbs import getsession, getterminal
session, term = getsession(), getterminal()
decorate = lambda key, desc: u"".join(
(u"(", term.magenta_underline(key), u")", term.cyan(desc.split()[0]), u" ", u" ".join(desc.split()[1:]), u" ")
)
return term.wrap(
u"".join(
(
u" " * 2,
term.green_reverse(":keys"),
u" ",
decorate("c", "hAt USR"),
decorate("s", "ENd MSG"),
(
u"".join(
(decorate("d", "iSCONNECt SiD"), decorate("e", "diT USR"), decorate("v", "iEW SiD AttRS"), u" ")
)
if "sysop" in session.user.groups
else u""
),
decorate("Escape/q", "Uit"),
decorate("Spacebar", "REfRESh"),
)
),
int(term.width * 0.8),
subsequent_indent=u" " * 8,
)
示例14: refresh
def refresh():
""" Refresh main menu. """
# pylint: disable=R0914
# Too many local variables
from x84.bbs import getsession, getterminal, echo, showcp437, ini
import os
session, term = getsession(), getterminal()
session.activity = u'Main menu'
artfile = os.path.join(os.path.dirname(__file__), 'art', 'main.asc')
echo(u''.join((
u'\r\n\r\n',
term.blue(u'/'.rjust(term.width / 2)), term.bold_black(u'/ '),
term.bold('x'), term.bold_blue('/'), term.bold('84'), u' ',
'MAiN MENU',
u'\r\n')))
for line in showcp437(artfile):
echo(line)
echo(u'\r\n\r\n')
entries = [
('b', 'bS NEXUS'),
('l', 'ASt CAllS'),
('o', 'NE liNERS'),
('w', "hO'S ONliNE"),
('n', 'EWS'),
('c', 'hAt'),
('!', 'ENCOdiNG'),
('t', 'EtRiS'),
('s', 'YS. iNfO'),
('u', 'SER LiST'),
('f', 'ORECASt'),
('e', 'dit PROfilE'),
('p', 'OSt A MSG'),
('r', 'EAd All MSGS'),
('g', 'OOdbYE /lOGOff'),]
# add LORD to menu only if enabled,
if ini.CFG.getboolean('dosemu', 'enabled') and (
ini.CFG.get('dosemu', 'lord_path') != 'no'):
entries.insert(0, ('#', 'PlAY lORd!'))
if 'sysop' in session.user.groups:
entries += (('v', 'idEO CASSEttE'),)
buf_str = u''
for key, name in entries:
out_str = u''.join((
term.bold(u'('),
term.bold_blue_underline(key),
term.bold(u')'),
term.bold_blue(name.split()[0]),
u' ', u' '.join(name.split()[1:]),
u' '))
ansilen = term.length(buf_str + out_str)
if ansilen >= (term.width * .8):
echo(term.center(buf_str) + u'\r\n\r\n')
buf_str = out_str
else:
buf_str += out_str
echo(term.center(buf_str) + u'\r\n\r\n')
echo(u' [%s]:' % (
term.blue_underline(''.join([key for key, name in entries]))))
示例15: refresh_opts
def refresh_opts(pager, handle):
""" Refresh pager border with command keys available. """
from x84.bbs import getsession, getterminal, get_user, find_user, Ansi
session, term = getsession(), getterminal()
if not handle or not find_user(handle):
has_plan = 0
else:
has_plan = 0 != len(get_user(handle).get('.plan', u'').strip())
decorate = lambda key, desc: u''.join((
term.red_underline(key,),
u':',
term.yellow(desc.split()[0]), u' ',
u' '.join(desc.split()[1:]),
u' ' if len(desc.split()) > 1 else u'',))
statusline = u''.join((
term.bold_yellow(u'- '),
decorate(u'Escape/q', 'Uit'),
decorate(u'v', 'iEW .PLAN') if has_plan else u'',
decorate(u'e', 'dit USR') if 'sysop' in session.user.groups else u'',
term.bold_yellow(u'-'),
))
if len(Ansi(statusline)) < (pager.visible_width - 4):
return pager.border() + pager.footer(statusline)
else:
return pager.border() + pager.footer(term.bold_red('q') + u':uit')