Commit ec03c6d1 authored by 李宗熹's avatar 李宗熹

Merge remote-tracking branch 'origin/manage' into manage

parents 3e1f8b04 c08dd684
...@@ -99,7 +99,8 @@ tamp_diagnose_app_engine = create_engine( ...@@ -99,7 +99,8 @@ tamp_diagnose_app_engine = create_engine(
redis = redis.StrictRedis( redis = redis.StrictRedis(
host=config[env]['redis']['host'], host=config[env]['redis']['host'],
port=config[env]['redis']['port'], port=config[env]['redis']['port'],
db=config[env]['redis']['db'] db=config[env]['redis']['db'],
password=config[env]['redis']['password']
) )
logging.basicConfig(level=logging.INFO, logging.basicConfig(level=logging.INFO,
......
...@@ -13,7 +13,10 @@ dev: ...@@ -13,7 +13,10 @@ dev:
host: localhost host: localhost
port: 6379 port: 6379
db: 0 db: 0
password:
oss: oss:
imgs_url_prefix: https://devtamper.tanpuyun.com/hangjiapc/report/productionenv/ReportTempImg/
pdf_url_prefix: https://devtamper.tanpuyun.com/hangjiapc/report/productionenv/AppHoldReport/
account: LTAI4FzkGhAMecinBCKwuoUW account: LTAI4FzkGhAMecinBCKwuoUW
password: KJpPWg9U0kYO71yB41gqYbrFNJ4hso password: KJpPWg9U0kYO71yB41gqYbrFNJ4hso
log: log:
...@@ -35,9 +38,10 @@ test: ...@@ -35,9 +38,10 @@ test:
user: root user: root
password: '@imeng123' password: '@imeng123'
redis: redis:
host: localhost host: 118.190.63.109
port: 6379 port: 56379
db: 0 db: 0
password: 'qimeng123'
oss: oss:
imgs_url_prefix: https://testtamper.tanpuyun.com/hangjiapc/report/productionenv/ReportTempImg/ imgs_url_prefix: https://testtamper.tanpuyun.com/hangjiapc/report/productionenv/ReportTempImg/
pdf_url_prefix: https://testtamper.tanpuyun.com/hangjiapc/report/productionenv/AppHoldReport/ pdf_url_prefix: https://testtamper.tanpuyun.com/hangjiapc/report/productionenv/AppHoldReport/
...@@ -60,9 +64,10 @@ prod: ...@@ -60,9 +64,10 @@ prod:
user: tamp_fund user: tamp_fund
password: '@imeng408' password: '@imeng408'
redis: redis:
host: localhost host: r-uf6atruhdbq89enqz0.redis.rds.aliyuncs.com
port: 6379 port: 6379
db: 0 db: 0
password: '@imeng123'
oss: oss:
imgs_url_prefix: https://tamper.tanpuyun.com/hangjiapc/report/productionenv/ReportTempImg/ imgs_url_prefix: https://tamper.tanpuyun.com/hangjiapc/report/productionenv/ReportTempImg/
pdf_url_prefix: https://tamper.tanpuyun.com/hangjiapc/report/productionenv/AppHoldReport/ pdf_url_prefix: https://tamper.tanpuyun.com/hangjiapc/report/productionenv/AppHoldReport/
......
...@@ -95,9 +95,6 @@ diagnose_default_template = { ...@@ -95,9 +95,6 @@ diagnose_default_template = {
'box8': 'block', 'box8': 'block',
'cover_title1': '资产', 'cover_title1': '资产',
'cover_title2': '存续报告', 'cover_title2': '存续报告',
'logo': '',
'cover_back': '',
'scene': '',
'logo': template_folder + 'logo.png', 'logo': template_folder + 'logo.png',
'brand_name': '小飞象', 'brand_name': '小飞象',
'logo_display': 'block', 'logo_display': 'block',
...@@ -569,7 +566,7 @@ diagnose_default_data = { ...@@ -569,7 +566,7 @@ diagnose_default_data = {
"sharpe": 0.28 "sharpe": 0.28
} }
], ],
"new_group_evaluation": "建议赎回丹羿步步高德兴1号,增配申毅全天候2号后,整体组合波动率大幅降低,最大回撤从5.75%降到不足0.38%。", "new_group_evaluation": ["建议赎回丹羿步步高德兴1号,增配申毅全天候2号后,整体组合波动率大幅降低,最大回撤从5.75%降到不足0.38%。"],
"old_evaluation": [ "old_evaluation": [
"1、组合构建于2020年7月,至今已运行5个月。投入成本为160.0万元,截止2020年12月31日,整体盈利24.46万元,整体表现<span class=\"self_description_red\">良好</span>,回撤控制能力<span class=\"self_description_red\">良好</span>;\n", "1、组合构建于2020年7月,至今已运行5个月。投入成本为160.0万元,截止2020年12月31日,整体盈利24.46万元,整体表现<span class=\"self_description_red\">良好</span>,回撤控制能力<span class=\"self_description_red\">良好</span>;\n",
"2、组合共持有1只基金,1只基金取得正收益,1只基金综合得分较低建议更换;\n", "2、组合共持有1只基金,1只基金取得正收益,1只基金综合得分较低建议更换;\n",
...@@ -6,32 +6,28 @@ ...@@ -6,32 +6,28 @@
# @Email : acepengxiong@163.com # @Email : acepengxiong@163.com
# @Software : PyCharm # @Software : PyCharm
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
from flask import request from flask import request, g
from flask_restful import Resource, reqparse from flask_restful import Resource, reqparse
from app.api.engine import redis from app.api.engine import redis
from app.service.customer import get_customer_list from app.service.customer import get_customer_list
from app.utils.auth import login_require
class CustomerList(Resource): class CustomerList(Resource):
"""""" """"""
def __init__(self): def __init__(self):
""".""" """."""
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token)
if not ifa_id:
return {"code":'9005', "message": "请登录", "attributes": []}
self.ifa_id = ifa_id.decode().replace('\'', '')
self.parser = reqparse.RequestParser() self.parser = reqparse.RequestParser()
@login_require
def get(self): def get(self):
"""获取客户列表分页数据.""" """获取客户列表分页数据."""
self.parser.add_argument('name', type=str, required=False, help='客户名') self.parser.add_argument('name', type=str, required=False, help='客户名')
self.parser.add_argument('pageNumber', type=int, required=True) self.parser.add_argument('pageNumber', type=int, required=True)
self.parser.add_argument('pageSize', type=int, required=True) self.parser.add_argument('pageSize', type=int, required=True)
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
data = get_customer_list(args) data = get_customer_list(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
......
...@@ -13,16 +13,14 @@ import uuid ...@@ -13,16 +13,14 @@ import uuid
import oss2 import oss2
from flask_restful import Resource, reqparse from flask_restful import Resource, reqparse
from flask import request, render_template from flask import request, render_template, g
from flask import make_response from flask import make_response
from app.api.engine import config from app.api.engine import config
from app.service.report_service import get_report_list, delete_report, get_one_report, edit_report, make_report from app.service.report_service import get_report_list, delete_report, get_one_report, edit_report, make_report
from app.service.template_manage_service import get_make_report_data from app.service.template_manage_service import get_make_report_data
from app.utils.auth import login_require
from app.utils.format_transfer import npEncoder from app.utils.format_transfer import npEncoder
from app.utils.html_to_pdf import html_to_pdf
from app.api.engine import pdf_folder, redis, env, TAMP_SQL, tamp_diagnose_app_engine
from app.utils.jinjia2html_v2 import DataIntegrate
class ReportHandlers(Resource): class ReportHandlers(Resource):
...@@ -30,20 +28,15 @@ class ReportHandlers(Resource): ...@@ -30,20 +28,15 @@ class ReportHandlers(Resource):
def __init__(self): def __init__(self):
""".""" """."""
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token)
if not ifa_id:
return {"code": '9005', "message": "请登录", "attributes": []}
self.ifa_id = ifa_id.decode().replace('\'', '')
self.parser = reqparse.RequestParser() self.parser = reqparse.RequestParser()
@login_require
def get(self): def get(self):
"""获取新建报告数据.""" """获取新建报告数据."""
self.parser.add_argument('id', type=str, required=True, help='模版id不能为空') self.parser.add_argument('id', type=str, required=True, help='模版id不能为空')
self.parser.add_argument('customer_id', type=str, required=True, help='customer_id不能为空') self.parser.add_argument('customer_id', type=str, required=True, help='customer_id不能为空')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
data = get_make_report_data(args) data = get_make_report_data(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -52,6 +45,7 @@ class ReportHandlers(Resource): ...@@ -52,6 +45,7 @@ class ReportHandlers(Resource):
} }
return json.dumps(resp, cls=npEncoder, ensure_ascii=False) return json.dumps(resp, cls=npEncoder, ensure_ascii=False)
@login_require
def post(self): def post(self):
"""保存报告.""" """保存报告."""
self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告') self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告')
...@@ -59,7 +53,7 @@ class ReportHandlers(Resource): ...@@ -59,7 +53,7 @@ class ReportHandlers(Resource):
self.parser.add_argument('customer_id', type=str, required=True, help='customer_id不能为空') self.parser.add_argument('customer_id', type=str, required=True, help='customer_id不能为空')
self.parser.add_argument('report_data', type=str, required=True, help='report_data不能为空') self.parser.add_argument('report_data', type=str, required=True, help='report_data不能为空')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
make_report(args) make_report(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -68,11 +62,12 @@ class ReportHandlers(Resource): ...@@ -68,11 +62,12 @@ class ReportHandlers(Resource):
} }
return resp return resp
@login_require
def put(self, id): def put(self, id):
""".""" """."""
pass pass
@login_require
def delete(self, id): def delete(self, id):
""".""" """."""
pass pass
...@@ -83,14 +78,9 @@ class ReportList(Resource): ...@@ -83,14 +78,9 @@ class ReportList(Resource):
def __init__(self): def __init__(self):
""".""" """."""
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token)
if not ifa_id:
return {"code": '9005', "message": "请登录", "attributes": []}
self.ifa_id = ifa_id.decode().replace('\'', '')
self.parser = reqparse.RequestParser() self.parser = reqparse.RequestParser()
@login_require
def get(self): def get(self):
"""获取我的报告列表.""" """获取我的报告列表."""
self.parser.add_argument('type', type=int, required=True, help='0为全部1为持仓报告2为诊断报告3周期报告') self.parser.add_argument('type', type=int, required=True, help='0为全部1为持仓报告2为诊断报告3周期报告')
...@@ -100,7 +90,7 @@ class ReportList(Resource): ...@@ -100,7 +90,7 @@ class ReportList(Resource):
self.parser.add_argument('start_time', type=str, required=False) self.parser.add_argument('start_time', type=str, required=False)
self.parser.add_argument('end_time', type=str, required=False) self.parser.add_argument('end_time', type=str, required=False)
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
data = get_report_list(args) data = get_report_list(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -109,17 +99,19 @@ class ReportList(Resource): ...@@ -109,17 +99,19 @@ class ReportList(Resource):
} }
return resp return resp
@login_require
def post(self): def post(self):
"""保存报告.""" """保存报告."""
pass pass
@login_require
def put(self): def put(self):
"""编辑报告.""" """编辑报告."""
self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告') self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告')
self.parser.add_argument('id', type=int, required=True, help='报告id不能为空') self.parser.add_argument('id', type=int, required=True, help='报告id不能为空')
self.parser.add_argument('report_data', type=str, required=True, help='报告数据不能为空') self.parser.add_argument('report_data', type=str, required=True, help='报告数据不能为空')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
data = edit_report(args) data = edit_report(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -128,13 +120,13 @@ class ReportList(Resource): ...@@ -128,13 +120,13 @@ class ReportList(Resource):
} }
return resp return resp
@login_require
def delete(self): def delete(self):
""".""" """."""
self.parser.add_argument('type', type=int, required=True, help='0为全部1为持仓报告2为诊断报告3周期报告') self.parser.add_argument('type', type=int, required=True, help='0为全部1为持仓报告2为诊断报告3周期报告')
self.parser.add_argument('id', type=int, required=True, help='报告id不能为空') self.parser.add_argument('id', type=int, required=True, help='报告id不能为空')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
delete_report(args) delete_report(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -149,20 +141,15 @@ class FindReport(Resource): ...@@ -149,20 +141,15 @@ class FindReport(Resource):
def __init__(self): def __init__(self):
""".""" """."""
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token)
if not ifa_id:
return {"code": '9005', "message": "请登录", "attributes": []}
self.ifa_id = ifa_id.decode().replace('\'', '')
self.parser = reqparse.RequestParser() self.parser = reqparse.RequestParser()
@login_require
def get(self): def get(self):
"""获取单个报告.""" """获取单个报告."""
self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告') self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告')
self.parser.add_argument('id', type=str, required=False, help='') self.parser.add_argument('id', type=str, required=False, help='')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
data = get_one_report(args) data = get_one_report(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
......
...@@ -9,13 +9,14 @@ ...@@ -9,13 +9,14 @@
import json import json
from flask_restful import Resource, reqparse from flask_restful import Resource, reqparse
from flask import request from flask import request, g
from app.api.engine import redis from app.api.engine import redis
from app.config.default_template_params import hold_default_template, hold_default_data, diagnose_default_data, \ from app.config.default_template_params import hold_default_template, hold_default_data, diagnose_default_data, \
diagnose_default_template diagnose_default_template
from app.service.template_manage_service import add_template, update_template, delete_template, get_template_list, \ from app.service.template_manage_service import add_template, update_template, delete_template, get_template_list, \
get_default_template, set_default_template get_default_template, set_default_template
from app.utils.auth import login_require
from app.utils.format_transfer import npEncoder from app.utils.format_transfer import npEncoder
from flask import jsonify from flask import jsonify
from app.utils.jinjia2html_v2 import DataIntegrate from app.utils.jinjia2html_v2 import DataIntegrate
...@@ -27,19 +28,14 @@ class TemplateManage(Resource): ...@@ -27,19 +28,14 @@ class TemplateManage(Resource):
def __init__(self): def __init__(self):
""".""" """."""
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token)
if not ifa_id:
return {"code":'9005', "message": "请登录", "attributes": []}
self.ifa_id = ifa_id.decode().replace('\'', '')
self.parser = reqparse.RequestParser() self.parser = reqparse.RequestParser()
@login_require
def get(self): def get(self):
"""获取默认模版数据.""" """获取默认模版数据."""
self.parser.add_argument('type', type=int, required=True, help='type不能为空') self.parser.add_argument('type', type=int, required=True, help='type不能为空')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
data = get_default_template(args) data = get_default_template(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -48,14 +44,14 @@ class TemplateManage(Resource): ...@@ -48,14 +44,14 @@ class TemplateManage(Resource):
} }
return json.dumps(resp, cls=npEncoder, ensure_ascii=False) return json.dumps(resp, cls=npEncoder, ensure_ascii=False)
@login_require
def post(self): def post(self):
"""新建定义模版.""" """新建定义模版."""
self.parser.add_argument('name', type=str, required=True, help='模版名称不能为空') self.parser.add_argument('name', type=str, required=True, help='模版名称不能为空')
self.parser.add_argument('custom_template', type=str, required=True, help='模版数据不能为空') self.parser.add_argument('custom_template', type=str, required=True, help='模版数据不能为空')
self.parser.add_argument('type', type=int, required=True, help='模版类型不能为空') self.parser.add_argument('type', type=int, required=True, help='模版类型不能为空')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
add_template(args) add_template(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -64,12 +60,13 @@ class TemplateManage(Resource): ...@@ -64,12 +60,13 @@ class TemplateManage(Resource):
} }
return resp return resp
@login_require
def put(self): def put(self):
"""更新模版.""" """更新模版."""
self.parser.add_argument('id', type=str, required=True, help='模版id') self.parser.add_argument('id', type=str, required=True, help='模版id')
self.parser.add_argument('template_data', type=str, required=False, help='模版数据') self.parser.add_argument('template_data', type=str, required=False, help='模版数据')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
update_template(args) update_template(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -78,11 +75,12 @@ class TemplateManage(Resource): ...@@ -78,11 +75,12 @@ class TemplateManage(Resource):
} }
return resp return resp
@login_require
def delete(self): def delete(self):
"""删除模版.""" """删除模版."""
self.parser.add_argument('id', type=str, required=True, help='模版id') self.parser.add_argument('id', type=str, required=True, help='模版id')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
res = delete_template(args) res = delete_template(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -103,14 +101,9 @@ class TemplateList(Resource): ...@@ -103,14 +101,9 @@ class TemplateList(Resource):
def __init__(self): def __init__(self):
""".""" """."""
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token)
if not ifa_id:
return {"code":'9005', "message": "请登录", "attributes": []}
self.ifa_id = ifa_id.decode().replace('\'', '')
self.parser = reqparse.RequestParser() self.parser = reqparse.RequestParser()
@login_require
def get(self): def get(self):
"""获取模版列表分页数据.""" """获取模版列表分页数据."""
self.parser.add_argument('type', type=int, required=True, help='0为全部1为持仓报告2为诊断报告') self.parser.add_argument('type', type=int, required=True, help='0为全部1为持仓报告2为诊断报告')
...@@ -118,7 +111,7 @@ class TemplateList(Resource): ...@@ -118,7 +111,7 @@ class TemplateList(Resource):
self.parser.add_argument('pageNumber', type=int, required=True) self.parser.add_argument('pageNumber', type=int, required=True)
self.parser.add_argument('pageSize', type=int, required=True) self.parser.add_argument('pageSize', type=int, required=True)
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
data = get_template_list(args) data = get_template_list(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
...@@ -127,11 +120,12 @@ class TemplateList(Resource): ...@@ -127,11 +120,12 @@ class TemplateList(Resource):
} }
return resp return resp
@login_require
def put(self): def put(self):
"""设置默认模版""" """设置默认模版"""
self.parser.add_argument('id', type=str, required=True, help='模版id') self.parser.add_argument('id', type=str, required=True, help='模版id')
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = self.ifa_id args['ifa_id'] = g.ifa_id
data = set_default_template(args) data = set_default_template(args)
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
......
...@@ -96,7 +96,10 @@ class FundReportManange(Base, BaseModel): ...@@ -96,7 +96,10 @@ class FundReportManange(Base, BaseModel):
tamp_user_session = tamp_user.session tamp_user_session = tamp_user.session
sql = "select ui_username_mp from user_info where id = '{}'".format(self.ifa_id) sql = "select ui_username_mp from user_info where id = '{}'".format(self.ifa_id)
res = tamp_user_session.execute(sql) res = tamp_user_session.execute(sql)
data['author_name'] = res.fetchone()[0] if res:
data['author_name'] = res.fetchone()[0]
else:
data['author_name'] = ''
if self.default_template: if self.default_template:
data['sys_default'] = 1 data['sys_default'] = 1
else: else:
......
...@@ -11,9 +11,6 @@ import json ...@@ -11,9 +11,6 @@ import json
import time import time
import uuid import uuid
import oss2
from ftfy import fix_text
from sqlalchemy import and_ from sqlalchemy import and_
from app.api.engine import TAMP_SQL, tamp_diagnose_app_engine, config, env from app.api.engine import TAMP_SQL, tamp_diagnose_app_engine, config, env
......
...@@ -934,13 +934,13 @@ ...@@ -934,13 +934,13 @@
<!-- 封面 --> <!-- 封面 -->
<div class="box0 clearfix"> <div class="box0 clearfix">
<div class="cover_head dtable"> <div class="cover_head dtable">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="cover_logo"> <img src={{logo}} alt="" class="cover_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="cover_line"></div> <div class="cover_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="cover_text"> <div class="cover_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1017,13 +1017,13 @@ ...@@ -1017,13 +1017,13 @@
投资总览 投资总览
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1298,13 +1298,13 @@ ...@@ -1298,13 +1298,13 @@
{%endif%} {%endif%}
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1524,13 +1524,13 @@ ...@@ -1524,13 +1524,13 @@
业绩的明细 业绩的明细
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1661,13 +1661,13 @@ ...@@ -1661,13 +1661,13 @@
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1696,13 +1696,13 @@ ...@@ -1696,13 +1696,13 @@
个基点评 个基点评
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1719,13 +1719,13 @@ ...@@ -1719,13 +1719,13 @@
<div class="page_title dcell"> <div class="page_title dcell">
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1779,13 +1779,13 @@ ...@@ -1779,13 +1779,13 @@
<div class="page_title dcell"> <div class="page_title dcell">
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1823,13 +1823,13 @@ ...@@ -1823,13 +1823,13 @@
优化组合建议 优化组合建议
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -1920,13 +1920,13 @@ ...@@ -1920,13 +1920,13 @@
<div class="page_title dcell"> <div class="page_title dcell">
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -2065,13 +2065,13 @@ ...@@ -2065,13 +2065,13 @@
新增基金 新增基金
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -2089,13 +2089,13 @@ ...@@ -2089,13 +2089,13 @@
<div class="page_title dcell"> <div class="page_title dcell">
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
...@@ -2146,13 +2146,15 @@ ...@@ -2146,13 +2146,15 @@
<div class="comment_tri"></div> <div class="comment_tri"></div>
</div> </div>
<div class="comment_content"> <div class="comment_content">
{% for item in group_result["new_group_evaluation"] %}
<div class="comment_item"> <div class="comment_item">
<div class="comment_dot"></div> <div class="comment_dot"></div>
<div class="comment_text"> <div class="comment_text">
{{group_result["new_group_evaluation"]}} {{item}}
</div> </div>
</div> </div>
</div> </div>
{%endfor%}
</div> </div>
</div> </div>
...@@ -2167,13 +2169,13 @@ ...@@ -2167,13 +2169,13 @@
<div class="page_title dcell"> <div class="page_title dcell">
</div> </div>
<div class="page_head dcell"> <div class="page_head dcell">
<div class="dcell"> <div class="dcell" style="display: {{logo_display}}">
<img src={{logo}} alt="" class="page_logo"> <img src={{logo}} alt="" class="page_logo">
</div> </div>
<div class="dcell"> <div class="dcell">
<div class="page_line"></div> <div class="page_line"></div>
</div> </div>
<div class="dcell"> <div class="dcell" style="display: {{brand_name_display}}">
<div class="page_text"> <div class="page_text">
{{brand_name}}<br> {{brand_name}}<br>
工作室 工作室
......
# -*- encoding: utf-8 -*- # -*- encoding: utf-8 -*-
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# @File Name : __init__.py.py # @File Name : auth.py
# @Time : 2021/1/15 上午10:20 # @Time : 2021/1/15 下午4:54
# @Author : X. Peng # @Author : X. Peng
# @Email : acepengxiong@163.com # @Email : acepengxiong@163.com
# @Software : PyCharm # @Software : PyCharm
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
from flask import request, g
from app.api.engine import redis
def login_require(func):
def auth(*args, **kwargs):
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token)
if not ifa_id:
return {"code": '9005', "message": "请登录", "attributes": []}
g.ifa_id = ifa_id.decode().replace('\'', '')
return func(*args, **kwargs)
return auth
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment