def get_form_(request,app_label, model_name, op_name): ''' 根据 op_name 得到 表单视图 2 ''' ############## 根据 HTTP_REFERER 来判断是否是 从worktable页链接而 ###################### is_worktable="" if request.META.has_key('HTTP_REFERER'): #---Referer:从哪个页面链接过来的 is_worktable=request.META['HTTP_REFERER'] if is_worktable.find("worktable")!=-1: is_worktable=True else: is_worktable=False ############## 得到操作的模型, 及ModelOperation 对象 op_name############### model=GetModel(app_label, model_name) if not model: return NoFound404Response(request) if not hasattr(model, op_name): return NoFound404Response(request) op=getattr(model, op_name) if not (type(op)==types.TypeType and issubclass(op, ModelOperation)): return NoFound404Response(request) ############## 当前用户操作权限的判断############### if op_name.startswith("_"): opn= op_name[1:] else: opn=op_name if model.__name__=="Group": opn="groupdel" if not data_utils.hasPerm(request.user, model, opn.lower()): return HttpResponse("session_fail_or_no_permission") ############## 操作表单提交的处理和生成操作页的处理############### if request.method=='POST': if issubclass(model,Model) and not issubclass(model,CachingModel): keys=request.REQUEST.getlist("K") ret=[] objs=model.objects.filter(pk__in=keys) try: op_class=op for obj in objs: if len(op_class.params)==0: op=op_class(obj) ret.append("%s"%(op.action(**{}) or "")) msg=u"%s(%s) %s"%(op.verbose_name, "", ret or "") LogEntry.objects.log_action_other(request.user.pk, obj , msg) except Exception, e: ret.append(u"%s"%e) if not "".join(ret): return HttpResponse('{ Info:"OK" }') else: return HttpResponse('<ul class="errorlist"><li>%s </li></ul>'%("".join(ret))) else: try: ret=model.model_do_action(op_name, request, form_field=form_field) #-----------------关键点 if not ret: return HttpResponse('{ Info:"OK" }') # 操作处理结束 返回结果到前端 if isinstance(ret, HttpResponse): return ret if isinstance(ret, forms.Form): f=ret else: return HttpResponse(u"{ errorCode:-1,\nerrorInfo:\"%s\" }"%ret) except Exception, e: return HttpResponse(u"{ errorCode:-1,\nerrorInfo:\"%s\" }"%e)
def get_form_(request, app_label, model_name, op_name): ''' 根据 op_name 得到 表单视图 2 ''' ############## 根据 HTTP_REFERER 来判断是否是 从worktable页链接而 ###################### is_worktable = "" if request.META.has_key('HTTP_REFERER'): #---Referer:从哪个页面链接过来的 is_worktable = request.META['HTTP_REFERER'] if is_worktable.find("worktable") != -1: is_worktable = True else: is_worktable = False ############## 得到操作的模型, 及ModelOperation 对象 op_name############### model = GetModel(app_label, model_name) if not model: return NoFound404Response(request) if not hasattr(model, op_name): return NoFound404Response(request) op = getattr(model, op_name) if not (type(op) == types.TypeType and issubclass(op, ModelOperation)): return NoFound404Response(request) ############## 当前用户操作权限的判断############### if op_name.startswith("_"): opn = op_name[1:] else: opn = op_name if model.__name__ == "Group": opn = "groupdel" if not data_utils.hasPerm(request.user, model, opn.lower()): return HttpResponse("session_fail_or_no_permission") ############## 操作表单提交的处理和生成操作页的处理############### if request.method == 'POST': if issubclass(model, Model) and not issubclass(model, CachingModel): keys = request.REQUEST.getlist("K") ret = [] objs = model.objects.filter(pk__in=keys) try: op_class = op for obj in objs: if len(op_class.params) == 0: op = op_class(obj) ret.append("%s" % (op.action(**{}) or "")) msg = u"%s(%s) %s" % (op.verbose_name, "", ret or "") LogEntry.objects.log_action_other( request.user.pk, obj, msg) except Exception, e: ret.append(u"%s" % e) if not "".join(ret): return HttpResponse('{ Info:"OK" }') else: return HttpResponse('<ul class="errorlist"><li>%s </li></ul>' % ("".join(ret))) else: try: ret = model.model_do_action( op_name, request, form_field=form_field) #-----------------关键点 if not ret: return HttpResponse('{ Info:"OK" }') # 操作处理结束 返回结果到前端 if isinstance(ret, HttpResponse): return ret if isinstance(ret, forms.Form): f = ret else: return HttpResponse( u"{ errorCode:-1,\nerrorInfo:\"%s\" }" % ret) except Exception, e: return HttpResponse(u"{ errorCode:-1,\nerrorInfo:\"%s\" }" % e)