Example #1
0
 def limit_video_linkageio_to(self, queryset):
     print '-----------------------', filterdata_by_user(
         queryset.filter(device_type=DEVICE_VIDEO_SERVER),
         threadlocals.get_current_user())  #只要门禁控制器
     return filterdata_by_user(
         queryset.filter(device_type=DEVICE_VIDEO_SERVER),
         threadlocals.get_current_user())  #只要门禁控制器
Example #2
0
 def limit_device_to(self, queryset):
     if self.device:
         v = AccAntiBack.objects.exclude(device=self.device).values("device")
     else:    
         v = AccAntiBack.objects.values("device")
     q = queryset.filter(device_type = DEVICE_ACCESS_CONTROL_PANEL)
     return filterdata_by_user(q.exclude(pk__in=[item["device"] for item in v]), threadlocals.get_current_user()) 
Example #3
0
 def limit_device_to(self, queryset):
     #需要过滤掉已经配置过的,当前自身(编辑时)以及单门控制器
     if self.device:
         v = AccInterLock.objects.exclude(device = self.device).values("device")
     else:    
         v = AccInterLock.objects.values("device")
     q = queryset.filter(device_type = DEVICE_ACCESS_CONTROL_PANEL).exclude(acpanel_type = ACPANEL_1_DOOR)#门禁控制器
     return filterdata_by_user(q.exclude(pk__in = [item["device"] for item in v]), threadlocals.get_current_user()) 
Example #4
0
def get_area_from_all(area_ids=[], request=None):
    u"从所有区域中得到area_ids的子集区域"
    from mysite.iclock.models import Area
    from dbapp.datautils import filterdata_by_user
    qs_all = Area.objects.all()

    if request:
        qs_all = filterdata_by_user(qs_all, request.user)

    ret = get_list_children(qs_all, area_ids)
    return ret
Example #5
0
def get_dept_from_all(depts_ids=[], request=None):
    u"从所有组织中得到depts_ids的子集组织"
    from dbapp.datautils import filterdata_by_user
    from models import DeptAdmin, AreaAdmin, Department

    qs_all = Department.objects.all()
    if request:
        qs_all = filterdata_by_user(qs_all, request.user)

    ret = get_list_children(qs_all, depts_ids)
    return ret
Example #6
0
def get_all_dept_from_all(depts_ids=[], request=None):
    u"从所有组织中得到depts_ids的子集组织"
    from dbapp.datautils import filterdata_by_user
    from mysite.iclock.iutils import get_list_children
    from mysite.iclock.models import Department

    qs_all = Department.all_objects.all()
    if request:
        qs_all = filterdata_by_user(qs_all, request.user)
    ret = get_list_children(qs_all, depts_ids)
    return ret
Example #7
0
 def limit_device_to(self, queryset):
     #需要过滤掉已经配置过的,当前自身(编辑时)以及单门控制器
     if self.device:
         v = AccInterLock.objects.exclude(
             device=self.device).values("device")
     else:
         v = AccInterLock.objects.values("device")
     q = queryset.filter(device_type=DEVICE_ACCESS_CONTROL_PANEL).exclude(
         acpanel_type=ACPANEL_1_DOOR)  #门禁控制器
     return filterdata_by_user(
         q.exclude(pk__in=[item["device"] for item in v]),
         threadlocals.get_current_user())
