Пример #1
0
    def update(self, request, *args, **kwargs):
        network = self.get_object()
        device = Device.objects.get(pk=self.kwargs['device_id'])
        serializer = DeviceNetworkUpdateSerializer(network, data=request.data)
        serializer.is_valid(raise_exception=True)
        if network.password != request.data['old_password']:
            data = {
                'code': getattr(settings, 'ERROR_CODE', 0),
                'message': "Old password is not correct."
            }
            return Response(data, status=status.HTTP_400_BAD_REQUEST)

        serializer.save(device=device)

        message = "{network} network of device '{device}' of user '{email}' updated."
        message = message.format(
            network='Primary' if network.primary_network else 'Secondary',
            device=device.serial_number,
            email=request.auth.user.email)
        create_activity_log(request, message)

        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "Device successfully updated.",
            'data': serializer.data
        }
        return Response(data, status=status.HTTP_200_OK)
    def create(self, request, *args, **kwargs):
        instance = self.get_queryset()
        serializer = DeviceSleepSerializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        data_to_cache = {
            'id':
            instance.id,
            'sleep_start': (datetime.datetime.strptime(
                serializer.data['sleep_settings']['sleep_start'],
                "%Y-%m-%dT%H:%M:%SZ")).strftime('%Y-%m-%d %H:%M:%S'),
            'is_asleep':
            serializer.data['sleep_settings']['is_asleep'],
            'sleep_duration':
            serializer.data['sleep_settings']['sleep_duration']
        }

        update_cached_device_list(data_to_cache)

        create_activity_log(
            request,
            "Sleep setting of device '{device}' of user '{email} updated.".
            format(device=instance.device.serial_number,
                   email=request.auth.user.email))

        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "Successfully sleep settings updated.",
            'data': serializer.data
        }

        return Response(data, status=status.HTTP_200_OK)
def device_priority_view(request, device_id):
    '''
    API to prioritize/unprioritize device
    :param request:
    :param device_id:
    :return:
    '''
    try:
        device = Device.objects.get(pk=device_id)
        device_setting, _ = DeviceSetting.objects.get_or_create(device=device)
        serializer = DevicePrioritySettingSerializer(device_setting,
                                                     data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        create_activity_log(
            request,
            "Priority of device '{device}' of user '{user}' updated.".format(
                device=device.serial_number, user=request.auth.user.email))

        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "Successfully priority updated.",
            'data': serializer.data
        }
        return Response(data, status=status.HTTP_200_OK)
    except (AttributeError, ObjectDoesNotExist) as err:
        return Response(
            {
                "code": getattr(settings, 'ERROR_CODE', 0),
                "message": str(err)
            },
            status=status.HTTP_400_BAD_REQUEST)
