コード例 #1
0
ファイル: views.py プロジェクト: baksoikan/zktime_wlm
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))
コード例 #2
0
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))
コード例 #3
0
ファイル: views.py プロジェクト: baksoikan/zktime_wlm
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)
コード例 #4
0
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)
コード例 #5
0
ファイル: model_dstime.py プロジェクト: baksoikan/zktime_wlm
 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)
コード例 #6
0
ファイル: views.py プロジェクト: baksoikan/zktime_wlm
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))
コード例 #7
0
ファイル: models.py プロジェクト: RockyLiys/erp
        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
コード例 #8
0
ファイル: urls.py プロジェクト: baksoikan/zktime_wlm
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": "&times; " + u"%s" % _(u"重复使用"),
                        "ret": 1
                    })))
        else:
            return HttpResponse(
                smart_str(
                    simplejson.dumps({
                        "info": "&times; " + u"%s" % _(u"已存在"),
                        "ret": 1
                    })))
    else:
        return HttpResponse(
            smart_str(
                simplejson.dumps({
                    "info": "&radic; " + u"%s" % _(u"可使用"),
                    "ret": 2
                })))
コード例 #9
0
ファイル: views.py プロジェクト: baksoikan/zktime_wlm
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))