Example #8
0
    def render(self, name, data, attrs=None):
        #from mysite.personnel.views import get_dept_tree_data
        from django.core.urlresolvers import reverse

        #print "ZDeptChoiceWidget_render data", data

        if data is not None:
            try:
                data = int(data)
            except:
                pass
            if type(data) in (int, long):
                data = self.choices.queryset.model.objects.get(pk=data)
        if attrs: self.attrs.update(attrs)
        if 'id' not in self.attrs: self.attrs['id'] = 'id_' + name
        self.attrs['class'] = self.attrs['class'] + ' filetree r'
        self.attrs = self.build_attrs(self.attrs, name=name)
        required = ""
        if hasattr(self.choices.field,
                   "required") and self.choices.field.required:
            required = "class='wZBaseCharField required input_showDeptTree'"
        try:
            vdata = filterdata_by_user(
                self.choices.queryset.all().filter(isvalid=1),
                threadlocals.get_current_user())
            #            for ii in vdata:
            #                if ii.parent_id is not None:
            #                    l=[e for e in vdata if  e.id==ii.parent_id]
            #                    if not l:ii.parent_id=None
            html = u"<div id='999' class='title' style='margin-left: 0px;'>"\
                    "<p style='margin-right: 110px;'>%s&nbsp; %s &nbsp; &nbsp; %s</p></div>" % (_(u'开始时间'), _(u'结束时间'), _(u'金额'))
            html += DeptTree(vdata).html_ul_li(data and [data.pk] or [])
            html_el = {
                "disp": data or "",
                "name": name,
                "value": data and data.pk or "",
                "attr": flatatt(self.attrs),
                "required": required,
                "id": self.attrs['id'],
                "uid": "%s" % id(self),
                "none": _(u"撤销选择").capitalize(),
                "items": html,
                "ok": _(u"确定")
            }
            if self.flat == False:  #平铺
                return ('<input %(required)s class="wZBaseCharField input_showDeptTree" type="text" readonly="readonly" value="%(disp)s"><input type=hidden name="%(name)s" value="%(value)s">' + \
                                u'<span class="btn_showDeptTree"><img onclick="render_dept_dropdown(this, false)" src="/media/img/sug_down_on.gif" id="id_drop_dept"><div  id="show_deptment" style="display: none;"><div class="title"><span class="span_selectNone Link_blue1" onclick="clear_none(this)"><a href="javascript: void(0)">%(none)s</a>&nbsp;&nbsp;</span><span onclick="javascript:$(this).parent().parent().hide();" class="close btn">%(ok)s</span></div><div id="id_dept"><ul %(attr)s>%(items)s</ul></div></div></span>') % html_el
            else:
                return u'<input type=hidden><input value="%(disp)s" type=hidden>%(value)s<div id="show_deptment"><div id=%(uid)s><ul %(attr)s>%(items)s</ul></div><script>render_dept_($("#%(uid)s"),false,true)</script></div>' % html_el
        except:
            print_exc()
Example #9
0
 def limit_parent_to(self, queryset):
     #根部门不存在上级部门.
     if self.pk == 1:
         return Department.objects.none()
     valid_depts = filterdata_by_user(queryset, threadlocals.get_current_user())
     if self.pk:
         invalid_pks = [self.pk]#限制不能设置一个部门的上级部门为其自身
         
         for dept in valid_depts:
             if self in get_dept_parents(valid_depts,dept):#限制不能设置一个部门的上级部门为子部门
                 invalid_pks.append(dept.pk)
         return valid_depts.exclude(pk__in=invalid_pks)
     else:
         return valid_depts
Example #10
0
    def limit_parent_to(self, queryset):
        #根区域不存在上级区域.
        if self.pk == 1:
            from django.db.models.query import QuerySet
            return Area.objects.none()
        valid_areas = filterdata_by_user(queryset,
                                         threadlocals.get_current_user())
        if self.pk:
            invalid_pks = [self.pk]  #限制不能设置一个区域的上级区域为其自身

            for a in Area.objects.all():
                if self in a.parents():  #限制不能设置一个区域的上级区域为子区域
                    invalid_pks.append(a.pk)
            return valid_areas.exclude(pk__in=invalid_pks)
        else:
            return valid_areas
Example #11
0
def comm_error_msg(request):
    global g_monitor_server
    if not g_monitor_server:
        #print '--error--first time=',g_monitor_server
        g_monitor_server = start_dict_server()

    cdatas = []
    cc = {}
    global g_dev_comm_error_list
    if g_dev_comm_error_list:
        #print '---dev_list exist'
        dev_list = g_dev_comm_error_list
    else:
        #print '---dev_list not exist'
        dev_list = filterdata_by_user(
            Device.objects.filter(device_type=DEVICE_ACCESS_CONTROL_PANEL),
            request.user)
        g_dev_comm_error_list = dev_list
    #print '----dev_list=',dev_list, dev_list.count()
    #print '-----dev_list=', dev_list
    icount = 0
    for dev in dev_list:
        if not dev.enabled:  #不监控已禁用的设备
            continue

        key = dev.command_temp_list_name()
        ucmd = g_monitor_server.get_from_dict(key)
        if ucmd is None:
            continue
        ret = ucmd['CmdReturn']
        #print ret
        if (-400 < ret < -200) or (ret < -10000) or (ret == -1001):
            icount += 1
            cdata = {
                'devname': ucmd['SN'].alias,
            }
            cdatas.append(cdata)
    cc = {
        'cnt': icount,
        'data': cdatas,
    }
    #g_monitor_server.close()
    rtdata = simplejson.dumps(cc)
    return HttpResponse(smart_str(rtdata))