Пример #4
0
    def create(self, request, *args, **kwargs):
        data = request.data
        user = request.auth.user

        # case sensitive validation of name
        if franchise_type_name_already_exits(request.data['name'], user):
            return Response(
                {
                    'code': getattr(settings, 'ERROR_CODE', 0),
                    'message': "Franchise type with this name already exists.",
                },
                status=status.HTTP_400_BAD_REQUEST)

        data['user'] = user.id
        serializer = LocationTypeSerializer(data=data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        create_activity_log(
            request, "Location Type '{name}' added to user '{email}'.".format(
                name=serializer.data['name'], email=user.email))

        return Response(
            {
                'code': getattr(settings, 'SUCCESS_CODE', 1),
                'message': "Successfully added location type.",
                'data': serializer.data
            },
            status=status.HTTP_201_CREATED)
Пример #5
0
    def update(self, request, *args, **kwargs):
        industry_type = self.get_object()
        user = request.auth.user

        # case sensitive validation of name
        if industry_type_name_already_exits(request.data['name'], user):
            return Response(
                {
                    'code': getattr(settings, 'ERROR_CODE', 0),
                    'message': "Industry type with this name already exists.",
                },
                status=status.HTTP_400_BAD_REQUEST)

        serializer = IndustryTypeSerializer(industry_type, data=request.data)
        serializer.is_valid(raise_exception=True)

        serializer.save(user=user)

        create_activity_log(
            request,
            "Industry Type '{name}' of user '{email}' updated.".format(
                name=serializer.data['name'], email=user.email))

        return Response(
            {
                'code': getattr(settings, 'SUCCESS_CODE', 1),
                'message': "Successfully updated industry type.",
                'data': serializer.data
            },
            status=status.HTTP_200_OK)
Пример #6
0
 def destroy(self, request, *args, **kwargs):
     instance = self.get_object()
     create_activity_log(
         request, "Device '{s_no}' of user '{email}' deleted.".format(
             s_no=instance.serial_number, email=request.auth.user.email))
     instance.delete()
     data = {
         'code': getattr(settings, 'SUCCESS_CODE', 1),
         'message': "Device successfully deleted."
     }
     return Response(data, status=status.HTTP_200_OK)
Пример #7
0
 def destroy(self, request, *args, **kwargs):
     camera = self.get_object()
     create_activity_log(
         request,
         "Camera information for device '{s_no}' of user '{email}' deleted."
         .format(s_no=camera.camera_service.serial_number,
                 email=request.auth.user.email))
     camera.delete()
     data = {
         'code': getattr(settings, 'SUCCESS_CODE', 1),
         'message': "Successfully deleted device's camera information."
     }
     return Response(data, status=status.HTTP_200_OK)
Пример #8
0
 def destroy(self, request, *args, **kwargs):
     instance = self.get_object()
     user = request.auth.user
     create_activity_log(
         request, "Preset '{preset}' of user '{email}' deleted.".format(
             preset=instance.name, email=user.email))
     self.perform_destroy(instance)
     return Response(
         {
             'code': getattr(settings, 'SUCCESS_CODE', 1),
             'message': "Successfully deleted preset filter."
         },
         status=status.HTTP_200_OK)
def mute_device_view(request, device_id):
    '''
    API to mute device
    :param request:
    :param device_id:
    :return:
    '''
    try:
        device_obj = Device.objects.get(pk=device_id)
        device_setting, _ = DeviceSetting.objects.get_or_create(
            device=device_obj)
        mute_serializer = DeviceMuteSettingSerializer(device_setting,
                                                      data=request.data)
        mute_serializer.is_valid(raise_exception=True)
        mute_serializer.save()

        create_activity_log(
            request,
            "Mute setting of device '{device}' of user '{email} updated.".
            format(device=device_obj.serial_number,
                   email=request.auth.user.email))

        data_to_cache = {
            'id':
            device_setting.id,
            'mute_start': (datetime.datetime.strptime(
                mute_serializer.data['mute_settings']['mute_start'],
                "%Y-%m-%dT%H:%M:%SZ")).strftime('%Y-%m-%d %H:%M:%S'),
            'is_muted':
            mute_serializer.data['mute_settings']['is_muted'],
            'mute_duration':
            mute_serializer.data['mute_settings']['mute_duration']
        }
        update_cached_device_list(data_to_cache)

        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "Device Mute status is Changed.",
            'data': mute_serializer.data
        }

        return Response(data, status=status.HTTP_200_OK)

    except (AttributeError, ObjectDoesNotExist) as err:
        return Response(
            {
                "code": getattr(settings, 'ERROR_CODE', 0),
                "message": str(err)
            },
            status=status.HTTP_400_BAD_REQUEST)
Пример #10
0
    def update(self, request, *args, **kwargs):
        user = request.auth.user
        serializer = UserSerializer(user, data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        create_activity_log(request,
                            "User profile of '{}' updated.".format(user.email))

        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "User successfully updated",
            'data': serializer.data
        }
        return Response(data, status=status.HTTP_200_OK)
Пример #11
0
def delete_billing_card(request):
    '''
    API to delete logged in User's billing info.
    '''
    stripe.api_key = settings.STRIPE_API_KEY
    card_id = request.data['id']
    user = request.auth.user
    billing_obj = Billing.objects.get(user=user)
    customer = stripe.Customer.retrieve(billing_obj.customer_id)
    customer.sources.retrieve(card_id).delete()
    create_activity_log(request, "A card of user '{email}' deleted.".format(email=user.email))

    data = {
        "code": getattr(settings, 'SUCCESS_CODE', 1),
        "message": "Card is Successfully removed",
    }
    return Response(data, status=status.HTTP_200_OK)
