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))))
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)
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())
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))))
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)
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
def enablelist(key): return [b for a, b in config.items(key)]
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"
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
def check_config(): """Show the settings as Redash sees them (useful for debugging).""" for name, item in config.items(): print("{} = {}".format(name, item))
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()