Ejemplo n.º 1
0
 def test_inactive_metaschema_not_returned(self):
     self.schema = MetaSchema.find_one(
         Q('name', 'eq', 'Open-Ended Registration')
         & Q('schema_version', 'eq', 1))
     self.url = '/{}metaschemas/{}/'.format(API_BASE, self.schema._id)
     res = self.app.get(self.url, auth=self.user.auth, expect_errors=True)
     assert_equal(res.status_code, 404)
Ejemplo n.º 2
0
 def setUp(self):
     super(TestMetaSchemaDetail, self).setUp()
     self.user = AuthUserFactory()
     ensure_schemas()
     self.schema = MetaSchema.find_one(
         Q('name', 'eq', 'Prereg Challenge')
         & Q('schema_version', 'eq', LATEST_SCHEMA_VERSION))
     self.url = '/{}metaschemas/{}/'.format(API_BASE, self.schema._id)
Ejemplo n.º 3
0
    def get_default_odm_query(self):
        base_query = (Q('is_deleted', 'ne', True)
                      & Q('is_registration', 'eq', True))
        user = self.request.user
        permission_query = Q('is_public', 'eq', True)
        if not user.is_anonymous():
            permission_query = (permission_query
                                | Q('contributors', 'eq', user._id))

        query = base_query & permission_query
        return query
Ejemplo n.º 4
0
 def get_queryset(self):
     query = self.get_query_from_request()
     blacklisted = self.is_blacklisted(query)
     nodes = Node.find(query)
     # If attempting to filter on a blacklisted field, exclude retractions.
     if blacklisted:
         non_retracted_list = [node._id for node in nodes if not node.is_retracted]
         non_retracted_nodes = Node.find(Q('_id', 'in', non_retracted_list))
         return non_retracted_nodes
     return nodes
Ejemplo n.º 5
0
    def get_queryset(self):
        node = self.get_node()
        req_query = self.get_query_from_request()

        query = (
            Q('_id', 'in', [e._id for e in node.nodes if e.primary]) &
            req_query
        )
        nodes = Node.find(query)
        auth = get_user_auth(self.request)
        return sorted([each for each in nodes if each.can_view(auth)], key=lambda n: n.date_modified, reverse=True)
Ejemplo n.º 6
0
    def get_queryset(self):
        node = self.get_node()
        req_query = self.get_query_from_request()

        node_pks = node.node_relations.filter(
            is_node_link=False).select_related('child').values_list(
                'child__pk', flat=True)

        query = (Q('pk', 'in', node_pks) & req_query)
        nodes = Node.find(query).order_by('-date_modified')
        auth = get_user_auth(self.request)
        pks = [each.pk for each in nodes if each.can_view(auth)]
        return Node.objects.filter(pk__in=pks).order_by('-date_modified')
Ejemplo n.º 7
0
    def get_requested_resources(self, request, request_data):
        """
        Retrieves resources in request body
        """
        model_cls = request.parser_context['view'].model_class
        requested_ids = [data['id'] for data in request_data]
        resource_object_list = model_cls.find(Q('_id', 'in', requested_ids))

        for resource in resource_object_list:
            if getattr(resource, 'is_deleted', None):
                raise Gone

        if len(resource_object_list) != len(request_data):
            raise ValidationError(
                {'non_field_errors': 'Could not find all objects to delete.'})

        return resource_object_list