def ui_renew(self, operator, bookinsid, bookclsid=None, bookname=None): ret = web.Storage() if self.renew(operator, bookinsid, bookclsid, bookname): ret.newexpdt = self.newexpdt ret.renewtimes = self.renewtimes return ret
def POST(self): """Called when the user uploads a file using POST""" from PIL import Image # get the data from the form x = web.input(myfile=web.Storage(file='')) # check the input file to make sure it's legal if 'myfile' not in x or not x.myfile.file: raise web.badrequest() # create the filename (and containing dir) based on the current time fname = os.path.join(IMAGEDIR, '%d.jpg' % (time.time() * 1000)) try: os.makedirs(os.path.dirname(fname)) except OSError: pass # save the image fout = open(fname, 'w') fout.write(x.myfile.file.read()) fout.close() # remove the image from the uploaded params del x['myfile'] try: # if it's a valid image, process it im = Image.open(fname) web.debug( 'Saved valid image to %s, about to call process() on it' % (fname)) results = process(im, fname, dict(x)) return results except IOError: # if not, delete the image and return bad request try: os.remove(fname) except IOError: pass raise web.badrequest()
def test_work_with_data(self): work = models.Work(web.ctx.site, '/works/OL42679M', web.Storage()) assert repr(work) == str(work) == "<Work: '/works/OL42679M'>" assert isinstance(work, client.Thing) and isinstance(work, models.Work) assert work._site == web.ctx.site assert work.key == '/works/OL42679M' assert isinstance(work._data, web.Storage) and isinstance( work._data, dict) assert hasattr(work, 'data') assert isinstance(work.data, client.Nothing) assert hasattr(work, 'any_attribute') # hasattr() is True for all keys! assert isinstance(work.any_attribute, client.Nothing) assert repr(work.any_attribute) == '<Nothing>' assert str(work.any_attribute) == '' work.new_attribute = 'new_attribute' assert isinstance(work.data, client.Nothing) # Still Nothing assert work.new_attribute == 'new_attribute' assert work['new_attribute'] == 'new_attribute' assert work.get('new_attribute') == 'new_attribute' assert not work.hasattr('new_attribute') assert work._data == {'new_attribute': 'new_attribute'} assert repr(work.data) == '<Nothing>' assert str(work.data) == '' assert callable(work.get_sorted_editions) # Issue #3633 assert work.get_sorted_editions() == []
def parseQuery(query): storage = web.Storage() query = query.strip() if query.startswith('?'): query = query[1:] for parameter in query.split('&'): key, *val = parameter.split('=') if not key: continue if val == []: val = True else: val = '='.join(val) try: oldValue = storage[key] if isinstance(oldValue, list): oldValue.append(val) else: storage[key] = [oldValue, val] except KeyError: storage[key] = val return storage
def close(userid, form): if userid not in staff.MODS: raise WeasylError("InsufficientPermissions") root_report = Report.query.get(int(form.reportid)) if root_report is None or root_report.is_closed: return if 'close_all_user_reports' in form: # If we're closing all of the reports opened against a particular content # owner, do the same thing as in the select_list function and collect Login # aliases so that filtering can be done by Login.login_name. q = Report.query login_aliases = [] for column_name in _report_types: login_alias = aliased(Login) login_aliases.append(login_alias) q = ( q .outerjoin(getattr(Report, column_name)) .outerjoin(login_alias) .reset_joinpoint()) q = ( q .filter_by(is_closed=False) .filter(sa.or_(l.login_name == root_report.target.owner.login_name for l in login_aliases))) reports = q.all() else: reports = [root_report] for report in reports: if report.is_closed: raise RuntimeError("a closed report shouldn't have gotten this far") report.closerid = userid report.settings.mutable_settings.clear() if 'assign' in form: report.is_under_review = True elif 'unassign' in form: report.closerid = None else: report.closed_at = arrow.get() report.closure_explanation = form.explanation report.closure_reason = _closure_actions[form.action] Report.dbsession.flush() if form.action == 'action_taken': # TODO(hyena): Remove this dependency on web.py's Storage objects. note_form = web.Storage() note_form.title = form.note_title note_form.content = form.user_note note_form.recipient = root_report.target.owner.login_name note_form.mod_copy = True note_form.staff_note = form.explanation note.send(userid, note_form)
def GET(self): ''' GET /dump Dumps the state of the policy module. For debug purpose only. ''' (transfers, resources) = policy.dump() dump = web.Storage() dump.transfers = transfers dump.resources = resources return json.dumps(dump)
def fetchSome(self, query_string, argv=(), ignore_assert=False): '''return a list of dict''' if not ignore_assert: assert ('select' in query_string.lower()) cursor = self.db_dict.cursor() try: cursor.execute(query_string, argv) except: print 'query string is:', query_string print 'argv are:', argv raise return [web.Storage(self._toUtf8(one)) for one in cursor.fetchall()]
def ui_borrow(self, operator, readercardno, bookinsid): ret = web.Storage() if self.borrow(operator, readercardno, bookinsid): ret.ok_c = True ret.borrdt = datetime.datetime.now() if hasattr(self, "bookins"): op_book.bind_ref(self.bookins) ret.update(self.bookins) if hasattr(self, "canborrow"): ret.canborrow_c = self.canborrow return ret
def POST(self, username, password): password = hashlib.sha1(password).hexdigest() if username in _accounts: # 账户已存在 account = _accounts[username] if account.password != password: # 登录失败 return json.dumps(dict(code=401, message='password invalid')) else: # 登录成功 _save_session(username) return json.dumps(dict(code=200, message='login ok')) else: # 账户不存在,自动注册 _accounts[username] = web.Storage(password=password) _save_session(username) return json.dumps(dict(code=200, message='register ok'))
def _analyze(cls, init=False): columns = web.Storage() for k in dir(cls): if isinstance(getattr(cls, k), Column): v = getattr(cls, k) v.sql_name = v._sql_name_(k) if not hasattr(v, 'label'): v.label = k.replace('_', ' ') if init and hasattr(v, '_delayed_init'): v._delayed_init(cls) columns[k] = v return columns
def POST(self): post = web.input() if post.get('u_email'): post.u_email = post.u_email.strip() user = pduser.loaduser_by_email(post.u_email) if user: createtime = time.time() row = web.Storage(f_create_time=createtime) row.f_hash = md5.new(str(createtime)).hexdigest() row.f_uemail = post.u_email pdfindpass.insert_by_list([row]) XWJemail.sendfindpass(user, row.f_hash) return render.findpass({'code': 1}) return render.findpass({'code': 0, 'email': post.get('u_email')})
def test(formtype=None): def getdistzipdict(zipdump): """returns a dict with district names as keys zipcodes falling in it as values""" d = {} for line in zipdump.strip().split('\n'): zip5, zip4, dist = line.split('\t') d[dist] = (zip5, zip4) return d try: dist_zip_dict = getdistzipdict(file('zip_per_dist.tsv').read()) except: import os, sys path = os.path.dirname(sys.modules[__name__].__file__) dist_zip_dict = getdistzipdict(file(path + '/zip_per_dist.tsv').read()) def getzip(dist): try: return dist_zip_dict[dist] except KeyError: for d in dist_zip_dict.keys(): if d.startswith(dist + '-'): return dist_zip_dict[d] return '', '' query = "select politician_id from pol_contacts where contacttype='%s'" % formtype[ 0].upper() pols = [r.politician_id for r in db.query(query)] for pol in pols: print pol, dist = pol2dist(pol) zip5, zip4 = getzip(dist) print zip5, zip4, msg = compose_msg(pol, 'testing...') u = web.Storage(zip5=zip5, zip4=zip4, prefix='Mr.', state=dist[:2], fname='test', lname='Tester', addr1='111 av', addr2='addr extn', city='test city', phone='0010010010', email='*****@*****.**', subject='general', full_msg=msg) msg_sent = writerep(pol, u) print msg_sent and 'Success' or 'Failure'
def GET(self): init.checkadmin() data = {} data['status'] = conf.status #modify indata = web.input(id='0') if (indata.id.isdigit() and indata.id != '0'): oridata = mysql.conn.select('gt_line', where="id=" + indata.id) if (len(oridata) < 1): return init.render.error('id参数有误') oridata = oridata[0] else: id = '0' oridata = web.Storage() return init.render.linedit(data, oridata)
def fetchOne(self, query_string, argv=(), ignore_assert=False): '''return a dict''' if not ignore_assert: assert ('select' in query_string.lower()) assert (' limit ' not in query_string.lower()) query_string += ' limit 1' cursor = self.db_dict.cursor() try: cursor.execute(query_string, argv) except: print 'query string is:', query_string print 'argv are:', argv raise one = cursor.fetchone() if one is not None: one = web.Storage(self._toUtf8(one)) return one
def ui_giveback(self, operator, bookinsid): ret = web.Storage() if self.giveback(operator, bookinsid): ret.ok_c = True ret.borrhisid = self.borrhisid ret.overdays = self.overdays ret.overprice = self.overprice if hasattr(self, "bookins"): op_book.bind_ref(self.bookins) ret.update(self.bookins) if hasattr(self, "reader"): op_reader.bind_ref(self.reader) ret.update(self.reader) if hasattr(self, "borrnow"): ret.update(self.borrnow) return ret
def GET(self): init.checkadmin() data = {} data['province'] = mysql.getproArr() data['city'] = mysql.getcityArr() data['cityj'] = json.dumps(data['city'], ensure_ascii=False) data['cityjson'] = data['cityj'] #.replace(""",'"'); data['grade'] = conf.grade #modify indata = web.input(id='0') if (indata.id.isdigit() and indata.id != '0'): oridata = mysql.conn.select('gt_station', where="id=" + indata.id) if (len(oridata) < 1): return init.render.error('id参数有误') oridata = oridata[0] else: id = '0' oridata = web.Storage() return init.render.stationedit(data, oridata)
def storage(data={}): return web.Storage(data)
from urllib import quote as _quote, unquote as _unquote, urlencode import socket, struct from urlparse import urlparse # 程序的配置表. 注意文件夹路径必须以/结束 config = web.Storage({ 'APP_ROOT_PATH': '/opt/zarkpy/', 'APP_PORT': 10000, # 程序运行的端口号,需与nginx配置的一致 'SESSION_PATH': '/opt/zarkpy/session/', # session存放路径 'COOKIE_EXPIRES': 7 * 24 * 3600, # cookie过期时间 'SESSION_EXPIRES': 24 * 3600, # session过期时间 'DB_HOST': '127.0.0.1', # mysql数据库host 'DB_DATABASE': 'zarkpy', # mysql数据库名称 'DB_USER': '******', # mysql数据库用户名 'DB_PASSWORD': '******', # mysql数据库连接密码 'DB_TIMEOUT': 800 * 3600, # 连接超时时间, 默认800小时 'DB_CHARSET': 'utf8', 'UPLOAD_IMAGE_PATH': '/opt/zarkpy/web/img/upload/', # 上传图片存放目录 'UPLOAD_IMAGE_URL': '/img/upload/', # 访问上传图片的相对路径 # 程序异常log,小心,如果有太多的error的话可能会导致写日志的锁等待,导致程序响应慢 'ERROR_LOG_PATH': '/opt/zarkpy/log/error.log', 'FOOT_LOG_PATH': '', # 访问log, 一般情况下可以不使用 'SECRET_KEY': 'zarkpy', # 程序密匙,每个新项目务必修改此key 'HOST_NAME': 'http://me.zarkpy.com', 'MAIL_SENDER': '*****@*****.**', # 邮件的默认发送者 'IS_TEST': False, # 是否正在测试,测试时会被修改为True }) # 初始化一些重要变量 web.config.session_parameters['timeout'] = config.SESSION_EXPIRES web.config.session_parameters['secret_key'] = config.SECRET_KEY
def GET(self): urls = db.g_urls_map print(urls) params = web.Storage(locals()) return render.index(params)
def pop_previous_form(): return web.Storage(web.ctx.session.pop('form', {}))
#coding=utf-8 import web, glob, sys, os from urllib import quote as _quote, unquote as _unquote import socket, struct from urlparse import urlparse config = web.Storage({ 'APP_ROOT_PATH': '/opt/zarkpy/', 'APP_PORT': 10000, # 程序运行的端口号,需与nginx配置的一致 'SESSION_PATH': '/opt/zarkpy/sessions/', 'COOKIE_EXPIRES': 24 * 3600, # cookie过期时间 'SESSION_EXPIRES': 24 * 3600, # session过期时间 'ERROR_LOG_PATH': '/opt/zarkpy/log/error.log', # 程序异常log 'FOOT_LOG_PATH': '', # 访问程序的log 'SECRET_KEY': 'zarkpy', # 程序密匙,每个新项目务必修改此key 'HOST_NAME': 'http://me.zarkpy.com', }) web.config.session_parameters['timeout'] = config.SESSION_EXPIRES web.config.session_parameters['secret_key'] = config.SECRET_KEY # 初始化一些重要变量 session = None page_render = None page_render_nobase = None def autoMkdir(path): path = path.rpartition('/')[0].strip() if path and not os.path.exists(path): print 'create dir:', path
#coding=utf-8 import web, glob, sys, os from urllib import quote as _quote, unquote as _unquote import socket, struct from urlparse import urlparse # 程序的配置表. 注意文件夹路径必须以/结束 config = web.Storage({ 'APP_ROOT_PATH': '/opt/zarkpy/', 'APP_PORT': 10000, # 程序运行的端口号,需与nginx配置的一致 'SESSION_PATH': '/opt/zarkpy/session/', # session存放路径 'COOKIE_EXPIRES': 24 * 3600, # cookie过期时间 'SESSION_EXPIRES': 24 * 3600, # session过期时间 # 程序异常log. 小心,如果有太多的error的话可能会导致写日志的死锁等待,导致程序响应慢 'ERROR_LOG_PATH': '/opt/zarkpy/log/error.log', 'FOOT_LOG_PATH': '', # 访问程序的log, 一般情况下可以不使用 'SECRET_KEY': 'zarkpy', # 程序密匙,每个新项目务必修改此key 'HOST_NAME': 'http://me.zarkpy.com', }) # 初始化一些重要变量 web.config.session_parameters['timeout'] = config.SESSION_EXPIRES web.config.session_parameters['secret_key'] = config.SECRET_KEY session = None page_render = None page_render_nobase = None def autoMkdir(path): path = path.rpartition('/')[0].strip() if path and not os.path.exists(path):
def _primary(columns): primary = web.Storage() for k, v in columns.iteritems(): if v.primary: primary[k] = v return primary
def get(self, fsid): retval = self.storage.get(self.prefix + str(fsid)) import web return web.Storage(json.loads(retval)) if retval else None
def _copyData(self, data): ret_data = web.Storage({}) for k in data.keys(): ret_data[k] = copy.copy(data[k]) return ret_data
def GET(self): urls = db.getAllHttpUrls() groups = db.g_groups params = web.Storage(locals()) return render.elink(params)
import imghdr # 程序的配置表. 注意文件夹路径必须以/结束 config = web.Storage({ 'APP_ROOT_PATH': '/opt/homework/', 'APP_PORT': 10120, # 程序运行的端口号,需与nginx配置的一致 'SESSION_PATH': '/opt/homework/session/', # session存放路径 'COOKIE_EXPIRES': 7 * 24 * 3600, # cookie过期时间 'SESSION_EXPIRES': 24 * 3600, # session过期时间 'DB_HOST': '127.0.0.1', # mysql数据库host 'DB_DATABASE': 'homework', # mysql数据库名称 'DB_USER': '******', # mysql数据库用户名 'DB_PASSWORD': '******', # mysql数据库连接密码 'DB_TIMEOUT': 800 * 3600, # 连接超时时间, 默认800小时 'DB_CHARSET': 'utf8', 'UPLOAD_IMAGE_PATH': '/opt/homework/web/img/upload/', # 上传图片存放目录 'UPLOAD_IMAGE_URL': '/img/upload/', # 访问上传图片的相对路径 'USER_IMAGE_PATH': '/opt/homework/web/img/user/userupload/', # 用户上传图片存放目录 'USER_IMAGE_URL': '/img/user/userupload/', # 访问用户上传图片的相对路径 # 程序异常log,小心,如果有太多的error的话可能会导致写日志的锁等待,导致程序响应慢 'ERROR_LOG_PATH': '/opt/homework/log/error.log', 'FOOT_LOG_PATH': '', # 访问log, 一般情况下可以不使用 'SECRET_KEY': 'homework', # 程序密匙,每个新项目务必修改此key 'HOST_NAME': 'http://me.homework.com', 'MAIL_SENDER': '*****@*****.**', # 邮件的默认发送者 'IS_TEST': False, # 是否正在测试,测试时会被修改为True 'MODIFY_TIME_LIMIT': 3600, # 发布内容后可修改时限 }) editor_config = web.Storage({ 'title': 'ZarkPy后台', # 显示在后台左上角的文字
"url": "%s/faq" % HOST_NOS }, ] } ] } wxcode = web.config.weixincode wxaccount = web.Storage({ "ORIGINAL_ID": 'gh_c450d6f36741', "APPID": 'wxaa70b76f1dcc6401', "APPSECRET": '3722f877c77ac618a127791e3eb34f6d', "TOKEN": 'dongyg_Aifetel', "ACCESSTOKEN": 'I8xEhdF0W98piBKGFWewDZ_51r2NzFwrRDd58x7_FaRXRTQhLga-1ZI3A8xebXSRXzijLSXzPSaNccF7Q7N_HbrwYh0BhoXVsR-WbKSqfyELLTaAAAZZH', "EXPIRES": 1481476841, "JSAPI_TICKET": "", "JSAPI_EXPIRES": 0, "WEBTOKEN": '', "WEBEXPIRES": 0, "MCH_ID": "", "WXPAY_KEY": "", "MENUS": json.dumps(MENUS, ensure_ascii=False) }) ################################################################################ #全局函数 def get_render(view, inpath): """获取指定view下的页面模板,inpath为模板页面路径;autoSuffix指示是否根据浏览器代理自动添加后缀""" kind, path = view._lookup(inpath) if path and kind in ('file', 'pyc'):
The 'policy' configuration parameter should be set to a properly initialized policy manager, a sub-class of adapt.policy.Policy. The 'policy_defaults' define the defaults settings passed to the policy implementation. """ import os import json import web __all__ = ['config', 'load_config', 'default_config_filename'] default_config_filename = '~/policyservice.conf' config = web.Storage() config.debug = False config.audit = False config.ssl = web.storify( dict(ssl_enabled=False, ssl_certificate="/path/to/ssl_certificate", ssl_private_key="/path/to/ssl_private_key")) config.policy = web.storify( dict(policy_class='adapt.greedy.Greedy', min_streams=0, initial_streams=8, update_incr_streams=8, max_streams=8, per_hosts_max_streams=36))
def _register_account(username, password): _accounts[username] = web.Storage(password=password) _save_session(username) return json.dumps(dict(code=200, message='register ok'))