Example #12
0
def mcegroup_emp_op(request):
    #删除某个组中某个或某些人员
    group_id = request.GET.get("data", 0)
    emps = request.GET.get("emps", '')
    emps = emps.split(',')

    group = AccMoreCardEmpGroup.objects.filter(pk=int(group_id))
    group_obj = group and group[0] or None
    #level_obj实际不为空
    emp_objs = Employee.objects.filter(pk__in=emps)
    if group_obj:
        for e in emp_objs:
            e.morecard_group = None
            e.save()
            #group_obj.employee_set.remove(e)
        devs = filterdata_by_user(Device.objects.all(), request.user)
        #print '---devs=',devs
        sync_set_userinfo(devs, emp_objs)
        return HttpResponse(smart_str({'ret': 1}))
    else:
        return HttpResponse(smart_str({'ret': 0}))
Example #13
0
def mcegroup_emp_op(request):
    #删除某个组中某个或某些人员
    group_id = request.GET.get("data", 0)
    emps = request.GET.get("emps" ,'')
    emps = emps.split(',')

    group = AccMoreCardEmpGroup.objects.filter(pk = int(group_id))
    group_obj = group and group[0] or None
    #level_obj实际不为空
    emp_objs = Employee.objects.filter(pk__in = emps)
    if group_obj:
        for e in emp_objs:
            e.morecard_group = None
            e.save()
            #group_obj.employee_set.remove(e)
        devs = filterdata_by_user(Device.objects.all(), request.user)
        #print '---devs=',devs 
        sync_set_userinfo(devs, emp_objs)    
        return HttpResponse(smart_str({ 'ret': 1 }))
    else:
        return HttpResponse(smart_str({ 'ret': 0 }))
Example #14
0
    def render(self, name, data, attrs=None, choices=()):
        import time
        if data is not None:
            model=self.choices.queryset.model
            try:
                datapk = data
                data=[model.objects.get(pk=int(d)) for d in datapk]
            except:
                print_exc()
        if attrs: self.attrs.update(attrs)
        if 'id' not in self.attrs: self.attrs['id']='id_'+name
        self.attrs['class']=self.attrs['class']+' filetree'
        self.attrs = self.build_attrs(self.attrs, name=name)
        try:
            
            vdata =filterdata_by_user(self.choices.queryset.all().filter(isvalid=1),threadlocals.get_current_user())
#            for ii in vdata:
#                if ii.parent_id is not None:
#                    l=[e for e in vdata if  e.id==ii.parent_id]
#                    if not l:ii.parent_id=None
            html = u"<div id='999' class='div_box1' style='padding-left: 30px;'>"\
                    "<p style='margin-right: 40px;'>%s&nbsp; %s &nbsp; &nbsp;</p></div>" % (_(u'开始时间'), _(u'结束时间'))
            html+=TimeSliceTree(vdata).html_ul_li(data=data and datapk or [])
            html_el={\
                "disp": data and ",".join([u"%s"%d for d in data]) or "", 
                "name": name, 
                "value": data and "".join(['<input type=hidden name="%s" value="%s">'%(name, d.pk) for d in data]) or "",
                "attr": flatatt(self.attrs),
                "id": self.attrs['id'],
                'uid': "%s"%id(self),
                "items": html,
                "ok":_(u"确定"),
                "selectchildren":_(u"包含下级")}
            if self.flat: #平铺型
                return u'<input value="%(disp)s" type=hidspan_selectchildrenspan_selectchildrenden>%(value)s<div id="show_deptment"><div id="id_dept"><span id=%(uid)s></span><ul %(attr)s>%(items)s</ul></div><script>render_dept_tree("%(uid)s")</script></div>'%html_el
            else: #下拉框型
                return ('<input  id="dropTime" type="text" class="wZBaseCharField input_showDeptTree" readonly="readonly" value="%(disp)s">%(value)s'+\
                u'<span class="btn_showDeptTree" style="width:200px;"><img onclick="render_dept_dropdown(this, true)"  src="/media/img/sug_down_on.gif" id="id_drop_dept"><div id="show_deptment" style="display: none;""><div class="title"><span class="span_selectchildren displayN"></span><span onclick="javascript:$(this).parent().parent().hide();" class="close btn">%(ok)s</span></div><div id="id_dept"><ul %(attr)s>%(items)s</ul></div></div></span>')%html_el
        except:
            print_exc()
