예제 #1
0
    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
예제 #2
0
 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()
예제 #3
0
    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() == []
예제 #4
0
파일: __init__.py 프로젝트: insequor/webapp
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
예제 #5
0
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)
예제 #6
0
 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)
예제 #7
0
 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()]
예제 #8
0
    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
예제 #9
0
 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'))
예제 #10
0
    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
예제 #11
0
파일: account.py 프로젝트: waile23/todo
 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')})
예제 #12
0
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)
예제 #14
0
 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
예제 #15
0
    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
예제 #16
0
 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("&quot;",'"');
     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)
예제 #17
0
def storage(data={}):
    return web.Storage(data)
예제 #18
0
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
예제 #19
0
 def GET(self):
     urls = db.g_urls_map
     print(urls)
     params = web.Storage(locals())
     return render.index(params)
예제 #20
0
def pop_previous_form():
    return web.Storage(web.ctx.session.pop('form', {}))
예제 #21
0
파일: site_helper.py 프로젝트: npk/zarkpy
#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
예제 #22
0
#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):
예제 #23
0
 def _primary(columns):
     primary = web.Storage()
     for k, v in columns.iteritems():
         if v.primary:
             primary[k] = v
     return primary
예제 #24
0
 def get(self, fsid):
     retval = self.storage.get(self.prefix + str(fsid))
     import web
     return web.Storage(json.loads(retval)) if retval else None
예제 #25
0
파일: Model.py 프로젝트: afarfly/zarkpy
 def _copyData(self, data):
     ret_data = web.Storage({})
     for k in data.keys():
         ret_data[k] = copy.copy(data[k])
     return ret_data
예제 #26
0
 def GET(self):
     urls = db.getAllHttpUrls()
     groups = db.g_groups
     params = web.Storage(locals())
     return render.elink(params)
예제 #27
0
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后台',  # 显示在后台左上角的文字
예제 #28
0
                    "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'):
예제 #29
0
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))

예제 #30
0
파일: accounts2.py 프로젝트: zzl0/codesnip
def _register_account(username, password):
    _accounts[username] = web.Storage(password=password)
    _save_session(username)
    return json.dumps(dict(code=200, message='register ok'))