def put(self, request, pk, format=None):
     activity = self.get_object(pk)
     serializer = ActivitySerializer(activity, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def test_activitiy_serializer_saved_from_JSON(self):
        """
            Test that serializer will take activity data
            and save it. Take into account measurements save!
        """
        json = {
            "activities": [
                {
                    "owner": "0",
                    "name": "testing json",
                    "measurements": [{
                        "name": "time spent",
                        "type": "int",
                        "value": "10"
                    },
                        {
                            "name": "lines of code was written",
                            "type": "int",
                            "value": "20"
                        }]
                }, {
                    "owner": "0",
                    "name": "testing json 2",
                    "measurements": [{
                        "name": "time spent",
                        "type": "int",
                        "value": "10"
                    }]
                }
            ]
        }

        for data in json['activities']:
            data['user'] = User.objects.get_by_natural_key('testingUser').id
            measurements_amount = len(Measurement.objects.all())
            serializer = ActivitySerializer(data=data)
            self.assertEqual(serializer.is_valid(), True,
                             'serializer is invalid')
            serializer.save()
            self.assertEqual(
                measurements_amount,
                Measurement.objects.count()-len(data['measurements']),
                'not all measurements were created'
            )
Пример #3
0
 def post(self, request, format=None):
     serializer = ActivitySerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
 def post(self, request, format=None):
     noErrors = True
     serializers = []
     brokenSerializers = []
     for data in request.data['activities']:
         user = request.user
         participation = UserParticipation.objects.get(user=user,
                                                       project=None)
         entity, created = Entity.objects.get_or_create(name=data['name'])
         entity.save()
         data['participation'] = participation.id
         data['entity'] = entity.id
         serializer = ActivitySerializer(data=data)
         noErrors = noErrors and serializer.is_valid()
         if serializer.is_valid():
             serializer.save()
             serializers.append(serializer.data)
         else:
             brokenSerializers.append(serializer)
     us = User.objects.get(username=request.user)
     usr = users.objects.filter(user=us).values('time')
     now = datetime.datetime.now().replace(tzinfo=None)
     if usr[0]['time']:
         c = datetime.datetime.now().replace(
             tzinfo=None) - usr[0]['time'].replace(tzinfo=None)
         diff = divmod(c.days * 86400 + c.seconds, 60)
         if diff[0] > 60:
             gitid = users.objects.filter(user=us).values('githubid')
             bitid = users.objects.filter(user=us).values('bitbucket')
             svnid = users.objects.filter(user=us).values('svn')
             urls = users.objects.filter(user=us).values('urls')
             if gitid[0]['githubid']:
                 git(gitid[0]['githubid'])
             if bitid[0]['bitbucket']:
                 bit(bitid[0]['bitbucket'])
             if svnid[0]['svn'] and urls[0]['urls']:
                 svna(svnid[0]['svn'], urls[0]['urls'])
             elif svnid[0]['svn']:
                 pubsvn(svnid[0]['svn'])
             users.objects.filter(user=us).update(time=now)
     else:
         users.objects.filter(user=us).update(time=now)
         gitid = users.objects.filter(user=us).values('githubid')
         bitid = users.objects.filter(user=us).values('bitbucket')
         svnid = users.objects.filter(user=us).values('svn')
         urls = users.objects.filter(user=us).values('urls')
         if gitid[0]['githubid']:
             git(gitid[0]['githubid'])
         if bitid[0]['bitbucket']:
             bit(bitid[0]['bitbucket'])
         if svnid[0]['svn'] and urls[0]['urls']:
             svna(svnid[0]['svn'], urls[0]['urls'])
         else:
             pubsvn(svnid[0]['svn'])
     if noErrors:
         return Response({'activities': serializers},
                         status=status.HTTP_201_CREATED)
     else:
         print("Error when inserting new data accured with this tuples:" +
               repr(brokenSerializers))
         return Response({'activities': serializer},
                         status=status.HTTP_400_BAD_REQUEST)