Example #15
0
def Employee_objects(request):
    from dbapp.datautils import filterdata_by_user
    from mysite.personnel.models import Employee
    return filterdata_by_user(Employee.objects.all(),request.user) 
Example #16
0
 def action(self):
     from mysite.att.models.user_temp_sch import USER_TEMP_SCH
     filterdata_by_user(USER_TEMP_SCH.objects.all(),
                        self.request.user).delete()
Example #17
0
 def action(self):
     filterdata_by_user(self.model.objects.all(),
                        self.request.user).delete()
Example #18
0
    def render(self, name, data, attrs=None, choices=()):
        import time
        from dbapp.urls import surl
        if data is not None:
            model = self.choices.queryset.model
            try:
                datapk = data
                data = [model.objects.get(pk=int(d)) for d in datapk]
            except:
                print_exc()
        if attrs: self.attrs.update(attrs)
        if 'id' not in self.attrs: self.attrs['id'] = 'id_' + name
        self.attrs['class'] = self.attrs['class'] + ' filetree'
        self.attrs = self.build_attrs(self.attrs, name=name)
        try:
            if not required:
                btn_cancel = '''<span class="span_selectNone Link_blue1" onclick="clear_none(this)">
                               <a href="javascript: void(0)">%(none)s</a>&nbsp;&nbsp;
                            </span>
                           ''' % {
                    "none": (u"%s" % _(u"撤销选择")).capitalize()
                }

            vdata = filterdata_by_user(
                self.choices.queryset.all().filter(isvalid=1),
                threadlocals.get_current_user())
            html = u"<div id='999' class='title' style='margin-left: 0px;'>"\
                  "<p style='margin-right: 110px;'>%s&nbsp; %s &nbsp; &nbsp; %s</p></div>" % (_(u'开始时间'), _(u'结束时间'), _(u'金额'))
            html += DeptTree(vdata).html_ul_li(data=data and datapk or [])
            need_async_nodes = []
            html_el = {
                "disp":
                data and ",".join([u"%s" % d for d in data]) or "",
                "name":
                name,
                "value":
                data and "".join([
                    '<input type=hidden name="%s" value="%s">' % (name, d.pk)
                    for d in data
                ]) or "",
                "attr":
                flatatt(self.attrs),
                "id":
                self.attrs['id'],
                'uid':
                "%s" % id(self),
                "items":
                html,
                "none":
                btn_cancel,
                "ok":
                _(u"确定"),
                "selectchildren":
                u"%s" % _(u"包含下级"),
                "need_async_nodes":
                ",".join(need_async_nodes),
                "surl":
                surl,
            }
            if self.flat:  #平铺型
                return u'<input value="%(disp)s" type=hidden>%(value)s<div id="show_deptment"><div id="id_dept"><span id=%(uid)s></span><ul %(attr)s>%(items)s</ul></div><script>render_dept_tree("%(uid)s")</script></div>' % html_el
            else:  #下拉框型
                return '''<input type="text" id="splitTime_val"  class="wZBaseCharField input_showDeptTree" readonly="readonly" value="%(disp)s"/>%(value)s<span class="btn_showDeptTree">
                                                 <img onclick="javascript:$(this).parent().find('#show_deptment').show();"  src="/media/img/sug_down_on.gif" id="id_drop_dept"/>
                                                 <div id="show_deptment" style="display: none;">
                                                     <div class="title">
                                                         <span class="span_selectchildren">
                                                             <span>
                                                                 <input type="checkbox" id="id_selectchildren" checked="checked" ></input>
                                                             </span>
                                                             <span class="title_selectchildren">%(selectchildren)s &nbsp;&nbsp;</span>
                                                         </span>
                                                         <span onclick="javascript:$(this).parent().parent().hide();" class="close btn">%(ok)s</span>
                                                     </div>
                                                     <div id="id_dept">
                                                         <ul id="%(uid)s" %(attr)s>%(items)s</ul>
                                                         <script>
                                                             render_dropdown($("#%(uid)s").parent().parent(), true,'%(need_async_nodes)s');
                                                         </script>
                                                     </div>
                                                 </div>
                                                 
                                             </span>
                                     ''' % html_el