Пример #12
0
 def update(self, request, *args, **kwargs):
     camera = self.get_object()
     serializer = DeviceCameraSerializer(camera, data=request.data)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     create_activity_log(
         request,
         "Camera information for device '{s_no}' of user '{email}' updated."
         .format(s_no=camera.camera_service.serial_number,
                 email=request.auth.user.email))
     data = {
         'code': getattr(settings, 'SUCCESS_CODE', 1),
         'message': "Successfully updated device's camera information.",
         'data': {
             'camera_service': serializer.data
         }
     }
     return Response(data, status=status.HTTP_200_OK)
Пример #13
0
    def create(self, request, *args, **kwargs):
        device_network = self.get_queryset()
        if len(device_network) >= 2:
            data = {
                'code': getattr(settings, 'ERROR_CODE', 0),
                'message': "Multiple secondary networks can't be set."
            }
            return Response(data, status=status.HTTP_400_BAD_REQUEST)

        data = request.data
        if len(device_network.filter(
                primary_network=True)) == 0 and not data['primary_network']:
            data = {
                'code': getattr(settings, 'ERROR_CODE', 0),
                'message': "Secondary network can't be set first."
            }
            return Response(data, status=status.HTTP_400_BAD_REQUEST)

        if len(device_network.filter(
                primary_network=True)) == 1 and data['primary_network']:
            data = {
                'code': getattr(settings, 'ERROR_CODE', 0),
                'message': "Multiple primary network can't be set."
            }
            return Response(data, status=status.HTTP_400_BAD_REQUEST)

        serializer = DeviceNetworkSerializer(data=data)
        serializer.is_valid(raise_exception=True)
        serializer.save(device=self.device)

        message = "{network} network added to device '{device}' of user '{email}'."
        message = message.format(
            network='Primary' if data['primary_network'] else 'Secondary',
            device=self.device.serial_number,
            email=request.auth.user.email)
        create_activity_log(request, message)

        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "Device successfully updated.",
            'data': serializer.data
        }
        return Response(data, status=status.HTTP_200_OK)
Пример #14
0
    def create(self, request, *args, **kwargs):
        user = request.auth.user
        device_obj = Device.objects.get(pk=self.kwargs['id'])
        serializer = DeviceCameraSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save(device=device_obj)

        create_activity_log(
            request,
            "Camera information for device '{s_no}' of user '{email}' added.".
            format(s_no=device_obj.serial_number, email=user.email))

        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "Successfully added device's camera information.",
            'data': {
                'camera_service': serializer.data
            }
        }
        return Response(data, status=status.HTTP_201_CREATED)
    def post(self, request, *args, **kwargs):
        if not valid_password_regex(request.data['new_password1']):
            return Response(
                {
                    "code":
                    getattr(settings, 'ERROR_CODE', 0),
                    "message":
                    "Password must be 8 characters long with at least 1 number or 1 special character."
                },
                status=status.HTTP_400_BAD_REQUEST)

        response = super().post(request, *args, **kwargs)
        create_activity_log(
            request, "Password of user '{email}' changed.".format(
                email=request.auth.user.email))
        response.data = {
            "code": getattr(settings, 'SUCCESS_CODE', 1),
            "message": "New password has been saved."
        }
        return response
Пример #16
0
    def destroy(self, request, *args, **kwargs):
        instance = self.get_object()
        if instance.primary_network:
            return Response(
                {
                    'code': getattr(settings, 'ERROR_CODE', 0),
                    'message': "Primary network can't be deleted."
                },
                status=status.HTTP_400_BAD_REQUEST)

        message = "Secondary network of device '{device}' of user '{email}' deleted."
        message = message.format(device=instance.device.serial_number,
                                 email=request.auth.user.email)
        create_activity_log(request, message)

        instance.delete()
        return Response(
            {
                'code': getattr(settings, 'SUCCESS_CODE', 1),
                'message': "Secondary network successfully deleted."
            },
            status=status.HTTP_200_OK)
