def dept_treeview(): from mysite.iclock.models import Department vdata = filterdata_by_user(Department.objects.all(),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 return DeptTree(vdata).html_ul_li()
def dept_treeview(): from mysite.iclock.models import Department vdata = filterdata_by_user(Department.objects.all(), 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 return DeptTree(vdata).html_ul_li()
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(), 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 = 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="dept_tree_none(this)"><a href="javascript: void(0)">%(none)s</a> </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()
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
def limit_parent_to(self, queryset): #根部门不存在上级部门. if self.pk == 1: from django.db.models.query import QuerySet return Department.objects.none() valid_depts = filterdata_by_user(queryset, threadlocals.get_current_user()) if self.pk: invalid_pks = [self.pk]#限制不能设置一个部门的上级部门为其自身 for dept in Department.objects.all(): if self in dept.parents():#限制不能设置一个部门的上级部门为子部门 invalid_pks.append(dept.pk) return valid_depts.exclude(pk__in=invalid_pks) else: return valid_depts
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
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(),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=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="dept_tree_none(this)"><a href="javascript: void(0)">%(none)s</a> </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()
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(), 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 = DeptTree(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=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" class="wZBaseCharField input_showDeptTree" readonly="readonly" value="%(disp)s">%(value)s'+\ u'<span class="btn_showDeptTree"><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"><span><input type="checkbox" id="id_selectchildren" checked="checked" ></input></span><span class="title_selectchildren">%(selectchildren)s </span></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 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(),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=DeptTree(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=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" class="wZBaseCharField input_showDeptTree" readonly="readonly" value="%(disp)s">%(value)s'+\ u'<span class="btn_showDeptTree"><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"><span><input type="checkbox" id="id_selectchildren" checked="checked" ></input></span><span class="title_selectchildren">%(selectchildren)s </span></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()