Ejemplo n.º 1
0
def applyconfig(key, changelist):
    #当前设置
    old = config.items(key)

    #修改第i个模块的设置
    def func(i):
        if old[i][1] != changelist[i].capitalize():
            #修改设置
            config.set(key, old[i][0], changelist[i].capitalize())
            #保存到设置文件
            config.write(open('config.ini', 'w'))

    #应用于所有模块
    list(map(func, range(len(old))))
Ejemplo n.º 2
0
    def _run(self, args, config):
        ''' Main entry point. '''

        try:
            solr_url = config.get('solr', 'url').rstrip('/') + '/'
            solr = scorched.SolrInterface(solr_url)
        except:
            raise cli.CliError('Unable to connect to solr: %s' % solr_url)

        if args.action in ('add', 'add-all'):
            database_config = dict(config.items('database'))
            db = app.database.get_engine(database_config)
            if args.stubs == 1:
                profile_stubs = True
            else:
                profile_stubs = False

            if args.action == 'add':
                self.add_models(db, solr, args.models.split(','),
                                profile_stubs)
            else:
                self.add_models(db, solr, profile_stubs=profile_stubs)

            solr.optimize()
            self._logger.info("Added requested documents and optimized index.")

        elif args.action in ('delete', 'delete-all'):
            if args.action == 'delete':
                self.delete_models(solr, args.models.split(','))
            else:
                solr.delete_all()

            solr.optimize()
            self._logger.info("Deleted requested documents and optimized "
                              "index.")

        elif args.action == 'optimize':
            solr.optimize()
            self._logger.info("Optimized index.")

        elif args.action == 'schema':
            schema_url = urljoin(solr_url, 'schema')
            self.schema(schema_url)
Ejemplo n.º 3
0
def email_person(subject, text_content, html_content=None):
    global config, person

    send_email = config['Sendgrid']['SendAs']
    send_name = config['General']['EmailSendName']
    mail = Mail()
    mail.from_email = Email(send_email, send_name)
    mail.subject = subject

    personalization = Personalization()
    for email in (y for (_, y) in config.items('Emails') if y):
        personalization.add_to(Email(email, email))
    mail.add_personalization(personalization)

    mail.add_content(Content("text/plain", text_content))
    if html_content:
        mail.add_content(Content("text/html", html_content))

    response = sg.client.mail.send.post(request_body=mail.get())
Ejemplo n.º 4
0
def infolist(key):
    #模块名称列表
    applist = [i.capitalize() for i, j in config.items(key)]
    #每个模块的属性
    propertylist = ["Name", "Vision", "Description", "Index"]

    #闭包函数 x为模块名称 y为属性名称
    def func_1(x):
        def func_2(y):
            return config.get(x, y)

        return func_2

    #返回第i个模块的属性列表
    def func_3(i):
        func = func_1(applist[i])
        return list(map(func, propertylist))

    #返回模块属性信息
    return list(map(func_3, range(len(applist))))
Ejemplo n.º 5
0
    def _run(self, args, config):
        """ Main entry point. """

        try:
            solr_url = config.get("solr", "url").rstrip("/") + "/"
            solr = scorched.SolrInterface(solr_url)
        except:
            raise cli.CliError("Unable to connect to solr: %s" % solr_url)

        if args.action in ("add", "add-all"):
            database_config = dict(config.items("database"))
            db = app.database.get_engine(database_config)

            if args.action == "add":
                self.add_models(db, solr, args.models.split(","))
            else:
                self.add_models(db, solr)

            solr.optimize()
            self._logger.info("Added requested documents and optimized index.")

        elif args.action in ("delete", "delete-all"):
            if args.action == "delete":
                self.delete_models(solr, args.models.split(","))
            else:
                solr.delete_all()

            solr.optimize()
            self._logger.info("Deleted requested documents and optimized index.")

        elif args.action == "optimize":
            solr.optimize()
            self._logger.info("Optimized index.")

        elif args.action == "schema":
            schema_url = urljoin(solr_url, "schema")
            self.schema(schema_url)
Ejemplo n.º 6
0
def init_flask(flask_app, config):
    """ Initialize Flask configuration and hooks. """

    config_dict = dict(config.items('flask'))

    # Try to convert numeric arguments to integers.
    for k, v in config_dict.items():
        try:
            config_dict[k] = int(v)
        except:
            pass

    flask_app.config.update(**config_dict)

    # Disable caching for static assets in debug mode, otherwise
    # many Angular templates will be stale when refreshing pages.
    if flask_app.debug:
        flask_app.config["SEND_FILE_MAX_AGE_DEFAULT"] = 0

    db_engine = app.database.get_engine(dict(config.items('database')))
    redis = app.database.get_redis(dict(config.items('redis')))
    remove_unused_queues(redis)
    init_queues(redis)

    signer = Signer(config.get('flask', 'SECRET_KEY'))
    sign_fn = lambda s: signer.sign(str(s).encode('utf8')).decode('utf-8')
    unsign_fn = signer.unsign

    @flask_app.after_request
    def after_request(response):
        ''' Clean up request context. '''

        g.db.close()

        return response

    if flask_app.latency is not None:

        @flask_app.before_request
        def api_latency():
            if request.path[:5] == '/api/':
                time.sleep(flask_app.latency)

    @flask_app.before_request
    def before_request():
        ''' Initialize request context. '''

        g.config = config
        g.debug = flask_app.debug
        g.db = app.database.get_session(db_engine)
        g.redis = redis
        g.sign = sign_fn
        g.unsign = unsign_fn

    @flask_app.url_defaults
    def static_asset_cache_busting(endpoint, values):
        if endpoint == 'static' and 'filename' in values:
            filename = values['filename']
            if filename.startswith('img') or \
               filename.startswith('fonts'):

                values['version'] = flask_app.config['VERSION']

    if flask_app.debug:
        flask_app.config["SEND_FILE_MAX_AGE_DEFAULT"] = 0
