示例#1
0
class UserSerializer(serializers.ModelSerializer):
    rented_equipments = EquipmentSerializer(many=True, read_only=True)
    rent_applications = RentApplicationSerializer(many=True, read_only=True)

    renter_applications = RenterApplicationSerializer(many=True, read_only=True)
    release_applications = ReleaseApplicationSerializer(many=True, read_only=True)
    received_rent_applications = RentApplicationSerializer(many=True, read_only=True)

    owned_equipments = EquipmentSerializer(many=True, read_only=True)


    class Meta:
        model = User
        fields = '__all__'
示例#2
0
 def publish_equipment_metadata(self, equipmentholder, qos=2, retain=False):
     equipment_items = equipmentholder.equipmentitem_set.values('equipment')
     equipments = Equipment.objects.filter(id__in=equipment_items)
     self.publish_topic('equipment/{}/metadata'.format(equipmentholder.id),
                        EquipmentSerializer(equipments, many=True),
                        qos=qos,
                        retain=retain)
    def list(self, request, *args, **kwargs):
        if request.user:
            featured_list = FeaturedEquipment.objects.filter(user_id=request.user)
            featured_count = len(FeaturedEquipment.objects.filter(
                user_id=request.user).all())

            featured_data = []

            for x in featured_list:
                featured_data.append(Equipment.objects.filter(id=x.equipment_id.id).first())

            featured_serializer = EquipmentSerializer(
                featured_data, many=True).data

            featured_serializer = [get_full_equipment_data(x) for x in featured_serializer]

            return Response({
                'data': {
                    'current_count': featured_count,
                    'featured': featured_serializer,
                }
            }, status=status.HTTP_200_OK)
        return Response({
            'data': {
                'featured': [],
            },
            'errors': {
                'message': 'No user token found!'
            }
        }, status=status.HTTP_401_UNAUTHORIZED)
示例#4
0
    def bulk_update(self, request, *args, **kwargs):
        #partial = kwargs.pop('partial', False)

        # restrict the update to the filtered queryset
        serializer = EquipmentSerializer(Equipment.objects.filter(id__in=[d['id'] for d in request.data]),
                                         data=request.data,
                                         context={'request': request, 'view': self},
                                         many=True)
        
        if serializer.is_valid(raise_exception=True):
            
            serializer.save()
            
            return Response(serializer.data, status=status.HTTP_200_OK)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
示例#5
0
    def bulk_update(self, request, *args, **kwargs):
        #partial = kwargs.pop('partial', False)

        # restrict the update to the filtered queryset
        serializer = EquipmentSerializer(Equipment.objects.filter(id__in=[d['id'] for d in request.data]),
                                         data=request.data,
                                         context={'request': request, 'view': self},
                                         many=True)
        
        if serializer.is_valid(raise_exception=True):
            
            serializer.save()
            
            return Response(serializer.data, status=status.HTTP_200_OK)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
示例#6
0
    def metadata(self, request, pk=None, **kwargs):
        """
        Retrive equipment metadata.
        """

        equipmentholder = self.get_object()
        equipment_list = equipmentholder.equipmentitem_set.values('equipment')
        equipment = Equipment.objects.filter(id__in=equipment_list)
        serializer = EquipmentSerializer(equipment, many=True)
        return Response(serializer.data)
    def retrieve(self, request, pk=None, *args, **kwargs):
        if request.user and pk:
            featured = FeaturedEquipment.objects.filter(
                user_id=request.user, equipment_id=pk).first()

            featured_serializer = EquipmentSerializer(
                Equipment.objects.filter(id=featured.equipment_id.id).first(),
                context=self.get_serializer_context(), many=False).data

            return Response({
                'data': get_full_equipment_data(featured_serializer)
            }, status=status.HTTP_200_OK)

        return Response({
            'data': {
                'featured': [],
            },
            'errors': {
                'message': 'No user token found!'
            }
        }, status=status.HTTP_401_UNAUTHORIZED)
示例#8
0
    def test_equipment_metadata_viewset(self):
        # instantiate client
        client = Client()

        # login as admin
        client.login(username=settings.MQTT['USERNAME'],
                     password=settings.MQTT['PASSWORD'])

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h1.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 200)
        result = JSONParser().parse(BytesIO(response.content))
        answer = [
            EquipmentSerializer(Equipment.objects.get(id=self.e1.id)).data,
            EquipmentSerializer(Equipment.objects.get(id=self.e2.id)).data
        ]
        self.assertCountEqual(result, answer)

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h2.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 200)
        result = JSONParser().parse(BytesIO(response.content))
        answer = [
            EquipmentSerializer(Equipment.objects.get(id=self.e1.id)).data,
            EquipmentSerializer(Equipment.objects.get(id=self.e3.id)).data
        ]
        self.assertCountEqual(result, answer)

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h3.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 200)
        result = JSONParser().parse(BytesIO(response.content))
        answer = [
            EquipmentSerializer(Equipment.objects.get(id=self.e1.id)).data
        ]
        self.assertCountEqual(result, answer)

        # logout
        client.logout()

        # login as testuser1
        client.login(username='******', password='******')

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h1.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 200)
        result = JSONParser().parse(BytesIO(response.content))
        answer = [
            EquipmentSerializer(Equipment.objects.get(id=self.e1.id)).data,
            EquipmentSerializer(Equipment.objects.get(id=self.e2.id)).data
        ]
        self.assertCountEqual(result, answer)

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h2.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 200)
        result = JSONParser().parse(BytesIO(response.content))
        answer = [
            EquipmentSerializer(Equipment.objects.get(id=self.e1.id)).data,
            EquipmentSerializer(Equipment.objects.get(id=self.e3.id)).data
        ]
        self.assertCountEqual(result, answer)

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h3.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 404)

        # logout
        client.logout()

        # login as testuser2
        client.login(username='******', password='******')

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h1.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 404)

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h2.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 404)

        # retrieve any hospital equipment
        response = client.get('/api/equipment/{}/metadata/'.format(
            str(self.h3.equipmentholder.id)),
                              follow=True)
        self.assertEqual(response.status_code, 404)

        # logout
        client.logout()