Exemple #1
0
 def has_object_permission(self, request, view, obj):
     assert isinstance(
         obj, (CollectionSubmission, Collection)
     ), 'obj must be an Collection or CollectionSubmission, got {}'.format(
         obj)
     auth = get_user_auth(request)
     collection = Collection.load(
         request.parser_context['kwargs']['node_id'])
     pointer_node = collection.collectionsubmission_set.get(
         guid___id=request.parser_context['kwargs']
         ['node_link_id']).guid.referent
     if request.method in permissions.SAFE_METHODS:
         has_collection_auth = auth.user and auth.user.has_perm(
             'read_collection', collection)
         if isinstance(pointer_node, AbstractNode):
             has_pointer_auth = pointer_node.can_view(auth)
         elif isinstance(pointer_node, Collection):
             has_pointer_auth = auth.user and auth.user.has_perm(
                 'read_collection', pointer_node)
         public = pointer_node.is_public
         has_auth = public or (has_collection_auth and has_pointer_auth)
         return has_auth
     else:
         return auth.user and auth.user.has_perm('write_collection',
                                                 collection)
Exemple #2
0
 def get_object(self):
     cgm = get_object_or_error(
         CollectionSubmission,
         Q(collection=Collection.load(self.kwargs['collection_id']),
           guid___id=self.kwargs['cgm_id']),
         self.request,
         'submission',
     )
     # May raise a permission denied
     self.check_object_permissions(self.request, cgm)
     return cgm
Exemple #3
0
 def get_collection_submission(self, check_object_permissions=True):
     collection_submission = get_object_or_error(
         CollectionSubmission,
         Q(collection=Collection.load(self.kwargs['collection_id']),
           guid___id=self.kwargs['cgm_id']),
         self.request,
         'submission',
     )
     # May raise a permission denied
     if check_object_permissions:
         self.check_object_permissions(self.request, collection_submission)
     return collection_submission
Exemple #4
0
 def has_object_permission(self, request, view, obj):
     assert isinstance(obj, (CollectedGuidMetadata, Collection)), 'obj must be an Collection or CollectedGuidMetadata, got {}'.format(obj)
     auth = get_user_auth(request)
     collection = Collection.load(request.parser_context['kwargs']['node_id'])
     pointer_node = collection.collectedguidmetadata_set.get(guid___id=request.parser_context['kwargs']['node_link_id']).guid.referent
     if request.method in permissions.SAFE_METHODS:
         has_collection_auth = auth.user and auth.user.has_perm('read_collection', collection)
         if isinstance(pointer_node, AbstractNode):
             has_pointer_auth = pointer_node.can_view(auth)
         elif isinstance(pointer_node, Collection):
             has_pointer_auth = auth.user and auth.user.has_perm('read_collection', pointer_node)
         public = pointer_node.is_public
         has_auth = public or (has_collection_auth and has_pointer_auth)
         return has_auth
     else:
         return auth.user and auth.user.has_perm('write_collection', collection)