Ejemplo n.º 7
0
def enablelist(key):
    return [b for a, b in config.items(key)]
Ejemplo n.º 8
0
def wechatindex():
    # 判断请求方式是GET请求
    if request.method == "GET":

        #从config.ini中读取token
        for i in config.items("Wechat"):
            if i[0] == 'token':
                token = i[1]
        print(token)

        my_signature = request.args.get('signature')  # 获取携带的signature参数
        my_timestamp = request.args.get('timestamp')  # 获取携带的timestamp参数
        my_nonce = request.args.get('nonce')  # 获取携带的nonce参数
        my_echostr = request.args.get('echostr')  # 获取携带的echostr参数

        # 进行字典排序
        data = [token, my_timestamp, my_nonce]
        data.sort()

        # 拼接成字符串
        temp = ''.join(data)

        # 进行sha1加密
        mysignature = hashlib.sha1(temp.encode("utf8")).hexdigest()

        # 加密后的字符串可与signature对比,标识该请求来源于微信
        if my_signature == mysignature:
            return my_echostr

    if request.method == "POST":
        #接受微信消息
        xmlcontent = request.get_data('content')
        print(xmlcontent)
        #解析XML
        root = ET.fromstring(xmlcontent)

        #接收文本消息
        #范例:
        #<xml>
        #  <ToUserName>
        #    < ![CDATA[toUser] ]>
        #  </ToUserName>
        #  <FromUserName>
        #    < ![CDATA[fromUser] ]>
        #  </FromUserName>
        #  <CreateTime>
        #    1348831860
        #  </CreateTime>
        #  <MsgType>
        #    < ![CDATA[text] ]>
        #  </MsgType>
        #  <Content>
        #    < ![CDATA[this is a test] ]>
        #  </Content>
        #  <MsgId>
        #   1234567890123456
        #  </MsgId>
        #</xml>
        #参数            描述
        #ToUserName     开发者微信号
        #FromUserName   发送方帐号(一个OpenID)
        #CreateTime     消息创建时间 (整型)
        #MsgType        text
        #Content        文本消息内容
        #MsgId          消息id,64位整型

        receive = {}
        for i in root:
            receive[i.tag] = i.text
        if receive['Content'] == "你好":
            fb_content = feedback_message(receive['FromUserName'],
                                          receive['ToUserName'], "你好呀~")
            return fb_content
        if receive['Content'] == "测试课件":
            fb_content = feedback_message(
                receive['FromUserName'], receive['ToUserName'],
                "http://mantels.top/wechatcoursewares/id/2/chapter/1/lesson/1")
            return fb_content
        return "success"
Ejemplo n.º 9
0
def init_flask(flask_app, config):
    """ Initialize Flask configuration and hooks. """

    config_dict = dict(config.items('flask'))

    # Try to convert numeric arguments to integers.
    for k, v in config_dict.items():
        try:
            config_dict[k] = int(v)
        except:
            pass

    flask_app.config.update(**config_dict)

    # Disable caching for static assets in debug mode, otherwise
    # many Angular templates will be stale when refreshing pages.
    if flask_app.debug:
        flask_app.config["SEND_FILE_MAX_AGE_DEFAULT"] = 0

    db_engine = app.database.get_engine(dict(config.items('database')))
    redis = app.database.get_redis(dict(config.items('redis')))
    solr = app.database.get_solr(dict(config.items('solr')))

    signer = Signer(config.get('flask', 'SECRET_KEY'))
    sign_fn = lambda s: signer.sign(str(s).encode('utf8')).decode('utf-8')
    unsign_fn = signer.unsign

    @flask_app.after_request
    def after_request(response):
        ''' Clean up request context. '''

        g.db.close()

        return response

    if flask_app.latency is not None:
        @flask_app.before_request
        def api_latency():
            if request.path[:5] == '/api/':
                time.sleep(flask_app.latency)

    @flask_app.before_request
    def before_request():
        ''' Initialize request context. '''

        g.config = config
        g.debug = flask_app.debug
        g.db = app.database.get_session(db_engine)
        g.redis = redis
        g.solr = solr
        g.sign = sign_fn
        g.unsign = unsign_fn

    @flask_app.url_defaults
    def static_asset_cache_busting(endpoint, values):
        if endpoint == 'static' and 'filename' in values:
            filename = values['filename']
            if filename.startswith('img') or \
               filename.startswith('fonts'):

                values['version'] = flask_app.config['VERSION']

    if flask_app.debug:
        flask_app.config["SEND_FILE_MAX_AGE_DEFAULT"] = 0
Ejemplo n.º 10
0
def check_config():
    """Show the settings as Redash sees them (useful for debugging)."""
    for name, item in config.items():
        print("{} = {}".format(name, item))
Ejemplo n.º 11
0
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
from app import config
import smtplib


def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))


for i in config.items("Mail"):
    if i[0] == 'from':
        from_addr = i[1]
    if i[0] == 'password':
        password = i[1]
    if i[0] == 'smtp':
        smtp_server = i[1]


def send_email(to_addr, title, p):
    msg = MIMEText(
        '<p>' + p +
        '</p><hr> <p>请勿回复此邮件,如果对邮件内容有疑问,请邮件咨询。<br>客服:<br>[email protected]<br>开发:<br>[email protected]<br>[email protected]</p>',
        'html', 'utf-8')
    msg['From'] = _format_addr('Mantels公告 <%s>' % from_addr)
    msg['To'] = _format_addr('用户 <%s>' % to_addr)
    msg['Subject'] = Header(title, 'utf-8').encode()