Exemplo n.º 1
0
    def test_persist_clone_positive(self):
        self.assertEquals(2, self.concept1.num_versions)
        self.assertEquals(
            self.concept_version, ConceptVersion.get_latest_version_of(self.concept1))

        source_version = SourceVersion.get_latest_version_of(self.source1)

        source_version.update_concept_version(self.concept_version)
        self.assertEquals(1, len(source_version.concepts))
        self.assertEquals(self.concept_version.id, source_version.concepts[0])

        version2 = self.concept_version.clone()
        errors = ConceptVersion.persist_clone(version2, self.user1)
        self.assertEquals(0, len(errors))

        self.assertEquals(3, self.concept1.num_versions)
        self.assertEquals(version2, ConceptVersion.get_latest_version_of(self.concept1))
        self.assertEquals(self.concept_version.public_access, version2.public_access)
        self.assertEquals(self.concept_version, version2.previous_version)
        self.assertEquals(self.concept_version.root_version, version2.root_version)
        self.assertEquals(self.concept_version.external_id, version2.external_id)
        self.assertEquals(self.user1.username, version2.version_created_by)

        source_version.update_concept_version(version2)
        self.assertEquals(1, len(source_version.concepts))
        self.assertEquals(version2.id, source_version.concepts[0])
Exemplo n.º 2
0
    def test_persist_clone_positive(self):
        self.assertEquals(2, self.concept1.num_versions)
        self.assertEquals(self.concept_version,
                          ConceptVersion.get_latest_version_of(self.concept1))

        source_version = SourceVersion.get_latest_version_of(self.source1)

        source_version.update_concept_version(self.concept_version)
        self.assertEquals(1, len(source_version.concepts))
        self.assertEquals(self.concept_version.id, source_version.concepts[0])

        version2 = self.concept_version.clone()
        errors = ConceptVersion.persist_clone(version2, self.user1)
        self.assertEquals(0, len(errors))

        self.assertEquals(3, self.concept1.num_versions)
        self.assertEquals(version2,
                          ConceptVersion.get_latest_version_of(self.concept1))
        self.assertEquals(self.concept_version.public_access,
                          version2.public_access)
        self.assertEquals(self.concept_version, version2.previous_version)
        self.assertEquals(self.concept_version.root_version,
                          version2.root_version)
        self.assertEquals(self.concept_version.external_id,
                          version2.external_id)
        self.assertEquals(self.user1.username, version2.version_created_by)

        source_version.update_concept_version(version2)
        self.assertEquals(1, len(source_version.concepts))
        self.assertEquals(version2.id, source_version.concepts[0])
Exemplo n.º 3
0
 def delete(self, request, *args, **kwargs):
     if self.key in self.extras:
         del self.extras[self.key]
         self.parent_resource_version.update_comment = 'Deleted extra %s.' % self.key
         errors = ConceptVersion.persist_clone(self.parent_resource_version, request.user)
         if errors:
             return Response(errors, status=status.HTTP_400_BAD_REQUEST)
         return Response(status=status.HTTP_204_NO_CONTENT)
     return Response({"detail": "Not found."}, status.HTTP_404_NOT_FOUND)
Exemplo n.º 4
0
 def delete(self, request, *args, **kwargs):
     if self.key in self.extras:
         del self.extras[self.key]
         self.parent_resource_version.update_comment = 'Deleted extra %s.' % self.key
         errors = ConceptVersion.persist_clone(self.parent_resource_version, request.user)
         if errors:
             return Response(errors, status=status.HTTP_400_BAD_REQUEST)
         return Response(status=status.HTTP_204_NO_CONTENT)
     return Response({"detail": "Not found."}, status.HTTP_404_NOT_FOUND)
