def get(self): user = self.request.user ou_ids_availables = self.request.user.get('ou_availables', []) or [] ous = [] filters = {'type': 'ou', 'path': {'$ne': 'root'}, } q = self.request.GET.get('q', None) if q: filters['name'] = {'$regex': '%s.*' % q, '$options': '-i'} if ou_ids_availables: ou_ids_availables = [ObjectId(ou_id) for ou_id in ou_ids_availables] filters['_id'] = {'$in': ou_ids_availables} ous_query = self.request.db.nodes.find(filters) ous = [(unicode(ou['_id']), ou['name']) for ou in ous_query] del filters['_id'] for ou_ids_available in ou_ids_availables: ou_availables_children = get_items_ou_children(ou_ids_available, self.request.db.nodes, 'ou', filters=filters, next_level=False) if ou_availables_children: ous += [(ou_children['_id'], ou_children['name']) for ou_children in ou_availables_children] ous = list(set(ous)) elif user.get('is_superuser'): ous = [(unicode(ou['_id']), ou['name']) for ou in self.request.db.nodes.find(filters)] return {'ous': ous}
def get_select(self, mongodb, path, field_iter, **kw): html = "" for j, item_path in enumerate(path): readonly = kw.get('readonly', self.readonly) if item_path: values = get_items_ou_children(item_path, mongodb.nodes, 'ou') values = [(item['_id'], item['name']) for item in values] if not values: continue values = [('', 'Select an Organisational Unit')] + values if j == len(path) - 1: select_value = '' else: select_value = path[j + 1] else: values = kw.get('values', self.values) select_value = item_path template = readonly and self.readonly_template or self.template kw['values'] = _normalize_choices(values) tmpl_values = self.get_template_values(field_iter, select_value, kw) html += field_iter.renderer(template, **tmpl_values) return html
def get(self): user = self.request.user ou_ids_availables = self.request.user.get('ou_availables', []) or [] ous = [] filters = { 'type': 'ou', 'path': { '$ne': 'root' }, } q = self.request.GET.get('q', None) if q: filters['name'] = {'$regex': '%s.*' % q, '$options': '-i'} if ou_ids_availables: ou_ids_availables = [ ObjectId(ou_id) for ou_id in ou_ids_availables ] filters['_id'] = {'$in': ou_ids_availables} ous_query = self.request.db.nodes.find(filters) ous = [(unicode(ou['_id']), ou['name'], ou['path']) for ou in ous_query] del filters['_id'] for ou_ids_available in ou_ids_availables: ou_availables_children = get_items_ou_children( ou_ids_available, self.request.db.nodes, 'ou', filters=filters, next_level=False) if ou_availables_children: ous += [(ou_children['_id'], ou_children['name'], ou_children['path']) for ou_children in ou_availables_children] ous = list(set(ous)) elif user.get('is_superuser'): ous = [(unicode(ou['_id']), ou['name'], ou['path']) for ou in self.request.db.nodes.find(filters)] return {'ous': ous}
def get(self): if not self.request.user.get('is_superuser'): raise HTTPForbidden() ou_id = self.request.GET.get('ou_id', None) return get_items_ou_children(ou_id, self.collection, self.objtype)