#                return ('<input type="text" id="splitTime_val" class="wZBaseCharField input_showDeptTree" readonly="readonly" value="%(disp)s">%(value)s'+\
#                u'<span class="btn_showDeptTree"><img onclick="render_dropdown(this, true)"  src="/media/img/sug_down_on.gif" id="id_drop_dept"><div id="show_deptment" style="display: none;"><div class="title"><span class="span_selectchildren" displayN></span><span onclick="javascript:$(this).parent().parent().hide();" class="close btn">%(ok)s</span></div><div id="id_dept"><ul %(attr)s>%(items)s</ul></div></div></span>')%html_el
        except:
            print_exc()
    def render(self, name, data, attrs=None, choices=()):
        import time
        from dbapp.urls import surl
        if data is not None:
            model = self.choices.queryset.model
            try:
                datapk = data
                data = [model.objects.get(pk=int(d)) for d in datapk]
            except:
                print_exc()
        if attrs: self.attrs.update(attrs)
        if 'id' not in self.attrs: self.attrs['id'] = 'id_' + name
        self.attrs['class'] = self.attrs['class'] + ' filetree'
        self.attrs = self.build_attrs(self.attrs, name=name)
        try:
            vdata = filterdata_by_user(
                self.choices.queryset.all().filter(device_type=5),
                threadlocals.get_current_user())
            html = DeviceTree(vdata).html_ul_li(data=data and datapk or [])
            need_async_nodes = []
            html_el = {
                "disp":
                data and ",".join([u"%s" % d for d in data]) or "",
                "name":
                name,
                "value":
                data and "".join([
                    '<input type=hidden name="%s" value="%s">' % (name, d.pk)
                    for d in data
                ]) or "",
                "attr":
                flatatt(self.attrs),
                "id":
                self.attrs['id'],
                'uid':
                "%s" % id(self),
                "items":
                html,
                "ok":
                _(u"确定"),
                "selectchildren":
                u"%s" % _(u"全选/取消全选"),
                "need_async_nodes":
                ",".join(need_async_nodes),
                "surl":
                surl
            }
            if self.flat:  #平铺型
                return u'<input value="%(disp)s" type=hidden>%(value)s<div id="show_deptment"><div id="id_dept"><span id=%(uid)s></span><ul %(attr)s>%(items)s</ul></div><script>render_dept_tree("%(uid)s")</script></div>' % html_el
            else:  #下拉框型
                return '''<input type="text" id="dropDevice"  class="wZBaseCharField input_showDeptTree" readonly="readonly" value="%(disp)s"/>%(value)s<span class="btn_showDeptTree">
                              <img onclick="javascript:$(this).parent().find('#show_deptment').show();"  src="/media/img/sug_down_on.gif" id="id_drop_dept"/>
                              <div id="show_deptment" style="display: none;">
                                  <div class="title">
                                      <span class="span_selectchildren">
                                          <span>
                                              <input type="checkbox" id="id_select_all" onclick='check_all($("#%(uid)s").parent().parent());' ></input>
                                          </span> 
                                          
                                          <span class="title_selectchildren" id="ck_title">%(selectchildren)s &nbsp;&nbsp;</span>
                                      </span>
                                      <span onclick="javascript:$(this).parent().parent().hide();" class="close btn">%(ok)s</span>
                                  </div>
                                  <div id="id_dept">
                                      <ul id="%(uid)s" %(attr)s>%(items)s</ul>
                                      <script>
                                          render_dropdown($("#%(uid)s").parent().parent(), true,'%(need_async_nodes)s');
                                      </script>
                                  </div>
                              </div>
                          </span>
                    ''' % html_el


