def fh_cancel_audit(modeladmin, request, queryset): """ """ opts = modeladmin.model._meta app_label = opts.app_label # Populate modifiable_objects, a data structure of all related objects that will also be deleted. modifiable_objects, perms_needed = get_deleted_objects(queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) can_audit = validate_false_paper_have_type(queryset, [enums.FW_PAPER_TYPE, enums.BMW_PAPER_TYPE]) if can_audit == False: messages.error(request, msg_paper_not_belong_fht) return None paper_st_right = validate_false_paper_status(request, queryset, [enums.PAPER_STATUS_FINISH], u'独立复核团队取消终审') if paper_st_right == False: return None # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. if request.POST.get('post'): user = request.user # 权限判定 if not has_fh_end_audit_perm(user) and not has_manage_perm(user): raise PermissionDenied n = queryset.count() if n: for obj in queryset : obj_display = force_unicode(obj) #remove paper FW audit info audits = PaperAudit.objects.filter(paper=obj, new_status=obj.status) for au in audits: au.delete() obj.status = enums.FH_PAPER_STATUS_WAIT_AUDIT_2 obj.save() # change modeladmin.log_change(request, obj, obj_display) modeladmin.message_user(request, u'成功 取消 %(count)d %(items)s 复核终审.' % { "count": n, "items": model_ngettext(modeladmin.opts, n) }) # Return None to display the change list page again. return None context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), "modifiable_objects": modifiable_objects, 'queryset': queryset, "opts": opts, "root_path": modeladmin.admin_site.root_path, "app_label": app_label, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } # Display the confirmation page return render_to_response('fh_cancel_audit_confirmation.html', context, context_instance=template.RequestContext(request))
def save_blank_data(request, respondent, q_cid_list): ''' save_blank_data处理填空数据 @param request:HTTP request请求 @param respondent: respondent对象 @param q_cid_list:填空字段组成的list ''' pid = respondent.project_id tran_perm = has_tran_perm(request.user) manage_perm = has_manage_perm(request.user) dealer_code = '' for q_cid in q_cid_list: answer = request.POST.get(q_cid) or request.POST.getlist(q_cid)[0] #上面or部分只是为了绕过自动测试的BUG,让自动测试可以通过 if respondent.project_id == 3: #MINI 问卷时检查dealer_code并做修改 if 'dealer_code' == q_cid and not answer.endswith('_M'): answer = '%s_M' % answer dealer_code = answer if 'survey_code' == q_cid and answer.find(dealer_code) == -1: answer = answer.replace(dealer_code[:-2], dealer_code) question = QUESTION_DICT.get(q_cid) if not question: question = Question.objects.get(project=pid, cid=q_cid) QUESTION_DICT[(pid, question.cid)] = question tran_content = request.POST.get('%s__EN' % q_cid, '') if tran_perm and tran_content: respondent.set_translation(q_cid, tran_content) else: q_model = get_q_model(question) q_model.set_answer(respondent.id, answer) if manage_perm and tran_content: respondent.set_translation(q_cid, tran_content)
def save_multiple_blank_data(request, respondent, q_cid_dict): pid = respondent.project_id tran_perm = has_tran_perm(request.user) manage_perm = has_manage_perm(request.user) for cid in q_cid_dict.keys(): answer = [] answer_en = {} for q in q_cid_dict[cid]: q_cid = cid + "_" + q data = request.POST.get(q_cid) answer.append(data) data_en = request.POST.get(q_cid + '__EN', None) if data_en: answer_en[q_cid] = data_en question = QUESTION_DICT.get(cid) if not question: question = Question.objects.get(project=pid, cid=cid) QUESTION_DICT[(pid, question.cid)] = question if tran_perm and len(answer_en): respondent.set_translations(answer_en) else: q_model = get_q_model(question) q_model.set_answer(respondent.id, answer) if manage_perm: respondent.set_translations(answer_en)
def save_radio_data(request, respondent, q_cid_list): ''' save_radio_data处理单选数据 @param request:HTTP request请求 @param respondent: respondent对象 @param q_cid_list:单选字段组成的list ''' pid = respondent.project_id tran_perm = has_tran_perm(request.user) manage_perm = has_manage_perm(request.user) for q_cid in q_cid_list: alt_cid = request.POST.get(q_cid, '').strip() question = QUESTION_DICT.get((pid, q_cid)) if not question: question = Question.objects.get(project=pid, cid=q_cid) QUESTION_DICT[(pid, question.cid)] = question alt = ALTERNATIVE_DICT.get((pid, q_cid, alt_cid)) if not alt: alt = Alternative.objects.get(question=question, cid=alt_cid) ALTERNATIVE_DICT[(pid, q_cid, alt_cid)] = alt q_model = get_q_model(question) tran_content = request.POST.get('%s__open__EN' % q_cid, '') if alt.open: open_content = request.POST.get('%s__open' % q_cid, '') q_model.set_answer(respondent.id, [alt.id, open_content]) else: q_model.set_answer(respondent.id, alt.id) if manage_perm and tran_content: tran_content = request.POST.get('%s__open__EN' % q_cid, '') respondent.set_translation(q_cid, tran_content) if tran_perm: respondent.set_translation(q_cid, tran_content)
def functionlist(request): user = request.user if not _user.has_manage_perm(user): raise PermissionDenied template_file = "functionlist.html" cur_term = _term.get_cur_input_term() terms_2012 = _term.get_2012_all_terms() return render_to_response(template_file, locals(), context_instance=RequestContext(request))
def gen_report_bentch(modeladmin, request, queryset): """ """ opts = modeladmin.model._meta app_label = opts.app_label # Populate modifiable_objects, a data structure of all related objects that will also be deleted. modifiable_objects, perms_needed = get_deleted_objects(queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) # can_audit = validate_false_paper_have_type(queryset, [enums.BMW_PAPER_TYPE, enums.FH_PAPER_TYPE]) # if can_audit == False: # messages.error(request, u'FW团队终审问卷才能生成单店报告') # return None # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. if request.POST.get('post'): user = request.user # 权限判定 #督导,终审,管理员可用 if not has_fh_end_audit_perm(user) and not has_end_audit_perm(user) and not has_manage_perm(user) and not has_dd_audit_perm(user): raise PermissionDenied n = queryset.count() if n: from mc import gen_report perm = enums.PAPER_STATUS_FINISH for obj in queryset : if obj.status == perm: obj_display = force_unicode(obj) #统计得 gen_report(obj, user) # change modeladmin.log_change(request, obj, obj_display) else: n -= 1 modeladmin.message_user(request, u'生成 %(count)d %(items)s EXCEL单店报告.' % { "count": n, "items": model_ngettext(modeladmin.opts, n) }) # Return None to display the change list page again. return None context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), "modifiable_objects": modifiable_objects, 'queryset': queryset, "opts": opts, "root_path": modeladmin.admin_site.root_path, "app_label": app_label, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } # Display the confirmation page return render_to_response('gen_report_bentch_confirmation.html', context, context_instance=template.RequestContext(request))
def orignial_export(request, term_id): user = request.user if not _user.has_manage_perm(user): raise PermissionDenied cur_term = _term.get_term_by_id(term_id) from tools.first import gen_option_data xls_file = gen_option_data.make_excel(cur_term.id) shutil.copy(xls_file, settings.MEDIA_ROOT) downloadname = os.path.basename(xls_file) return HttpResponseRedirect('/file/%s' % (downloadname))
def score_export(request, term_id): user = request.user if not _user.has_manage_perm(user): raise PermissionDenied cur_term = _term.get_term_by_id(term_id) from tools.first import gen_big_data templateName = u'big_data/%s数据大表_template.xls' % cur_term.name_cn xls_file = gen_big_data.write_data(cur_term, templateName) shutil.copy(xls_file, settings.MEDIA_ROOT) downloadname = os.path.basename(xls_file) return HttpResponseRedirect('/file/%s' % (downloadname))
def score_export(request, term_id): user = request.user if not _user.has_manage_perm(user): raise PermissionDenied cur_term = _term.get_term_by_id(term_id) from tools.first import gen_big_data templateName = u'big_data/%s数据大表_template.xls'%cur_term.name_cn xls_file = gen_big_data.write_data(cur_term, templateName) shutil.copy(xls_file, settings.MEDIA_ROOT) downloadname = os.path.basename(xls_file) return HttpResponseRedirect('/file/%s' % (downloadname))
def disablereport(modeladmin, request, queryset): """ """ opts = modeladmin.model._meta app_label = opts.app_label # Populate modifiable_objects, a data structure of all related objects that will also be deleted. modifiable_objects, perms_needed = get_deleted_objects( queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. if request.POST.get('post'): user = request.user # 权限判定 if not has_manage_perm(user): raise PermissionDenied n = queryset.count() if n: for obj in queryset: obj_display = force_unicode(obj) obj.is_public = False obj.save() # change modeladmin.log_change(request, obj, obj_display) modeladmin.message_user( request, u'成功 屏蔽 %(count)d %(items)s 报告.' % { "count": n, "items": model_ngettext(modeladmin.opts, n) }) # Return None to display the change list page again. return None context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), "modifiable_objects": modifiable_objects, 'queryset': queryset, "opts": opts, "root_path": modeladmin.admin_site.root_path, "app_label": app_label, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } # Display the confirmation page return render_to_response( 'disablereport_confirmation.html', context, context_instance=template.RequestContext(request))
def trans_export_need(request): user = request.user if not _user.has_manage_perm(user): raise PermissionDenied cur_term = _term.get_cur_input_term() from tools.first import export xls_file = export.write_data(cur_term, False) import datetime time = datetime.datetime.now().strftime('%y%m%d%H%M%S') firstname = os.path.join(settings.MEDIA_ROOT,u'%s_tran_need_%s.xls'%(cur_term.name_cn,time)) shutil.copyfile(xls_file, firstname) downloadname = os.path.basename(firstname) return HttpResponseRedirect('/file/%s' % (downloadname))
def trans_export_need(request): user = request.user if not _user.has_manage_perm(user): raise PermissionDenied cur_term = _term.get_cur_input_term() from tools.first import export xls_file = export.write_data(cur_term, False) import datetime time = datetime.datetime.now().strftime('%y%m%d%H%M%S') firstname = os.path.join(settings.MEDIA_ROOT, u'%s_tran_need_%s.xls' % (cur_term.name_cn, time)) shutil.copyfile(xls_file, firstname) downloadname = os.path.basename(firstname) return HttpResponseRedirect('/file/%s' % (downloadname))
def get_results(self, request): from service.core._user import has_manage_perm, has_input_perm user = request.user qs = self.query_set if has_manage_perm(user): pass elif has_input_perm(user): #录入权限只能看自己上传的图片,声音 qs = qs.filter(user=user) pass self.query_set = qs return super(ReportChangeList, self).get_results(request)
def disablereport(modeladmin, request, queryset): """ """ opts = modeladmin.model._meta app_label = opts.app_label # Populate modifiable_objects, a data structure of all related objects that will also be deleted. modifiable_objects, perms_needed = get_deleted_objects(queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. if request.POST.get('post'): user = request.user # 权限判定 if not has_manage_perm(user): raise PermissionDenied n = queryset.count() if n: for obj in queryset : obj_display = force_unicode(obj) obj.is_public = False obj.save() # change modeladmin.log_change(request, obj, obj_display) modeladmin.message_user(request, u'成功 屏蔽 %(count)d %(items)s 报告.' % { "count": n, "items": model_ngettext(modeladmin.opts, n) }) # Return None to display the change list page again. return None context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), "modifiable_objects": modifiable_objects, 'queryset': queryset, "opts": opts, "root_path": modeladmin.admin_site.root_path, "app_label": app_label, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } # Display the confirmation page return render_to_response('disablereport_confirmation.html', context, context_instance=template.RequestContext(request))
def trans_import(request): user = request.user if not _user.has_manage_perm(user): raise PermissionDenied f = request.FILES.get("file", None) #存储文件 if f: fpath = os.path.join(settings.MEDIA_ROOT, 'transup') if not os.path.exists(fpath): os.makedirs(fpath) import random ranid = random.randint(1, 9999) import datetime time = datetime.datetime.now().strftime('%y%m%d%H%M%S') filename = u'%s_trans_%s_%d.xls' % (user.username, time, ranid) fpath = os.path.join(fpath, filename) of = open(fpath, 'wb+') for chunk in f.chunks(): of.write(chunk) of.close() shutil.copy(fpath, settings.RESOURCES_ROOT) #读取文件输出 # try: cur_term = _term.get_cur_input_term() from tools.first import export export.save_tran(cur_term, filename) # except: # label = u"请上传合法的xls文件" # return render_to_response("functionlist.html", locals(), context_instance=RequestContext(request)) #end label = u"上传成功" else: label = u"上传失败" terms_2012 = _term.get_2012_all_terms() return render_to_response("functionlist.html", locals(), context_instance=RequestContext(request))
def trans_import(request): user = request.user if not _user.has_manage_perm(user): raise PermissionDenied f = request.FILES.get("file", None) #存储文件 if f: fpath = os.path.join(settings.MEDIA_ROOT, 'transup') if not os.path.exists(fpath): os.makedirs(fpath) import random ranid = random.randint(1, 9999) import datetime time = datetime.datetime.now().strftime('%y%m%d%H%M%S') filename = u'%s_trans_%s_%d.xls' % (user.username,time, ranid) fpath = os.path.join(fpath, filename) of = open(fpath, 'wb+') for chunk in f.chunks(): of.write(chunk) of.close() shutil.copy(fpath, settings.RESOURCES_ROOT) #读取文件输出 # try: cur_term = _term.get_cur_input_term() from tools.first import export export.save_tran(cur_term, filename) # except: # label = u"请上传合法的xls文件" # return render_to_response("functionlist.html", locals(), context_instance=RequestContext(request)) #end label = u"上传成功" else: label = u"上传失败" terms_2012 = _term.get_2012_all_terms() return render_to_response("functionlist.html", locals(), context_instance=RequestContext(request))
def fh_end_audit(modeladmin, request, queryset): """ """ opts = modeladmin.model._meta app_label = opts.app_label # Populate modifiable_objects, a data structure of all related objects that will also be deleted. modifiable_objects, perms_needed = get_deleted_objects( queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) can_audit = validate_false_paper_have_type( queryset, [enums.FW_PAPER_TYPE, enums.BMW_PAPER_TYPE]) if can_audit == False: messages.error(request, msg_paper_not_belong_fht) return None paper_st_right = validate_false_paper_status( request, queryset, [enums.FH_PAPER_STATUS_WAIT_AUDIT_2], u'独立复核团队终审') if paper_st_right == False: return None # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. if request.POST.get('post'): user = request.user # 权限判定 if not has_fh_end_audit_perm(user) and not has_manage_perm(user): raise PermissionDenied n = queryset.count() passed_papers = [] if n: perm = enums.PAPER_STATUS_FINISH for obj in queryset: obj_display = force_unicode(obj) if obj.status < perm: from mc import save_paper_audit_status save_paper_audit_status(obj, request.user, perm) obj.status = perm obj.save() passed_papers.append(obj) # change modeladmin.log_change(request, obj, obj_display) else: n -= 1 modeladmin.message_user( request, u'独立复核终审通过 %(count)d %(items)s 报告.' % { "count": n, "items": model_ngettext(modeladmin.opts, n) }) if len(passed_papers) > 0: from service.core._report import generate_report_by_paper generate_report_by_paper(queryset) conflicts_msg = [] for paper in queryset: no_conflict, diff = paperdiff.do_dealer_paper_diff( paper, user) # if not no_conflict: # conflicts_msg.append(u'%s(FW团队问卷: %s 与 复核团队问卷: %s 比较,产生BMW审核问卷: %s)' % (paper.dealer.name, diff.fw_paper.survey_code, diff.fh_paper.survey_code, diff.final_paper.survey_code)) # if len(conflicts_msg) > 0: # modeladmin.message_user(request, u'产生问卷差异的经销商及相关问卷信息如下:') # for tmpmsg in conflicts_msg: # modeladmin.message_user(request, tmpmsg) # else: # modeladmin.message_user(request, u'并未产生问卷差异.') # Return None to display the change list page again. return None context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), "modifiable_objects": modifiable_objects, 'queryset': queryset, "opts": opts, "root_path": modeladmin.admin_site.root_path, "app_label": app_label, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } # Display the confirmation page return render_to_response( 'fh_finish_audit_confirmation.html', context, context_instance=template.RequestContext(request))
def fh_cancel_audit(modeladmin, request, queryset): """ """ opts = modeladmin.model._meta app_label = opts.app_label # Populate modifiable_objects, a data structure of all related objects that will also be deleted. modifiable_objects, perms_needed = get_deleted_objects( queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) can_audit = validate_false_paper_have_type( queryset, [enums.FW_PAPER_TYPE, enums.BMW_PAPER_TYPE]) if can_audit == False: messages.error(request, msg_paper_not_belong_fht) return None paper_st_right = validate_false_paper_status(request, queryset, [enums.PAPER_STATUS_FINISH], u'独立复核团队取消终审') if paper_st_right == False: return None # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. if request.POST.get('post'): user = request.user # 权限判定 if not has_fh_end_audit_perm(user) and not has_manage_perm(user): raise PermissionDenied n = queryset.count() if n: for obj in queryset: obj_display = force_unicode(obj) #remove paper FW audit info audits = PaperAudit.objects.filter(paper=obj, new_status=obj.status) for au in audits: au.delete() obj.status = enums.FH_PAPER_STATUS_WAIT_AUDIT_2 obj.save() # change modeladmin.log_change(request, obj, obj_display) modeladmin.message_user( request, u'成功 取消 %(count)d %(items)s 复核终审.' % { "count": n, "items": model_ngettext(modeladmin.opts, n) }) # Return None to display the change list page again. return None context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), "modifiable_objects": modifiable_objects, 'queryset': queryset, "opts": opts, "root_path": modeladmin.admin_site.root_path, "app_label": app_label, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } # Display the confirmation page return render_to_response( 'fh_cancel_audit_confirmation.html', context, context_instance=template.RequestContext(request))
def aggregate_report(request): if _user.has_manage_perm(request.user): _report.aggregate_report() _report.aggregate_otherreport() sdicts = {'result':1} return HttpResponse(simplejson.dumps(sdicts, ensure_ascii=False))
def gen_report_bentch(modeladmin, request, queryset): """ """ opts = modeladmin.model._meta app_label = opts.app_label # Populate modifiable_objects, a data structure of all related objects that will also be deleted. modifiable_objects, perms_needed = get_deleted_objects( queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) # can_audit = validate_false_paper_have_type(queryset, [enums.BMW_PAPER_TYPE, enums.FH_PAPER_TYPE]) # if can_audit == False: # messages.error(request, u'FW团队终审问卷才能生成单店报告') # return None # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. if request.POST.get('post'): user = request.user # 权限判定 #督导,终审,管理员可用 if not has_fh_end_audit_perm(user) and not has_end_audit_perm( user) and not has_manage_perm(user) and not has_dd_audit_perm( user): raise PermissionDenied n = queryset.count() if n: from mc import gen_report perm = enums.PAPER_STATUS_FINISH for obj in queryset: if obj.status == perm: obj_display = force_unicode(obj) #统计得 gen_report(obj, user) # change modeladmin.log_change(request, obj, obj_display) else: n -= 1 modeladmin.message_user( request, u'生成 %(count)d %(items)s EXCEL单店报告.' % { "count": n, "items": model_ngettext(modeladmin.opts, n) }) # Return None to display the change list page again. return None context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), "modifiable_objects": modifiable_objects, 'queryset': queryset, "opts": opts, "root_path": modeladmin.admin_site.root_path, "app_label": app_label, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } # Display the confirmation page return render_to_response( 'gen_report_bentch_confirmation.html', context, context_instance=template.RequestContext(request))
def aggregate_report(request): if _user.has_manage_perm(request.user): _report.aggregate_report() _report.aggregate_otherreport() sdicts = {'result': 1} return HttpResponse(simplejson.dumps(sdicts, ensure_ascii=False))
def _render_html(request, respondent, templatename, extern_context={}, q_cid_list=[]): from django.template.loader import render_to_string if respondent is None: answers = None trans_contents = None else: answers = respondent.answers trans_contents = respondent.get_translations() tran_perm = int(has_tran_perm(request.user)) manage_perm = int(has_manage_perm(request.user)) cid_dict = {} for q_cid in q_cid_list: if answers[q_cid][0] == 'A2': if answers[q_cid][1]: alts = answers[q_cid][1].split('^-^') altlen = len(alts) alt_list = [] temp_list = list(alts) temp_list.remove(temp_list[len(temp_list) - 1]) for a in temp_list: alt_list.append('%s' % int(a)) answers[q_cid] = changeTupleValue(answers[q_cid], answers[q_cid][1], alts[altlen - 1]) cid_dict[q_cid] = ','.join(alt_list) extern_context['alt_ans'] = cid_dict cid_list = [] questions = extern_context.get('questions', []) for q in questions: #增加补充说明 addon_cid = '%s__addon' % q.cid if answers: an = answers.get(q.cid, None) if an: q.answer0 = an[0] q.answer1 = an[1] an = answers.get(addon_cid, None) if an: q.addon = an if trans_contents: tran = trans_contents.get(q.cid, None) q.trans_contents = tran tran = trans_contents.get(addon_cid, None) q.addon_en = tran cid_list.append(q.cid.encode('utf-8')) extern_context['question_cid_list'] = cid_list paper = extern_context.get('paper', None) if paper: project_id = paper.project.id else: project_id = request.GET.get('project_id', 2) #获得项目id 默认为宝马项目 project = Project.objects.get(id=project_id) info_data = {'respondent':respondent, 'answers':answers, 'tran_perm':tran_perm, 'manage_perm':manage_perm, 'trans_contents':trans_contents, 'project':project} info_data.update(extern_context) html = render_to_string(templatename, info_data) return html
def fh_end_audit(modeladmin, request, queryset): """ """ opts = modeladmin.model._meta app_label = opts.app_label # Populate modifiable_objects, a data structure of all related objects that will also be deleted. modifiable_objects, perms_needed = get_deleted_objects(queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) can_audit = validate_false_paper_have_type(queryset, [enums.FW_PAPER_TYPE, enums.BMW_PAPER_TYPE]) if can_audit == False: messages.error(request, msg_paper_not_belong_fht) return None paper_st_right = validate_false_paper_status(request, queryset, [enums.FH_PAPER_STATUS_WAIT_AUDIT_2], u'独立复核团队终审') if paper_st_right == False: return None # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. if request.POST.get('post'): user = request.user # 权限判定 if not has_fh_end_audit_perm(user) and not has_manage_perm(user): raise PermissionDenied n = queryset.count() passed_papers = [] if n: perm = enums.PAPER_STATUS_FINISH for obj in queryset : obj_display = force_unicode(obj) if obj.status < perm: from mc import save_paper_audit_status save_paper_audit_status(obj, request.user, perm) obj.status = perm obj.save() passed_papers.append(obj) # change modeladmin.log_change(request, obj, obj_display) else: n -= 1 modeladmin.message_user(request, u'独立复核终审通过 %(count)d %(items)s 报告.' % { "count": n, "items": model_ngettext(modeladmin.opts, n) }) if len(passed_papers) > 0: from service.core._report import generate_report_by_paper generate_report_by_paper(queryset) conflicts_msg = [] for paper in queryset: no_conflict, diff = paperdiff.do_dealer_paper_diff(paper, user) # if not no_conflict: # conflicts_msg.append(u'%s(FW团队问卷: %s 与 复核团队问卷: %s 比较,产生BMW审核问卷: %s)' % (paper.dealer.name, diff.fw_paper.survey_code, diff.fh_paper.survey_code, diff.final_paper.survey_code)) # if len(conflicts_msg) > 0: # modeladmin.message_user(request, u'产生问卷差异的经销商及相关问卷信息如下:') # for tmpmsg in conflicts_msg: # modeladmin.message_user(request, tmpmsg) # else: # modeladmin.message_user(request, u'并未产生问卷差异.') # Return None to display the change list page again. return None context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), "modifiable_objects": modifiable_objects, 'queryset': queryset, "opts": opts, "root_path": modeladmin.admin_site.root_path, "app_label": app_label, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } # Display the confirmation page return render_to_response('fh_finish_audit_confirmation.html', context, context_instance=template.RequestContext(request))
def changelist_view(self, request, extra_context=None): user = request.user actions = [] from service.core._user import has_qc1_audit_perm, has_qc2_audit_perm, has_qc3_audit_perm, has_manage_perm from service.core._user import has_dd_audit_perm, has_yj_audit_perm, has_end_audit_perm from service.core._user import has_fh_audit_perm, has_fh_end_audit_perm, check_user_in_gfk_group is_manager = has_manage_perm(user) if is_manager or has_qc1_audit_perm(user): actions.append(audit_action.qc1_audit) if is_manager or has_qc2_audit_perm(user): actions.append(audit_action.qc2_audit) if is_manager or has_qc3_audit_perm(user): actions.append(audit_action.qc3_audit) if is_manager or has_dd_audit_perm(user): actions.append(audit_action.dd_audit) if is_manager or has_yj_audit_perm(user): actions.append(audit_action.yj_audit) if is_manager or has_end_audit_perm(user): actions.append(audit_action.end_audit) if is_manager or has_end_audit_perm(user) or has_dd_audit_perm(user): actions.append(audit_action.cancel_audit) actions.append(audit_action.qc3_re_audit) if is_manager or has_end_audit_perm(user) or has_dd_audit_perm( user) or has_fh_end_audit_perm(user): #actions.append(audit_action.save_all) actions.append(audit_action.gen_report_bentch) pass if is_manager or has_fh_audit_perm(user): actions.append(audit_action.fh_audit) if is_manager or has_fh_end_audit_perm(user): actions.append(audit_action.fh_end_audit) actions.append(audit_action.fh_cancel_audit) if is_manager: actions.append(enablereport_action.enablereport) actions.append(enablereport_action.disablereport) # if is_manager or has_dd_audit_perm(user) or has_yj_audit_perm(user): # if 'bmwpaperstatus' not in self.list_display: # self.list_display.append('bmwpaperstatus') # else: # if 'bmwpaperstatus' in self.list_display: # self.list_display.remove('bmwpaperstatus') def __replace_desc(no, description): desc = description splits = desc.split('.', 2) size = len(splits) if size == 2: desc = splits[1] return desc # for i, act in enumerate(actions): # no = '%02d' % (i + 1) # desc = __replace_desc(no, act.short_description) # act.short_description = u'%s. %s' % (no, desc) setattr(PaperAdmin, 'actions', actions) #此处要动态设置PaperAdmin类的actions属性才有效 #下面for是将django 加的权限操作前加上序号,序号从actions值后算起 # i = 0 # for (name, func) in self.admin_site.actions: # description = getattr(func, 'short_description', name.replace('_', ' ')) # vals = description._proxy____args #值为元组 # if len(vals) > 0: # v = _(vals[0]) # no = '%02d' % (i + 1 + len(actions)) # desc = __replace_desc(no, v) # v2 = ('%s. %s' % (no, desc)) # changed = [] # changed.append(v2) # if len(vals) > 1: # changed.extend(vals[1:]) # description._proxy____args = tuple(changed) # i += 1 if extra_context is None: extra_context = {} extra_context['has_manage_role'] = is_manager extra_context['is_fw_team'] = check_user_in_gfk_group(user) return super(PaperAdmin, self).changelist_view(request, extra_context)
def _render_html(request, respondent, templatename, extern_context={}, q_cid_list=[]): from django.template.loader import render_to_string if respondent is None: answers = None trans_contents = None else: answers = respondent.answers trans_contents = respondent.get_translations() tran_perm = int(has_tran_perm(request.user)) manage_perm = int(has_manage_perm(request.user)) cid_dict = {} for q_cid in q_cid_list: if answers[q_cid][0] == 'A2': if answers[q_cid][1]: alts = answers[q_cid][1].split('^-^') altlen = len(alts) alt_list = [] temp_list = list(alts) temp_list.remove(temp_list[len(temp_list) - 1]) for a in temp_list: alt_list.append('%s' % int(a)) answers[q_cid] = changeTupleValue(answers[q_cid], answers[q_cid][1], alts[altlen - 1]) cid_dict[q_cid] = ','.join(alt_list) extern_context['alt_ans'] = cid_dict cid_list = [] questions = extern_context.get('questions', []) for q in questions: #增加补充说明 addon_cid = '%s__addon' % q.cid if answers: an = answers.get(q.cid, None) if an: q.answer0 = an[0] q.answer1 = an[1] an = answers.get(addon_cid, None) if an: q.addon = an if trans_contents: tran = trans_contents.get(q.cid, None) q.trans_contents = tran tran = trans_contents.get(addon_cid, None) q.addon_en = tran cid_list.append(q.cid.encode('utf-8')) extern_context['question_cid_list'] = cid_list paper = extern_context.get('paper', None) if paper: project_id = paper.project.id else: project_id = request.GET.get('project_id', 2) #获得项目id 默认为宝马项目 project = Project.objects.get(id=project_id) info_data = { 'respondent': respondent, 'answers': answers, 'tran_perm': tran_perm, 'manage_perm': manage_perm, 'trans_contents': trans_contents, 'project': project } info_data.update(extern_context) html = render_to_string(templatename, info_data) return html