Exemplo n.º 5
0
    def update(self, request, *args, **kwargs):
        value = request.DATA.get(self.key)
        if not value:
            return Response(
                ['Must specify %s param in body.' % self.key],
                status=status.HTTP_400_BAD_REQUEST)

        self.extras[self.key] = value
        self.parent_resource_version.update_comment = 'Updated extras: %s=%s.' % (self.key, value)
        errors = ConceptVersion.persist_clone(self.parent_resource_version, request.user)
        if errors:
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        return Response({self.key: self.extras[self.key]})
Exemplo n.º 6
0
    def update(self, request, *args, **kwargs):
        value = request.DATA.get(self.key)
        if not value:
            return Response(
                ['Must specify %s param in body.' % self.key],
                status=status.HTTP_400_BAD_REQUEST)

        self.extras[self.key] = value
        self.parent_resource_version.update_comment = 'Updated extras: %s=%s.' % (self.key, value)
        errors = ConceptVersion.persist_clone(self.parent_resource_version, request.user)
        if errors:
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        return Response({self.key: self.extras[self.key]})
Exemplo n.º 7
0
 def create(self, request, *args, **kwargs):
     serializer = self.get_serializer(data=request.DATA, files=request.FILES)
     if serializer.is_valid():
         new_version = self.parent_resource_version.clone()
         labels = getattr(new_version, self.parent_list_attribute)
         labels.append(serializer.object)
         new_version.update_comment = 'Added to %s: %s.' % (self.parent_list_attribute,
                                                            serializer.object.name)
         errors = ConceptVersion.persist_clone(new_version, request.user)
         if errors:
             return Response(errors, status=status.HTTP_400_BAD_REQUEST)
         headers = self.get_success_headers(serializer.data)
         return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 8
0
 def create(self, request, *args, **kwargs):
     serializer = self.get_serializer(data=request.DATA, files=request.FILES)
     if serializer.is_valid():
         new_version = self.parent_resource_version.clone()
         labels = getattr(new_version, self.parent_list_attribute)
         labels.append(serializer.object)
         new_version.update_comment = 'Added to %s: %s.' % (self.parent_list_attribute,
                                                            serializer.object.name)
         errors = ConceptVersion.persist_clone(new_version, request.user)
         if errors:
             return Response(errors, status=status.HTTP_400_BAD_REQUEST)
         headers = self.get_success_headers(serializer.data)
         return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 9
0
 def delete(self, request, *args, **kwargs):
     obj = self.get_object()
     index_to_remove = -1
     labels = getattr(self.parent_resource_version, self.parent_list_attribute)
     for i, label in enumerate(labels):
         if label.uuid == obj.uuid:
             index_to_remove = i
             break
     if index_to_remove >= 0:
         del labels[index_to_remove]
         self.parent_resource_version.update_comment = 'Deleted %s from %s.' % (obj.name, self.parent_list_attribute)
         errors = ConceptVersion.persist_clone(self.parent_resource_version, request.user)
         if errors:
             return Response(errors, status=status.HTTP_400_BAD_REQUEST)
     return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 10
0
 def delete(self, request, *args, **kwargs):
     obj = self.get_object()
     index_to_remove = -1
     labels = getattr(self.parent_resource_version, self.parent_list_attribute)
     for i, label in enumerate(labels):
         if label.uuid == obj.uuid:
             index_to_remove = i
             break
     if index_to_remove >= 0:
         del labels[index_to_remove]
         self.parent_resource_version.update_comment = 'Deleted %s from %s.' % (obj.name, self.parent_list_attribute)
         errors = ConceptVersion.persist_clone(self.parent_resource_version, request.user)
         if errors:
             return Response(errors, status=status.HTTP_400_BAD_REQUEST)
     return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 11
0
    def update(self, request, *args, **kwargs):
        partial = True
        self.object = self.get_object()
        success_status_code = status.HTTP_200_OK

        serializer = self.get_serializer(self.object, data=request.DATA,
                                         files=request.FILES, partial=partial)

        if serializer.is_valid():
            self.parent_resource_version.update_comment = 'Updated %s in %s.' % (self.object.name, self.parent_list_attribute)
            errors = ConceptVersion.persist_clone(self.parent_resource_version, request.user)
            if errors:
                return Response(errors, status=status.HTTP_400_BAD_REQUEST)
            return Response(serializer.data, status=success_status_code)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 12
