Example #1
0
 def filter_by_roles(self, role = None, user=None, types=None, group=None, public=True, page=1, orderBy='name', orderType='asc', numResults=10, search_text='', expression={}):
     roles = Roles[Roles.index(Role.objects.get(name=role).name):]
     if user:
         if public:
             role_relations = PrincipalRoleRelation.objects.filter(
                 Q(user=user) | Q(group__in=user.groups.all()) | Q(group=None, user=None),
                 role__name__in=roles,
                 content_type__name='resource'
             )
         else:
             role_relations = PrincipalRoleRelation.objects.filter(
                 Q(user=user) | Q(group__in=user.groups.all()),
                 role__name__in=roles,
                 content_type__name='resource'
             )
     elif group:
         if public:
             role_relations = PrincipalRoleRelation.objects.filter(
                 Q(group=group) | Q(group=None, user=None),
                 role__name__in=roles,
                 content_type__name = 'resource'
             )
         else:
             role_relations = PrincipalRoleRelation.objects.filter(
                 Q(group=group),
                 role__name__in=roles,
                 content_type__name = 'resource'
             )
     else:
         return get_resources_metadata_by_list()
     if types == None:
         resources = self.filter(pk__in=role_relations.values_list('content_id', flat=True))
     else:
         resources = self.filter(pk__in=role_relations.values_list('content_id', flat=True), type=types)
     resources_metadata = get_resources_metadata_by_list(resources.values_list('global_id', flat=True), page=page, numResults=numResults, orderBy=orderBy, orderType=orderType, search_text=search_text, filters=expression)
     resources = []
     if resources_metadata.get('resource_metadata', []):
         for resource in resources_metadata['resource_metadata']:
             r = self.get(metadata=False, global_id=resource.value['globalID'])
             roles = role_relations.filter(content_id=r.id).values_list('role__name', flat=True)
             r.is_manager = "Manager" in roles or "Owner" in roles
             r.is_editor = "Editor" in roles or "Manager" in roles or "Owner" in roles
             r.is_reader = "Reader" in roles or "Editor" in roles or "Manager" in roles or "Owner" in roles
             r.metadata = resource.value
             resources.append(r)
     else:
         resources_metadata['resource_metadata'] = []
     resources_metadata['data'] = resources
     return resources_metadata
Example #2
0
 def all_metadata(self, page=1, orderBy='name', orderType='asc'):
     resources = super(ResourceManager, self).all().values_list('global_id', flat=True)
     resources_metadata = get_resources_metadata_by_list(resources, page=page, numResults=100, orderBy=orderBy, orderType=orderType)
     resources = []
     if resources_metadata:
         for resource in resources_metadata['resource_metadata']:
             r = self.get(metadata=False, global_id=resource.value['globalID'])
             r.metadata = resource.value
             resources.append(r)
         resources_metadata['data'] = resources
     return resources_metadata