#                return ('<input id="dropDevice" type="text" class="wZBaseCharField input_showDeptTree" readonly="readonly" value="%(disp)s">%(value)s'+\
#                u'<span class="btn_showDeptTree" style="width:200px;"><img onclick="render_dept_dropdown(this, true)"  src="/media/img/sug_down_on.gif" id="id_drop_dept"><div id="show_deptment" style="display: none;"><div class="title"><span class="span_selectchildren displayN"></span><span onclick="javascript:$(this).parent().parent().hide();" class="close btn">%(ok)s</span></div><div id="id_dept"><ul %(attr)s>%(items)s</ul></div></div></span>')%html_el
        except:
            print_exc()
    def render(self, name, data, attrs=None):
        from django.core.urlresolvers import reverse
        from dbapp.urls import surl
        if data is not None:
            try:
                data = int(data)
            except:
                pass
            if type(data) in (int, long):
                data = self.choices.queryset.model.objects.get(pk=data)
        if attrs: self.attrs.update(attrs)
        if 'id' not in self.attrs: self.attrs['id'] = 'id_' + name
        self.attrs['class'] = self.attrs['class'] + ' filetree r'
        self.attrs = self.build_attrs(self.attrs, name=name)
        required = ""
        #        if hasattr(self.choices.field, "required") and self.choices.field.required:
        #            required = "class='wZBaseCharField required input_showDeptTree'"
        try:
            vdata = filterdata_by_user(
                self.choices.queryset.all().filter(device_type=5),
                threadlocals.get_current_user())
            need_async_nodes = []
            btn_cancel = ""
            if not required:
                btn_cancel = '''<span class="span_selectNone Link_blue1" onclick="clear_none(this)">
                               <a href="javascript: void(0)">%(none)s</a>&nbsp;&nbsp;
                            </span>
                           ''' % {
                    "none": (u"%s" % _(u"撤销选择")).capitalize()
                }

            html = DeviceTree(vdata).html_ul_li(data and [data.pk] or [])
            html_el = {
                "disp": data or "",
                "name": name,
                "value": data and data.pk or "",
                "attr": flatatt(self.attrs),
                "required": required,
                "id": self.attrs['id'],
                "uid": "%s" % id(self),
                "none": btn_cancel,
                "items": html,
                "ok": _(u"确定"),
                "need_async_nodes": ",".join(need_async_nodes),
                "surl": surl,
            }

            if self.flat == False:  #平铺
                return u'''<input %(required)s  id="dropDevice" class="wZBaseCharField input_showDeptTree" type="text" readonly="readonly" value="%(disp)s"/><input type=hidden name="%(name)s" value="%(value)s"/>
                           <span class="btn_showDeptTree">
                               <img onclick="javascript:$(this).parent().find('#show_deptment').show();" src="/media/img/sug_down_on.gif" id="id_drop_dept"/>
                               <div  id="show_deptment" style="display: none;">
                                   <div class="title">
                                       %(none)s
                                       <span onclick="javascript:$(this).parent().parent().hide();" class="close btn">%(ok)s</span>
                                   </div>
                                   <div id="id_dept">
                                       <ul id="%(uid)s" %(attr)s>%(items)s</ul>
                                       <script>
                                           render_dropdown($("#%(uid)s").parents("#show_deptment"), false,'%(need_async_nodes)s');
                                       </script>
                                   </div>
                               </div>
                           </span>
                       ''' % html_el


#              return u'''<input %(required)s id="dropDevice" class="wZBaseCharField input_showDeptTree" type="text" readonly="readonly" value="%(disp)s"><input type=hidden name="%(name)s" value="%(value)s"/>'
#                                <span class="btn_showDeptTree">
#                                <img onclick="render_dept_dropdown(this, false)" src="/media/img/sug_down_on.gif" id="id_drop_dept">
#                                <div  id="show_deptment" style="display: none;">
#                                <div class="title">
#                                    %(none)s
#
#                                    <span onclick="javascript:$(this).parent().parent().hide();" class="close btn">%(ok)s</span>
#                                </div>
#                                <div id="id_dept">
#                                    <ul id="%(uid)s" %(attr)s>%(items)s</ul>
#                                    <script>
#                                        render_dept_dropdown($("#%(uid)s").parents("#show_deptment"), false,'%(need_async_nodes)s');
#                                        ajax_render_dept_($("#%(uid)s").parent().parent("#show_deptment"),$("#%(uid)s"),"%(need_async_nodes)s",false,"%(surl)s");
#                                    </script>
#                                </div>
#
#                                </div>
#                                </span>''' % html_el
            else:
                return u'<input type=hidden><input value="%(disp)s" type=hidden>%(value)s<div id="show_deptment"><div id=%(uid)s><ul %(attr)s>%(items)s</ul></div><script>render_dept_($("#%(uid)s"),false,true)</script></div>' % html_el
        except:
            print_exc()