0
    def update(self, request, *args, **kwargs):
        partial = True
        self.object = self.get_object()
        success_status_code = status.HTTP_200_OK

        serializer = self.get_serializer(self.object, data=request.DATA,
                                         files=request.FILES, partial=partial)

        if serializer.is_valid():
            self.parent_resource_version.update_comment = 'Updated %s in %s.' % (self.object.name, self.parent_list_attribute)
            errors = ConceptVersion.persist_clone(self.parent_resource_version, request.user)
            if errors:
                return Response(errors, status=status.HTTP_400_BAD_REQUEST)
            return Response(serializer.data, status=success_status_code)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 13
0
    def test_persist_clone_negative__no_user(self):
        self.assertEquals(2, self.concept1.num_versions)
        self.assertEquals(
            self.concept_version, ConceptVersion.get_latest_version_of(self.concept1))

        source_version = SourceVersion.get_latest_version_of(self.source1)

        source_version.update_concept_version(self.concept_version)
        self.assertEquals(1, len(source_version.concepts))
        self.assertEquals(self.concept_version.id, source_version.concepts[0])

        version2 = self.concept_version.clone()
        errors = ConceptVersion.persist_clone(version2)
        self.assertEquals(1, len(errors))
        self.assertTrue('version_created_by' in errors)

        self.assertEquals(2, self.concept1.num_versions)
        self.assertEquals(
            self.concept_version, ConceptVersion.get_latest_version_of(self.concept1))
Exemplo n.º 14
0
    def test_persist_clone_negative__no_user(self):
        self.assertEquals(2, self.concept1.num_versions)
        self.assertEquals(self.concept_version,
                          ConceptVersion.get_latest_version_of(self.concept1))

        source_version = SourceVersion.get_latest_version_of(self.source1)

        source_version.update_concept_version(self.concept_version)
        self.assertEquals(1, len(source_version.concepts))
        self.assertEquals(self.concept_version.id, source_version.concepts[0])

        version2 = self.concept_version.clone()
        errors = ConceptVersion.persist_clone(version2)
        self.assertEquals(1, len(errors))
        self.assertTrue('version_created_by' in errors)

        self.assertEquals(2, self.concept1.num_versions)
        self.assertEquals(self.concept_version,
                          ConceptVersion.get_latest_version_of(self.concept1))
Exemplo n.º 15
0
 def create(self, request, *args, **kwargs):
     serializer = self.get_serializer(data=request.DATA, files=request.FILES)
     if serializer.is_valid():
         new_version = self.parent_resource_version.clone()
         # get the current labels from the object
         labels = getattr(new_version, self.parent_list_attribute)
         # If labels are None then we would want to initialize the labels in new_version
         if labels is None:
             setattr(new_version, self.parent_list_attribute, [])
             labels = getattr(new_version, self.parent_list_attribute)
         # update the labels with input object
         labels.append(serializer.object)
         new_version.update_comment = 'Added to %s: %s.' % (self.parent_list_attribute,
                                                            serializer.object.name)
         # save updated ConceptVersion into database
         errors = ConceptVersion.persist_clone(new_version, request.user)
         if errors:
             return Response(errors, status=status.HTTP_400_BAD_REQUEST)
         headers = self.get_success_headers(serializer.data)
         return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 16
0
 def save_object(self, obj, **kwargs):
     user = self.context['request'].user
     errors = ConceptVersion.persist_clone(obj, user, **kwargs)
     self._errors.update(errors)
Exemplo n.º 17
0
 def save_object(self, obj, **kwargs):
     user = self.context['request'].user
     errors = ConceptVersion.persist_clone(obj, user, **kwargs)
     self._errors.update(errors)