Ejemplo n.º 1
0
 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}
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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}
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)