|
@@ -71,7 +71,7 @@ def add_model(cls,**kwargs):
|
|
|
for i,lst in enumerate(split_list_by_n(survey_name,10)):
|
|
|
name = "".join(lst)
|
|
|
if name:
|
|
|
- addText(img,survey_bg,name,survey_img_file,(260,235+(i+1)*60),58)
|
|
|
+ addText(img,survey_bg,name,survey_img_file,(200,235+(i+1)*80),72)
|
|
|
#
|
|
|
url = os.path.join(settings.HOST,"survey/answer.html?id={}&type={}".format(obj.id,obj.type))
|
|
|
print url,99999
|
|
@@ -93,20 +93,54 @@ def update_model(cls,**kwargs):
|
|
|
model = getattr(cm,model_name)
|
|
|
id = kwargs.pop("id")
|
|
|
rst = model.objects.filter(id=id).update(**kwargs)
|
|
|
+ if model_name == "Message":
|
|
|
+ obj = model.objects.filter(id=id).first()
|
|
|
+ root = settings.STATIC_ROOT
|
|
|
+ survey_bg = os.path.join(root,"survey_bg.jpg")
|
|
|
+ survey_img_file = os.path.join(root,"upload/survey_bg_{}.jpg".format(obj.id))
|
|
|
+ img = Image.open(survey_bg)
|
|
|
+ survey_name = obj.name
|
|
|
+ for i,lst in enumerate(split_list_by_n(survey_name,10)):
|
|
|
+ name = "".join(lst)
|
|
|
+ if name:
|
|
|
+ addText(img,survey_bg,name,survey_img_file,(200,235+(i+1)*80),72)
|
|
|
+ #
|
|
|
+ url = os.path.join(settings.HOST,"survey/answer.html?id={}&type={}".format(obj.id,obj.type))
|
|
|
+ print url,99999
|
|
|
+ tmp_qrcode = "/tmp/survey_qrcode_{}.png".format(obj.id)
|
|
|
+ gen_general_qrcode_img(url,tmp_qrcode)
|
|
|
+ rawimg = Image.open(survey_img_file)
|
|
|
+ im = Image.open(tmp_qrcode)
|
|
|
+ rawimg.paste(im,(330,840))
|
|
|
+ rawimg.save(survey_img_file)
|
|
|
+ template_qrcode = os.path.join(settings.HOST,"upload/survey_bg_{}.jpg?t={}".format(obj.id,str(time.time())))
|
|
|
+ print template_qrcode,99999999999999999999
|
|
|
+ obj.template_qrcode = template_qrcode
|
|
|
+ obj.save()
|
|
|
return rst
|
|
|
|
|
|
+
|
|
|
+def update_status(cls,**kwargs):
|
|
|
+ """
|
|
|
+ """
|
|
|
+ model_name = re.search(r'.*\.(\w+)View',str(cls.__class__)).groups()[0]
|
|
|
+ model_name = model_name.replace("Status","")
|
|
|
+ model = getattr(cm,model_name)
|
|
|
+ id = kwargs.pop("id")
|
|
|
+ status = 1-model.objects.filter(id=id).first().status
|
|
|
+ rst = model.objects.filter(id=id).update(status=status)
|
|
|
+ return status
|
|
|
+
|
|
|
def delete_model(cls,**kwargs):
|
|
|
"""
|
|
|
"""
|
|
|
model_name = re.search(r'.*\.(\w+)View',str(cls.__class__)).groups()[0]
|
|
|
model = getattr(cm,model_name)
|
|
|
ids = str(kwargs.get("id")).split(",")
|
|
|
- if model_name in ["Template","Message"]:
|
|
|
- rst = model.objects.filter(id__in=ids).delete()
|
|
|
- if model_name == "Template":
|
|
|
- cm.Message.objects.filter(template_id__in=ids).delete()
|
|
|
- else:
|
|
|
- rst = model.objects.filter(id__in=ids).update(status=0)
|
|
|
+
|
|
|
+ rst = model.objects.filter(id__in=ids).delete()
|
|
|
+ if model_name == "Template":
|
|
|
+ cm.Message.objects.filter(template_id__in=ids).delete()
|
|
|
return ids
|
|
|
|
|
|
def delete_model_actual(cls,**kwargs):
|
|
@@ -124,14 +158,31 @@ def get_detail_info(cls,**kwargs):
|
|
|
model_name = re.search(r'.*\.(\w+)View',str(cls.__class__)).groups()[0]
|
|
|
model = getattr(cm,model_name)
|
|
|
id = kwargs.get("id")
|
|
|
+ cid = kwargs.get("cid")
|
|
|
rst = list(model.objects.filter(id=id).values())
|
|
|
rst = rst[0] if rst else {}
|
|
|
if model_name == "Message":
|
|
|
if rst.get("template_id"):
|
|
|
tpl = cm.Template.objects.filter(id=rst.get("template_id")).values()
|
|
|
tpl = tpl[0] if tpl else {}
|
|
|
- rst["widget"] = json.loads(tpl["widget"]) if tpl else []
|
|
|
+ widget = json.loads(tpl["widget"]) if tpl else []
|
|
|
+ #已填报则获取填报结果
|
|
|
+ if cm.MessageSurveyResult.objects.filter(message_id=id).exists():
|
|
|
+ rst["edit"] = 1
|
|
|
+ if cid:
|
|
|
+ csrobj = cm.MessageSurveyResult.objects.filter(message_id=id,cid=cid).first()
|
|
|
+ if csrobj:
|
|
|
+ result = json.loads(csrobj.result) if csrobj.result else {}
|
|
|
+ if result:
|
|
|
+ print widget,9999
|
|
|
+ for w in widget:
|
|
|
+ w["result"] = result.get(w["label"])
|
|
|
+ w[w["label"]] = result.get(w["label"])
|
|
|
+
|
|
|
+ rst["widget"] = widget
|
|
|
+
|
|
|
if model_name == "Notice":
|
|
|
+ rst["fileurl"] = json.loads(rst["fileurl"]) if rst["fileurl"] else []
|
|
|
viewer_ids = json.loads(rst["viewer_id"]) if rst["viewer_id"] else []
|
|
|
new_viewer_ids = filter(lambda x:x["id"]!=kwargs.get("cid"),viewer_ids)
|
|
|
new_viewer_ids.append({"id":kwargs.get("cid"),"time":ccf.get_now_str()})
|
|
@@ -155,6 +206,17 @@ def get_list_info(cls,**kwargs):
|
|
|
if model_name == "SysUserInfo":
|
|
|
if kwargs.get("journal_id"):
|
|
|
qset = qset.filter(journal_id=kwargs.get("journal_id"))
|
|
|
+ #数据权限处理
|
|
|
+ if model_name in ["Notice","Message"]:
|
|
|
+ cid = kwargs.get("cid")
|
|
|
+ print cid,4444444444444444
|
|
|
+ user = cm.SysUserInfo.objects.filter(id=cid).first()
|
|
|
+ print user.role_id
|
|
|
+ if user.role_id == 2:
|
|
|
+ if model_name == "Notice":
|
|
|
+ qset = qset.filter(receiver_id__icontains=",{}]".format(cid))
|
|
|
+ if model_name == "Message" and int(kwargs.get("type",0)) == 0:
|
|
|
+ qset = qset.filter(receiver_id__icontains=",{}]".format(cid))
|
|
|
|
|
|
data = list(qset.values())
|
|
|
if model_name == "SysUserInfo":
|
|
@@ -168,9 +230,6 @@ def get_list_info(cls,**kwargs):
|
|
|
for d in data:
|
|
|
if d["receiver_id"]:
|
|
|
receiver_ids = [x[-1] for x in json.loads(d["receiver_id"])]
|
|
|
- receiver_names = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values_list("realname",flat=True))
|
|
|
- receiver_names = ",".join(receiver_names)
|
|
|
- d["receiver_names"] = receiver_names
|
|
|
d["receiver_ids"] = list(set(receiver_ids))
|
|
|
|
|
|
message_id = d["id"]
|
|
@@ -183,11 +242,12 @@ def get_list_info(cls,**kwargs):
|
|
|
d["finish_ids"] = finish_ids
|
|
|
if model_name in ["Notice"]:
|
|
|
for d in data:
|
|
|
+ d["fileurl"] = json.loads(d["fileurl"]) if d["fileurl"] else []
|
|
|
if d["receiver_id"]:
|
|
|
receiver_ids = [x[-1] for x in json.loads(d["receiver_id"])]
|
|
|
- receiver_names = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values_list("realname",flat=True))
|
|
|
- receiver_names = ",".join(receiver_names)
|
|
|
- d["receiver_names"] = receiver_names
|
|
|
+ #receiver_names = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values_list("realname",flat=True))
|
|
|
+ #receiver_names = ",".join(receiver_names)
|
|
|
+ #d["receiver_names"] = receiver_names
|
|
|
d["receiver_ids"] = list(set(receiver_ids))
|
|
|
|
|
|
message_id = d["id"]
|
|
@@ -199,6 +259,13 @@ def get_list_info(cls,**kwargs):
|
|
|
message_id = d["id"]
|
|
|
finish_ids = list(cm.MessageSurveyResult.objects.filter(message_id=message_id).values_list("cid",flat=True))
|
|
|
d["finish_ids"] = finish_ids
|
|
|
+ if model_name == "Template":
|
|
|
+ for d in data:
|
|
|
+ message_ids = list(cm.Message.objects.filter(template_id=d["id"]).values_list("id",flat=True))
|
|
|
+ if cm.MessageSurveyResult.objects.filter(message_id__in=message_ids).exists():
|
|
|
+ d["edit"] = 0
|
|
|
+ else:
|
|
|
+ d["edit"] = 1
|
|
|
|
|
|
page = int(kwargs.get("page",0))
|
|
|
page_size = int(kwargs.get("page_size",20))
|
|
@@ -945,6 +1012,16 @@ def add_conference(**kwargs):
|
|
|
return True
|
|
|
|
|
|
|
|
|
+def remove_empty(data):
|
|
|
+ if isinstance(data,type([])):
|
|
|
+ for i,item in enumerate(data):
|
|
|
+ if not item.get("children",[]):
|
|
|
+ print len(data),111111111
|
|
|
+ del data[i]
|
|
|
+ else:
|
|
|
+ return remove_empty(data[i]["children"])
|
|
|
+
|
|
|
+
|
|
|
def get_message_receiver_list(request):
|
|
|
"""
|
|
|
"""
|
|
@@ -971,6 +1048,7 @@ def get_message_receiver_list(request):
|
|
|
jn["children"] = sysusers
|
|
|
org["children"] = journals
|
|
|
brc["children"] = orgs
|
|
|
+ #remove_empty(branchs)
|
|
|
return branchs
|
|
|
|
|
|
|
|
@@ -1000,7 +1078,7 @@ def save_survey_result_out(**kwargs):
|
|
|
message_id = kwargs.get("message_id")
|
|
|
cid = kwargs.get("cid")
|
|
|
message = cm.Message.objects.filter(id=message_id).first()
|
|
|
- obj,flag = cm.MessageSurveyResult.objects.get_or_create(
|
|
|
+ obj = cm.MessageSurveyResult.objects.create(
|
|
|
message_id=message_id,
|
|
|
cid=cid
|
|
|
)
|
|
@@ -1059,7 +1137,6 @@ def get_survey_analyse_list_out(**kwargs):
|
|
|
template = cm.Template.objects.filter(id=template_id).first()
|
|
|
widgets = json.loads(template.widget) if template.widget else []
|
|
|
headers = [x["label"] for x in widgets]
|
|
|
- print headers,9999999999999
|
|
|
msrset = cm.MessageSurveyResult.objects.filter(message_id=message_id)
|
|
|
if kwargs.get("name"):
|
|
|
msrset = msrset.filter(result__icontains=kwargs.get("name"))
|
|
@@ -1154,7 +1231,7 @@ def download_survey_result(request):
|
|
|
receivers = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values())
|
|
|
for rc in receivers:
|
|
|
rc["journal_name"] = cm.Journal.objects.filter(id=rc["journal_id"]).first().name
|
|
|
- if cm.MessageSurveyResult.objects.filter(cid=rc["id"]).exists():
|
|
|
+ if cm.MessageSurveyResult.objects.filter(message_id=message_id,cid=rc["id"]).exists():
|
|
|
msgobj = cm.MessageSurveyResult.objects.filter(cid=rc["id"]).first()
|
|
|
rc["post_status"] = u"已填报"
|
|
|
rc["post_time"] = msgobj.ctime
|
|
@@ -1163,7 +1240,17 @@ def download_survey_result(request):
|
|
|
rc["post_status"] = u"未填报"
|
|
|
rc["post_time"] = ""
|
|
|
rc["post_result"] = {}
|
|
|
- data.append([rc["realname"],rc["journal_name"],rc["post_status"],ccf.datetime_to_str(rc["ctime"])])
|
|
|
+ if _type == "finish" and rc["post_status"] == u"未填报":
|
|
|
+ continue
|
|
|
+ if _type == "unfinish" and rc["post_status"] == u"已填报":
|
|
|
+ continue
|
|
|
+
|
|
|
+ data.append([
|
|
|
+ rc["realname"],
|
|
|
+ rc["journal_name"],
|
|
|
+ rc["post_status"],
|
|
|
+ ccf.datetime_to_str(rc["post_time"]) if rc["post_time"] else ""
|
|
|
+ ])
|
|
|
|
|
|
exceltool = ExcelTool("/tmp/demo.xls")
|
|
|
xlsdata = exceltool.save_data(u"学员报名数据表",header,data)
|
|
@@ -1313,8 +1400,11 @@ def get_notice_analyse(**kwargs):
|
|
|
viewer_list = json.loads(viewer_id) if viewer_id else []
|
|
|
viewer_ids = [x["id"] for x in viewer_list] if viewer_id else []
|
|
|
viewer_ids = [int(x) for x in viewer_ids]
|
|
|
-
|
|
|
- receivers = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values())
|
|
|
+
|
|
|
+ suserset = cm.SysUserInfo.objects.filter(id__in=receiver_ids)
|
|
|
+ if kwargs.get("name"):
|
|
|
+ suserset = suserset.filter(realname__icontains=kwargs.get("name"))
|
|
|
+ receivers = list(suserset.values())
|
|
|
for rc in receivers:
|
|
|
rc["journal_name"] = cm.Journal.objects.filter(id=rc["journal_id"]).first().name
|
|
|
if rc["id"] in viewer_ids:
|
|
@@ -1370,13 +1460,18 @@ def download_notice_analyse(request):
|
|
|
|
|
|
data = receivers
|
|
|
if _type == "finish":
|
|
|
- data = filter(lambda x:x["post_status"]==1,data)
|
|
|
+ data = filter(lambda x:x["post_status"]==u"已查阅",data)
|
|
|
if _type == "unfinish":
|
|
|
- data = filter(lambda x:x["post_status"]==0,data)
|
|
|
+ data = filter(lambda x:x["post_status"]==u"未查阅",data)
|
|
|
xls_data = []
|
|
|
header = [u"姓名",u"所属期刊",u"状态",u"查阅时间"]
|
|
|
for rc in data:
|
|
|
- xls_data.append([rc["realname"],rc["journal_name"],rc["post_status"],rc["ctime"]])
|
|
|
+ xls_data.append([
|
|
|
+ rc["realname"],
|
|
|
+ rc["journal_name"],
|
|
|
+ rc["post_status"],
|
|
|
+ rc["post_time"]
|
|
|
+ ])
|
|
|
|
|
|
exceltool = ExcelTool("/tmp/demo.xls")
|
|
|
xlsdata = exceltool.save_data(u"学员报名数据表",header,xls_data)
|