Пример #17
0
    def create(self, request, *args, **kwargs):
        user = request.auth.user
        industry_id = request.data.get('industry_type_id', '')
        franchise_id = request.data.get('location_type_id', '')
        if not industry_id:
            return Response(
                {
                    'code': getattr(settings, 'ERROR_CODE', 0),
                    'message': "Industry Type can't be null/blank."
                },
                status=status.HTTP_400_BAD_REQUEST)

        if not franchise_id:
            return Response(
                {
                    'code': getattr(settings, 'ERROR_CODE', 0),
                    'message': "Location Type can't be null/blank."
                },
                status=status.HTTP_400_BAD_REQUEST)

        industry = Industry.objects.get(pk=industry_id)
        franchise = Franchise.objects.get(pk=franchise_id)

        serializer = DeviceSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save(user=user,
                        industry_type=industry,
                        location_type=franchise)

        create_activity_log(
            request, "Device '{s_no}' added to user '{email}'.".format(
                s_no=serializer.data['serial_number'], email=user.email))

        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "Successfully device created.",
            'data': serializer.data
        }
        return Response(data, status=status.HTTP_201_CREATED)
Пример #18
0
 def create(self, request, *args, **kwargs):
     user = request.auth.user
     if self.get_queryset():
         serializer = BusinessSerializer(self.get_queryset().first(),
                                         data=request.data)
     else:
         serializer = BusinessSerializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     serializer.save(user=user)
     create_activity_log(
         request,
         "Business information of user '{}' added.".format(user.email))
     headers = self.get_success_headers(serializer.data)
     data = {
         'code':
         getattr(settings, 'SUCCESS_CODE', 1),
         'message':
         "Business Info successfully created."
         if self.get_queryset() else "Business Info successfully updated.",
         'data':
         serializer.data
     }
     return Response(data, status=status.HTTP_201_CREATED, headers=headers)
Пример #19
0
    def create(self, request, *args, **kwargs):
        data = request.data
        stripe.api_key = settings.STRIPE_API_KEY
        stripe_token = data['id'].strip()

        email = data['email']

        user = request.auth.user
        billing_obj = Billing.objects.filter(user=user)
        serializer = BillingSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        if billing_obj:
            stripe.Customer.retrieve(billing_obj.first().customer_id).sources.create(source=stripe_token)
            customer = stripe.Customer.retrieve(billing_obj.first().customer_id)

        else:
            try:
                customer = stripe.Customer.create(
                    source=stripe_token,
                    email=email
                )
                serializer.save(user=user, customer_id=customer.id)

            except Exception:
                return Response({
                    'code': getattr(settings, 'ERROR_CODE', 0),
                    'message': "Stripe Token has already been used. Please try again with new token."
                }, status=status.HTTP_400_BAD_REQUEST)

        create_activity_log(request, "A card added to user '{email}'.".format(email=user.email))
        data = {
            'code': getattr(settings, 'SUCCESS_CODE', 1),
            'message': "Billing Info successfully created.",
            'data': customer
        }
        return Response(data, status=status.HTTP_201_CREATED)
Пример #20
0
 def create(self, request, *args, **kwargs):
     data = request.data
     user = request.auth.user
     serializer = PresetFilterSerializer(data=data)
     serializer.is_valid(raise_exception=True)
     try:
         serializer.save(user=user)
         create_activity_log(
             request, "Preset '{preset}' added to user '{email}'.".format(
                 preset=serializer.data['name'], email=user.email))
         return Response(
             {
                 "code": getattr(settings, "SUCCESS_CODE", 1),
                 "message": "Successfully fetched preset filter data.",
                 "data": serializer.data
             },
             status=status.HTTP_200_OK)
     except:
         return Response(
             {
                 "code": getattr(settings, "ERROR_CODE", 0),
                 "message": "This preset name already exists",
             },
             status=status.HTTP_400_BAD_REQUEST)