Example #21
0
 def limit_device_to(self, queryset):
     print '--------------------------queryset=', queryset
     return filterdata_by_user(
         queryset.filter(device_type=DEVICE_ACCESS_CONTROL_PANEL),
         threadlocals.get_current_user())  #只要门禁控制器
Example #22
0
    def render(self, name, data, attrs=None, choices=()):
        import time
        from dbapp.urls import surl
        from mysite.iclock.iutils import get_max_in
        if data is not None:
            model = self.choices.queryset.model
            try:
                #data=list(model.objects.filter(pk__in=datapk))
                data = get_max_in(model.objects.all(), data)
            except:
                print_exc()

        MCls = self.choices.queryset.model
        value = []
        checked_ids = []
        if data:
            for d in data:
                checked_ids.append(d.pk)
                value.append(u"%s" % d.pk)

        value = u",".join(value)

        if attrs: self.attrs.update(attrs)
        checkable = True
        if self.attrs.has_key("checkable"):
            checkable = self.attrs["checkable"]

        if 'id' not in self.attrs:
            self.attrs['id'] = (u"id_%(n)s_%(t)s" % {
                "n": name,
                "t": time.time()
            }).replace(".", "")
        self.attrs['class'] = self.attrs['class'] + ' filetree'
        self.attrs = self.build_attrs(self.attrs, name=name)

        dict_rows = []  #第一级的数据
        required = False
        if hasattr(self.choices.field,
                   "required") and self.choices.field.required:
            required = True
        from django.db import connection as conn
        from django import db

        m_id = "id"
        m_p = "parent_id"
        m_n = "name"
        s_id = "dept_id"
        r_m = "deptadmin"
        TreeModel = MCls
        sup_id = "supdeptid"
        if TreeModel.__name__ == "Department":
            m_id = "id"
            m_p = "parent_id"
            m_n = "name"
            s_id = "dept_id"
            r_m = "deptadmin"
            sup_id = "supdeptid"
        elif TreeModel.__name__ == "Area":
            m_id = "id"
            m_p = "parent_id"
            m_n = "areaname"
            s_id = "area_id"
            r_m = "areaadmin"
            sup_id = "parent_id"
        try:
            #新增的时候不需要限制
            uobj = threadlocals.get_current_user()
            vdata = self.choices.queryset.all()

            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, uobj.pk, TreeModel._meta.db_table, sup_id, s_id)
                vdata = vdata.extra(select={m_p: select})
            vdata = list(vdata.values(*async_fields))
            for e in vdata:
                tmp_vdata = {}
                if e[m_p] is None:
                    if e[m_id] in checked_ids:
                        checked = True
                    else:
                        checked = False

                    tmp_vdata = {
                        "id": e[m_id],
                        "pId": 0,
                        "name": e[m_n],
                        "isParent": False,
                        "checked": checked
                    }
                    for ee in vdata:
                        if ee[m_p] == e[m_id]:
                            tmp_vdata["isParent"] = True
                            break
                if tmp_vdata:
                    dict_rows.append(tmp_vdata)

            dict_attrs = {
                "disp": data and ",".join([u"%s" % d for d in data]) or "",
                "flat": self.flat,
                "multiple": self.multiple,
                "name": name,
                "value": value,
                "attr": self.attrs,
                "id": self.attrs['id'],
                "dict_rows": dict_rows,
                "surl": surl,
                "required": required,
                "checkable": checkable,
            }

            #只是把属性传送到前端,由前端去处理
            return u'''
                    <ul class="tree" id = "%(id)s">
                    </ul>
                    <div>
                         <script>
                            render_tree(%(attrs)s);
                        </script>
                    </div>
            ''' % {
                "id": self.attrs['id'],
                "attrs": json.dumps(dict_attrs)
            }
        except:
            print_exc()
Example #23
0
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))
Example #24
0
 def limit_video_linkageio_to(self, queryset):
     print '-----------------------', filterdata_by_user(queryset.filter(device_type = DEVICE_VIDEO_SERVER), threadlocals.get_current_user()) #只要门禁控制器
     return filterdata_by_user(queryset.filter(device_type = DEVICE_VIDEO_SERVER), threadlocals.get_current_user()) #只要门禁控制器
Example #25
0
 def limit_device_to(self, queryset):
     print '--------------------------queryset=',queryset
     return filterdata_by_user(queryset.filter(device_type = DEVICE_ACCESS_CONTROL_PANEL), threadlocals.get_current_user()) #只要门禁控制器