def select_city(request, app_label, model_name): from dbapp.datautils import QueryData from dbapp.modelutils import GetModel from dbapp.utils import getJSResponse import json from django.http import HttpResponseRedirect, HttpResponse from mysite.personnel.models.model_city import City from mysite.personnel.models.model_emp import format_pin ModelCls = GetModel(app_label, model_name) ret = [] keys = [ "state", ] filter_dict = {} qs = [] for e in keys: value = request.REQUEST.get(e, None) if value: filter_dict[e] = value if filter_dict: qs = ModelCls.all_objects.filter(**filter_dict) for elem in qs: ret.append([elem.id, elem.city_code, elem.city_name]) return getJSResponse(json.dumps(ret))
def get_search_from(request, app_label, model_name): from dbapp.data_edit import form_for_model data_model = GetModel(app_label, model_name) if not data_model: return NoFound404Response(request) searchform = "" if hasattr(data_model.Admin, "list_filter"): searchform = form_for_model(data_model, fields=list(data_model.Admin.list_filter)) if searchform: has_header = True else: has_header = False t = loader.get_template("worktable_search_form.html") obj_dict = { 'app_label': app_label, 'model_name': model_name, 'has_header': has_header, 'searchform': searchform, 'query': "&".join([k + "=" + v[0] for k, v in dict(request.GET).items()]) } if model_name == "Device": device_disable_cols_dic = [ 'acpanel_type', 'device_use_type', 'dining.name', 'consume_model', 'com_port', 'com_address', 'show_enabled|boolean_icon', 'show_fp_mthreshold', 'get_dstime_name', 'device_type', 'fw_version' ] obj_dict["disable_cols"] = ("__").join(device_disable_cols_dic) rc = RequestContext(request, obj_dict) return HttpResponse(t.render(rc))
def funGetModelData(request, app_lable, model_name): from mysite.personnel.models.model_emp import format_pin from mysite.utils import get_option model = GetModel(app_lable, model_name) fields = request.REQUEST.get("fields", "") userid = request.REQUEST.get("userid", "") orgdept = request.REQUEST.get("orgdept", "") para = dict(request.REQUEST) where = {} for p in para: if p.find("__") > 0: t = p.split("__") if p.find("__range") > 0: where[str(p)] = eval(para[p]) elif p.find("__in") > 0: where[str(p)] = para[p].split(",") else: where[str(p)] = para[p].decode("utf-8") #print where #print model if fields: fields = fields.split(",") if model: if userid: data = model.objects.filter(id__in=userid) else: data = model.objects.all() if where: data = model.objects.filter(Q(**where)) if fields: data = data.values_list(*fields) #print data xdata = [] i = 0 while i < len(data): tmpdata = data[i] j = 0 ndata = [] while j < len(tmpdata): #print type(tmpdata[j]) if type(tmpdata[j]) == datetime.time: #print "1" ndata.append(tmpdata[j].strftime("%H:%M:%S")) elif type(tmpdata[j]) == datetime.date: ndata.append(tmpdata[j].strftime("%Y-%m-%d")) else: ndata.append(tmpdata[j]) j += 1 xdata.append(ndata) i += 1 #print xdata if orgdept: xdata = processdept(xdata) return getJSResponse(smart_str(dumps(xdata))) else: return NoFound404Response(request)
def user_perms(app_label_model_name): from django.contrib.contenttypes.models import ContentType from django.contrib.auth.models import Permission from dbapp.modelutils import GetModel from base.middleware import threadlocals user = threadlocals.get_current_user() split = app_label_model_name.split(".") m = GetModel(split[0], split[1]) ct = ContentType.objects.get_for_model(m) perms = [ p.codename for p in Permission.objects.filter(content_type=ct) if user.has_perm(split[0] + "." + p.codename) ] perms = sorted(perms) return ".".join(perms)
def action(self, devices): from dbapp.modelutils import GetModel Device = GetModel("iclock", "Device") devs_id = devices.split("-")[0:-1] devs = Device.objects.filter(id__in=devs_id) failed_devs = "" if devs: for dev in devs: ret = dev.set_dstime(self.object) if ret < 0: failed_devs = failed_devs + dev.alias + ", " else: dev.dstime = self.object dev.save(force_update=True) if failed_devs: failed_devs = failed_devs[0:-2] raise Exception(_(u'设备%s夏令时设置失败!') % failed_devs)
def select_position(request, app_label, model_name): from dbapp.datautils import QueryData from dbapp.modelutils import GetModel from dbapp.utils import getJSResponse import json from django.http import HttpResponseRedirect, HttpResponse from mysite.personnel.models.model_position import Position from mysite.personnel.models.model_emp import format_pin ModelCls = GetModel(app_label, model_name) ret = [] # keys = ["DeptID",] filter_dict = {} qs = [] # print "request",request.REQUEST.get("newdept") # for e in keys: # value = request.REQUEST.get(e,None) # print "------------------",value # if value: # filter_dict[e] = value # if not filter_dict: # newdept=request.REQUEST.get("newdept",None) # filter_dict['DeptID'] = newdept dept_id = request.REQUEST.get("DeptID", None) new_dept = request.REQUEST.get("newdept", None) department = request.REQUEST.get("department", None) if dept_id: filter_dict["DeptID"] = dept_id if new_dept: filter_dict["DeptID"] = new_dept if department: filter_dict["DeptID"] = department # print "++++++++++++++++",filter_dict if filter_dict: qs = ModelCls.all_objects.filter(**filter_dict) for elem in qs: ret.append([elem.id, elem.code, elem.name]) # print "=====================",ret return getJSResponse(json.dumps(ret))
def action(self): import time from dbapp.modelutils import GetModel models_list = self.request.POST.getlist("KK") count = 0 for elem in models_list: count = count + 1 # print 'count: %s'%count split_models = elem.split("__") flag = True for i in split_models: app_label, model_name = i.split(".") model = GetModel(app_label, model_name) if model: if hasattr(model, "clear"): try: model.clear() time.sleep(0.1) except Exception, e: flag = False raise Exception(u"初始化:%(m)s,错误:%(e)s" % { "m": model._meta.verbose_name, "e": e }) else: for obj in model.objects.all(): try: #if(obj.Name=="弹性班次" and obj.Num_runID<=1): # return #if(obj.Name=="员工排班") obj.delete() time.sleep(0.1) except Exception, e: flag = False raise Exception(u"初始化:%(m)s,错误:%(e)s" % { "m": model._meta.verbose_name, "e": e }) else: flag = False
def checkno(request, app_label, model_name): from dbapp.datautils import QueryData from dbapp.modelutils import GetModel from mysite.personnel.models.model_emp import format_pin obj = GetModel(app_label, model_name) data = dict(request.REQUEST.items()) #qs,cl=QueryData(request,obj) if 'PIN__exact' in data.keys(): data['PIN__exact'] = format_pin(str(data['PIN__exact'])) d = {} for k, v in data.items(): d[str(k)] = v qs = obj.all_objects.filter(**d) if qs.count() > 0: if model_name == "Employee": return HttpResponse( smart_str( simplejson.dumps({ "info": "× " + u"%s" % _(u"重复使用"), "ret": 1 }))) else: return HttpResponse( smart_str( simplejson.dumps({ "info": "× " + u"%s" % _(u"已存在"), "ret": 1 }))) else: return HttpResponse( smart_str( simplejson.dumps({ "info": "√ " + u"%s" % _(u"可使用"), "ret": 2 })))
def get_children_nodes(request): from django.db import models from dbapp.datautils import filterdata_by_user from mysite.personnel.models.depttree import DeptTree from base.middleware import threadlocals import json from mysite.iclock.iutils import get_max_in limit = request.REQUEST.get("limit") multiple = request.REQUEST.get("multiple") #是否多选 async_checked = request.REQUEST.get("checked") #当前异步节点是否选中 edit_object_id = request.REQUEST.get( "edit_object_id" ) #当前编辑的对象,如人员ID,如果是树形控件本身对象,可能需要按照这个iD进行过滤limit_to_parent checked_ids = request.REQUEST.get("checked_ids") #需要选中的记录 async_id = request.REQUEST.get("id") #异步加载的ID has_checked_nodes = request.REQUEST.get("has_checked_nodes") #前端是否有选中的记录 select_childrens = request.REQUEST.get("select_childrens", None) #是否选择下级 app_label, model_name = request.REQUEST.get("async_model").split("__") TreeModel = GetModel(app_label, model_name) #当前模型对象 obj_tree = None async_obj = None try: if edit_object_id != "" and limit == "true": try: obj_tree = TreeModel.objects.get( pk=edit_object_id) #当前树形控件选中的记录 except: pass async_obj = TreeModel.objects.get(pk=async_id) except: pass m_id = "id" m_p = "parent_id" m_n = "name" s_id = "dept_id" r_m = "deptadmin" sup_name = "supdeptid" if TreeModel.__name__ == "Department": m_id = "id" m_p = "parent_id" m_n = "name" s_id = "dept_id" r_m = "deptadmin" sup_name = "supdeptid" elif TreeModel.__name__ == "Area": m_id = "id" m_p = "parent_id" m_n = "areaname" s_id = "area_id" r_m = "areaadmin" sup_name = "parent_id" #新增的时候不需要限制 uobj = threadlocals.get_current_user() vdata = TreeModel.objects.all().order_by(m_n) if obj_tree and hasattr(obj_tree, "limit_parent_to"): vdata = obj_tree.limit_parent_to(vdata) else: vdata = filterdata_by_user(vdata, uobj) async_fields = [m_id, m_p, m_n] if not uobj.is_superuser: #不是超级管理员 select = "select distinct %s from %s where user_id=%s and %s.%s=%s" % ( s_id, r_m, request.user.pk, TreeModel._meta.db_table, sup_name, s_id) #print "select",select vdata = vdata.extra(select={m_p: select}) vdata = list(vdata.values(*async_fields)) checked = False checked_objs = None if multiple == "true" \ and async_checked == "true" \ and select_childrens == "true": #多选,并且该节点选中了,包含下级选中了 checked = True elif multiple == "false" and has_checked_nodes == "true": #单选,前端已经选中了节点,后端就不要传选中的记录了。 checked = False else: #选中本来应该有关联的数据 if checked_ids: checked_ids = checked_ids.split(",") qs = TreeModel.objects.all() checked_objs = get_max_in(qs, checked_ids, "pk__in") children = [] for e in vdata: tmp_data = {} if e[m_p] == async_obj.id: tmp_data = { "id": e[m_id], "pId": e[m_p], "name": e[m_n], "isParent": False, "checked": checked } if checked_objs: for ce in checked_objs: if e[m_id] == ce.pk: tmp_data["checked"] = True for ee in vdata: if ee[m_p] == e[m_id]: tmp_data["isParent"] = True break if tmp_data: children.append(tmp_data) return getJSResponse(json.dumps(children))