Esempio n. 1
0
    def post(self, request, format=None):
        serializer = AccountSerializer(data=request.data)
        if serializer.is_valid():
            try:
                if Account.objects.filter(productType=request.data['productType'], instanceId=request.data['instanceId']):
                    print ("  [ERROR] There is an entry already with that InstanceId (%s) for the same ProductType (%s)" % (request.data['instanceId'], request.data['productType']))
                    return Response(status=status.HTTP_400_BAD_REQUEST)
                serializer.save()
                #prepares and sends the message to the queue
                message = {}
                message['instanceId'] = request.data['instanceId']
                message['event'] = request.data['status']
                #send_msg(str(message))
                send_msg(json.dumps(serializer.data))

                #create the SLA agreements in the SLA module based on the already created templates
                templateId = request.data['productType']+request.data['productId']+request.data['flavour']
                createAgreement(templateId, request.data['clientId'], request.data['agreementId'])
                #start the Agreement enforcement
                f = restclient.Factory(settings.SLA_URL)
                a_enforcement = f.enforcements()
                a_enforcement.start(request.data['agreementId']) 

            except ReferenceError:
                print "  [ERROR] Could not update the messages queue"
                return Response(status=status.HTTP_408_REQUEST_TIMEOUT)
            except Exception as e:
                print "DEBUG: ", e
                return Response(status=status.HTTP_400_BAD_REQUEST)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 2
0
 def get(self, request, vnf_instance, new_status, format=None):
     queryset = Account.objects.filter(productType=settings.VNF,
                                       instanceId=vnf_instance)
     if queryset.exists():
         jsonStatus = '{"status":"' + new_status + '"}'
         for account in queryset:
             serializer = AccountSerializer(account,
                                            data=json.loads(jsonStatus))
             try:
                 if serializer.is_valid():
                     #saves the new status
                     serializer.save()
                     print "status changed "
                     #prepares and sends the message to the queue
                     message = {}
                     message['instanceId'] = vnf_instance
                     message['event'] = new_status
                     #send_msg(json.dumps(serializer.data))
                     return Response(serializer.data,
                                     status=status.HTTP_201_CREATED)
             except ReferenceError:
                 print "  [ERROR] Could not update the messages queue"
                 return Response(status=status.HTTP_408_REQUEST_TIMEOUT)
             except Exception:
                 return Response(status=status.HTTP_400_BAD_REQUEST)
     return Response(queryset, status=status.HTTP_404_NOT_FOUND)
Esempio n. 3
0
 def get(self, request, format=None):
     """
     ---
     parameters:
         - name: vnfId
           description: VNF ID
           type: string
           paramType: form
     serializer: AccountSerializer
     """
     if self.request.query_params:
         vnfId = self.request.query_params.get('vnfId', None)
         if vnfId is not None:
             #find all the VNF running instances with the given VNF ID
             queryset = Account.objects.filter(productId=vnfId, productType=settings.VNF, status=settings.STATUS_RUNNING)
             serviceListing = list()
             try:
                 for obj in queryset:
                     if (obj.relatives) is not None:
                         #find all the running services that use that VNF
                         serviceListing.append(Account.objects.filter(status=settings.STATUS_RUNNING, productType=settings.NETWORK_SERVICE, instanceId=obj.relatives)[0])
                 #remove duplicates
                 serviceListing= sorted(set(serviceListing))
                 serializer = AccountSerializer(serviceListing, many=True)
                 print "vnfid: ", vnfId
                 return Response(serializer.data)
             except Exception:
                 print " [ERROR] Database malformed: the service does not exist."
                 #raise
                 return Response(status=status.HTTP_400_BAD_REQUEST)
         else:
             return Response(status=status.HTTP_400_BAD_REQUEST)
             
     serializer = AccountSerializer(Account.objects.filter(productType=settings.VNF, status=settings.STATUS_RUNNING), many=True)
     return Response(serializer.data)#, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 4
0
def accounts_delete(request):
    """
        Function to manage the deletion of the accounts
    """
    # Creating the default value
    account = None

    # If not declared in settings, configuring a default value
    # http://www.django-rest-framework.org/api-guide/exceptions/#exception-handling-in-rest-framework-views
    try:
        nfe = settings.NON_FIELD_ERRORS_KEY
    except AttributeError:
        nfe = 'non_field_errors'

    # Parsing data from the request and changing the creator field for the user who did the request
    data = JSONParser().parse(request)
    data['creator'] = request.user.pk

    # Check if all the data is valid to be used
    serializer = AccountSerializer(data=data)
    if serializer.is_valid():
        # If valid, try to get the model instance to check if already exists
        try:
            account = Account.objects.get(id=serializer.validated_data['id'])

            # Check if the creator is who did the request
            if request.user.pk == account.creator.pk:
                account.delete()
                return Response({
                    'status': 'ok',
                    'message': 'deleted'
                })
            else:
                return Response(
                    {
                        'errors': {
                            nfe: 'No permissions',
                        }
                    },
                    status=status.HTTP_400_BAD_REQUEST,
                )
        except Account.DoesNotExist:
            return Response(
                {
                    'errors': {
                        nfe: 'Not exists',
                    }
                },
                status=status.HTTP_400_BAD_REQUEST,
            )
    else:
        return Response(
            {
                'errors': {
                    'data_validation_error': 'Error validating data',
                }
            },
            status=status.HTTP_400_BAD_REQUEST,
        )
Esempio n. 5
0
 def put(self, request, pk, format=None):    
     account = self.get_object(pk)
     serializer = AccountSerializer(account, data=request.data)
     print "request: ", request.data
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 6
0
 def setUp(self):
     self.account_data = {
         'username': '******',
         'email': '*****@*****.**',
         'password': '******'
     }
     self.account = Account(**self.account_data)
     self.account.save()
     self.serializer = AccountSerializer(data=self.account_data)
 def post(self, request):
     if request.user.is_authenticated:
         serializer = AccountSerializer(data=request.data)
         if serializer.is_valid():
             serializer.save(owner=request.user)
             return JsonResponse(serializer.data,
                                 status=status.HTTP_201_CREATED)
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
     return Response(status=status.HTTP_401_UNAUTHORIZED)
Esempio n. 8
0
    def post(self, request, ns_instance, new_status, format=None):
        """
        ---
        response_serializer: AccountSerializer
        """
        queryset = Account.objects.filter(productType=settings.NETWORK_SERVICE, instanceId=ns_instance)
        if queryset.exists():
            jsonStatus='{"status":"' + new_status + '"}' 
            service = queryset[0]
            serializer = AccountSerializer(service, data=json.loads(jsonStatus))
            try:
                if serializer.is_valid():
                    #saves the new status
                    serializer.save()
                    print "status changed "
                    #start/stop the SLA enforcement accordingly
                    if (new_status == settings.STATUS_RUNNING):
                        self.startEnforcement(service.agreementId)
                    if (new_status == settings.STATUS_STOPPED):
                        self.stopEnforcement(service.agreementId)

                    #prepares and sends the message to the queue
                    message = {}
                    message['instanceId'] = ns_instance
                    message['event'] = new_status
                    #print (json.dumps(serializer.data))
                    send_msg(json.dumps(serializer.data))

                    #update the status of the participant VNFs
                    vnf_list = service.relatives.replace(" ", "").split(",")
                    print "VNF list: ", vnf_list
                    for vnfInstance in vnf_list:
                        time.sleep(1)
                        print "VNF: ", vnfInstance
                        vnfquery = Account.objects.filter(productType=settings.VNF, instanceId=vnfInstance)    
                        vnf = vnfquery[0]
                        vnfserializer = AccountSerializer(vnf, many=False, data=json.loads(jsonStatus))
                        if vnfserializer.is_valid():
                            #print "VNF2: ", json.dumps(vnfserializer.data)
                            vnfserializer.save()
                            #start/stop the SLA enforcement accordingly
                            if (new_status == settings.STATUS_RUNNING):
                                self.startEnforcement(vnf.agreementId)
                            if (new_status == settings.STATUS_STOPPED):
                                self.stopEnforcement(vnf.agreementId)
                    return Response(serializer.data, status=status.HTTP_201_CREATED)
            except ReferenceError:
                print "  [ERROR] Could not update the messages queue"
                return Response(status=status.HTTP_408_REQUEST_TIMEOUT)
            except Exception as e:
                print "  [ERROR] ", e
                return Response(status=status.HTTP_400_BAD_REQUEST)
        return Response(queryset, status=status.HTTP_404_NOT_FOUND)
Esempio n. 9
0
 def post(request):
     account = Account.get_by_pk(request.user.username)
     if account is None:
         return Response({'detail': 'account is not found'},
                         status=status.HTTP_404_NOT_FOUND)
     serializer = AccountSerializer(instance=account, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response({'detail': 'account has been edited'},
                         status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
Esempio n. 10
0
 def post(self, request):
     data = request.data.copy()
     data['password'] = gen_password(len_to=10)
     serializer = AccountSerializer(data=data)
     if serializer.is_valid():
         serializer.save()
         threading.Thread(target=self._send_credentials,
                          kwargs=data).start()
         return Response({'detail': 'account has been created'},
                         status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
Esempio n. 11
0
    def post(request):
        email = request.data.get('email')
        if email is None:
            return Response({'detail': 'email was not provided'},
                            status=status.HTTP_400_BAD_REQUEST)
        account = Account.objects.filter(email=email).first()
        if account is None:
            return Response({'detail': 'account is not found'},
                            status=status.HTTP_404_NOT_FOUND)
        if 'confirmation_code' not in request.data:
            return Response({'detail': 'missing verification code'},
                            status=status.HTTP_400_BAD_REQUEST)

        session = SessionStore(session_key=account.session_key)

        if request.data.get('confirmation_code', '-1') == session['v_code']:
            new_password = request.data.get('new_password', None)
            new_password_confirm = request.data.get('new_password_confirm',
                                                    None)
            if new_password is None or new_password_confirm is None:
                return Response(
                    {'detail': 'missing new password or its confirmation'},
                    status=status.HTTP_400_BAD_REQUEST)
            if new_password != new_password_confirm:
                return Response({'detail': 'password confirmation failed'},
                                status=status.HTTP_400_BAD_REQUEST)
            data = request.data.copy()
            data['username'] = account.username
            data['password'] = new_password
            serializer = AccountSerializer(instance=account, data=data)
            if serializer.is_valid():
                serializer.save()
                session.delete()
                account.session_key = None
                account.save()

                try:
                    request.user.auth_token.delete()
                except (AttributeError, ObjectDoesNotExist):
                    pass

                logout(request)

                return Response({'detail': 'password has been changed'},
                                status=status.HTTP_201_CREATED)
            else:
                return Response(serializer.errors,
                                status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({'detail': 'verification code is incorrect'},
                            status=status.HTTP_400_BAD_REQUEST)
Esempio n. 12
0
def add(request):
    data = AccountSerializer(data=request.data)
    if not data.is_valid():
        return Response({
            'status': 400,
            'result': False
        },
                        status=resp_status.HTTP_404_NOT_FOUND)
    uuid = data.validated_data['uuid']
    value = data.validated_data['value']
    try:
        model = Account.objects.get(pk=uuid)
    except ObjectDoesNotExist:
        return Response({
            'status': 400,
            'result': False
        },
                        status=resp_status.HTTP_404_NOT_FOUND)
    if not model.status:
        return Response(
            {
                'status': 405,
                'result': False,
                'addition': {
                    'uuid': model.uuid,
                    'name': model.name,
                    'balance': model.balance,
                    'status': model.status
                },
                'description': {
                    'status': 'Счет закрыт'
                }
            },
            status=resp_status.HTTP_405_METHOD_NOT_ALLOWED)
    model.balance += value
    model.save()
    return Response(
        {
            'status': 200,
            'result': True,
            'addition': {
                'uuid': model.uuid,
                'name': model.name,
                'balance': model.balance,
                'status': model.status
            },
            'description': {
                'status': 'Счет пополнен'
            }
        },
        status=resp_status.HTTP_200_OK)
Esempio n. 13
0
 def test_create(self):
     data = {
         'username': '******',
         'email': '*****@*****.**',
         'password': '******',
         'max_backups': 7
     }
     serializer = AccountSerializer(data=data)
     serializer.create(data)
     account = Account.objects.get(pk='test_username1')
     self.assertEqual(account.email, data['email'])
     self.assertEqual(account.username, data['username'])
     self.assertEqual(account.max_backups, data['max_backups'])
     self.assertTrue(account.check_password('test_password1'))
Esempio n. 14
0
 def stopVNF(self, vnfInstance, jsonStatus, new_status):
     vnfquery = Account.objects.filter(productType=settings.VNF, instanceId=vnfInstance) 
     vnf = vnfquery[0]
     vnfSerializer = AccountSerializer(vnf, many=False, data=json.loads(jsonStatus))
     if vnfSerializer.is_valid():
         #print "VNF2: ", json.dumps(vnfserializer.data)
         vnfSerializer.save()
         #Send the message to the billing module
         send_msg(json.dumps(vnfSerializer.data))
         #start/stop the SLA enforcement accordingly
         if (new_status == settings.STATUS_RUNNING):
             self.startEnforcement(vnf.agreementId)
         if (new_status == settings.STATUS_STOPPED):
             self.stopEnforcement(vnf.agreementId)
Esempio n. 15
0
    def test_serialize(self):

        a_0 = ef.account()
        a_1 = ef.account()

        ci = ef.catalogue_item(name='names',
                               created_by=a_0,
                               maintained_by=a_1,
                               spec=[{
                                   'name': 'name',
                                   'type': 'STRING',
                                   'is_nullable': False,
                                   'is_enum': False,
                                   'size': None,
                                   'distribution': None,
                               }],
                               sample=[{
                                   'name': 'Jack'
                               }],
                               executor_type='ATHENA')

        assert CatalogueItemSerializer(ci).data == {
            '@type':
            'catalogue_item',
            'id':
            ci.id,
            'created_by':
            AccountSerializer(a_0).data,
            'updated_by':
            None,
            'maintained_by':
            AccountSerializer(a_1).data,
            'name':
            'names',
            'spec': [
                {
                    'name': 'name',
                    'type': 'STRING',
                    'is_nullable': False,
                    'is_enum': False,
                    'size': None,
                    'distribution': None,
                },
            ],
            'sample': [{
                'name': 'Jack'
            }],
            'executor_type':
            'ATHENA',
        }
Esempio n. 16
0
 def get_context_data(self, **kwargs):
     context_data = super(ImprestJVView, self).get_context_data(**kwargs)
     if 'form' in context_data:
         instance = context_data['form'].instance
         context_data['data'] = {
             'jv':
             ImprestJVSerializer(instance).data,
             'dr_ledgers':
             AccountSerializer(self.project_fy.dr_ledgers(),
                               many=True).data,
             'cr_ledgers':
             AccountSerializer(self.project_fy.cr_ledgers(),
                               many=True).data,
         }
     return context_data
Esempio n. 17
0
class ChatMessagesSerializer(serializers.ModelSerializer):
    thread = serializers.RelatedField(source='chatmessage', read_only=True)
    user = AccountSerializer()

    class Meta:
        model = ChatMessage
        fields = ['thread', 'user', 'message', 'timestamp']
Esempio n. 18
0
class UserSerializer(serializers.ModelSerializer):
    diary_list = UserDiarySerializer(many=True, read_only=True)
    account = AccountSerializer(many=True, read_only=True)

    class Meta:
        model = User
        fields = ('id', 'email', 'username', 'phone', 'account', 'diary_list')
Esempio n. 19
0
class DashboardSerializer(serializers.ModelSerializer):

    owner = AccountSerializer(Account)

    class Meta:
        model = Dashboard
        fields = '__all__'
Esempio n. 20
0
 def get(self, request, format=None):
     """
     ---
     parameters:
         - name: clientId
           description: Client ID
           type: string
           paramType: form
     serializer: AccountSerializer
     """
     if self.request.query_params:
         clientId = self.request.query_params.get('clientId', None)
         if clientId:
             queryset = Account.objects.filter(
                 status=settings.STATUS_RUNNING,
                 productType=settings.NETWORK_SERVICE,
                 clientId=clientId)
         else:
             return Response(status=status.HTTP_400_BAD_REQUEST)
     else:
         queryset = Account.objects.filter(
             status=settings.STATUS_RUNNING,
             productType=settings.NETWORK_SERVICE)
     serializer = AccountSerializer(queryset, many=True)
     return Response(serializer.data)
Esempio n. 21
0
class InvoiceSerializer(serializers.ModelSerializer):
    location = LocationSerializer()
    invoice_type = InvoiceTypeSerializer()
    account = AccountSerializer()
    labor = LaborSerializer(many=True, required=False)
    services = ServiceSerializer(many=True, required=False)
    history = VehicleLogSerializer(many=True, required=False)

    class Meta:
        model = Invoice
        fields = (
            "id",
            "invoice_number",
            "location",
            "invoice_type",
            "account",
            "receive_date",
            "complete_date",
            "year",
            "make",
            "model",
            "color",
            "vin",
            "stock_number",
            "po_number",
            "is_complete",
            "is_paid",
            "tax_rate",
            "labor",
            "services",
            "history",
        )
Esempio n. 22
0
class ProjectCommentSerializer(serializers.ModelSerializer):

    project = serializers.SlugRelatedField(read_only=True, slug_field='title')
    user = AccountSerializer(Account)

    class Meta:
        model = ProjectComment
        fields = '__all__'
Esempio n. 23
0
class ProjectSerializer(serializers.ModelSerializer):
    members = AccountSerializer(many=True, read_only=True, source='member')
    client = ClientSerializer(read_only=True)

    class Meta:
        model = Project
        fields = ('id', 'name', 'client', 'members')
        depth = 3
Esempio n. 24
0
def user_list(request, pk=None):
    """
    List all required messages, or create a new message.
    """
    if request.method == 'GET':
        if pk:  # If PrimaryKey (id) of the user is specified in the url
            users = Account.objects.filter(
                id=pk)  # Select only that particular user
        else:
            users = Account.objects.all()  # Else get all user list
        serializer = AccountSerializer(users,
                                       many=True,
                                       context={'request': request})
        return JsonResponse(serializer.data,
                            safe=False)  # Return serialized data
    elif request.method == 'POST':
        data = JSONParser().parse(
            request
        )  # On POST, parse the request object to obtain the data in json
        serializer = AccountSerializer(data=data)  # Seraialize the data
        if serializer.is_valid():
            serializer.save()  # Save it if valid
            return JsonResponse(serializer.data,
                                status=201)  # Return back the data on success
        return JsonResponse(serializer.errors,
                            status=400)  # Return back the errors  if not valid
Esempio n. 25
0
    def get(self, request, format=None):
        """
        ---
        response_serializer: AccountSerializer
        """
        accounts = Account.objects.all()
        serializer = AccountSerializer(accounts, many=True)

        return Response(serializer.data)
Esempio n. 26
0
 def test_account_getting(self):
     """Account should created"""
     # account = Account.objects.create_user('*****@*****.**', 'password')
     test_account = Account.objects.latest('created_at')
     self.assertEqual(test_account.email, self.account.email)
     serialized_account = AccountSerializer(test_account)
     self.assertEqual(serialized_account.data.get('email'), self.account.email)
     self.assertEqual(serialized_account.data.get('first_name'), self.account.first_name)
     self.assertEqual(serialized_account.data.get('is_active'), None)
Esempio n. 27
0
def accounts_add(request):
    """
        Function to manage the addition of new accounts
    """
    # Creating the default value
    response = {}

    # If not declared in settings, configuring a default value
    # http://www.django-rest-framework.org/api-guide/exceptions/#exception-handling-in-rest-framework-views
    try:
        nfe = settings.NON_FIELD_ERRORS_KEY
    except AttributeError:
        nfe = 'non_field_errors'

    # Parsing data from the request and changing the creator field for the user who did the request
    data = JSONParser().parse(request)
    data['creator'] = request.user.pk

    # Check if all the data is valid to be used
    serializer = AccountSerializer(data=data)
    if serializer.is_valid():
        # If valid, create it and notify
        try:
            Account.objects.get(iban=serializer.validated_data['iban'])
            response = {
                'errors': {
                    nfe: 'iban already exists',
                }
            }
            return Response(response, status=status.HTTP_400_BAD_REQUEST)

        except Account.DoesNotExist:
            serializer.create(serializer.validated_data)
            response = {
                'status': 'ok',
                'message': 'created'
            }
            return Response(response, status=status.HTTP_201_CREATED)
    else:
        # If not valid, raise an error for data_validation
        response = {
            {'errors': {'data_validation_error': 'Error validating data'}}
        }
        return Response(response, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 28
0
    def test_serialize(self):

        a = ef.account()

        assert AccountSerializer(a).data == {
            '@type': 'account',
            'id': a.id,
            'email': a.email,
            'type': a.type,
        }
Esempio n. 29
0
    def post(self, request, ns_instance, new_status, format=None):
        """
        ---
        response_serializer: AccountSerializer
        """
        queryset = Account.objects.filter(productType=settings.NETWORK_SERVICE, instanceId=ns_instance)
        if queryset.exists():
            jsonStatus='{"status":"' + new_status + '"}' 
            service = queryset[0]
            serializer = AccountSerializer(service, data=json.loads(jsonStatus))
            try:
                if serializer.is_valid():
                    #saves the new status
                    serializer.save()
                    print "status changed "
                    #start/stop the SLA enforcement accordingly
                    if (new_status == settings.STATUS_RUNNING):
                        self.startEnforcement(service.agreementId)
                    if (new_status == settings.STATUS_STOPPED):
                        self.stopEnforcement(service.agreementId)

                    #prepares and sends the message to the queue
                    message = {}
                    message['instanceId'] = ns_instance
                    message['event'] = new_status
                    #print (json.dumps(serializer.data))
                    send_msg(json.dumps(serializer.data))

                    #update the status of the participant VNFs
                    vnf_list = service.relative_instances.replace(" ", "").split(",")
                    print "VNF list: ", vnf_list
                    for vnfInstance in vnf_list:
                        time.sleep(1)
                        print "VNF: ", vnfInstance
                        self.stopVNF(vnfInstance, jsonStatus, new_status)
                    return Response(serializer.data, status=status.HTTP_201_CREATED)
            except ReferenceError:
                print "  [ERROR] Could not update the messages queue"
                return Response(status=status.HTTP_408_REQUEST_TIMEOUT)
            except Exception as e:
                print "  [ERROR] ", e
                return Response(status=status.HTTP_400_BAD_REQUEST)
        return Response(queryset, status=status.HTTP_404_NOT_FOUND)
Esempio n. 30
0
 def test_validate_raises_max_backups_is_non_number(self):
     data = {
         'username': '******',
         'email': '*****@*****.**',
         'password': '******',
         'max_backups': 'f'
     }
     serializer = AccountSerializer(data=data)
     self.assertRaises(serializers.ValidationError, serializer.validate,
                       *(data, ))
Esempio n. 31
0
def search(request):

    data = {}

    search_term = request.GET['q']
    tags = request.GET['type'].split(",")

    offset, limit = get_offset_limit(request=request)

    for tag in tags:

        addition = '&q=' + search_term + '&type=' + tag

        if tag == 'restaurant':

            restaurants = Restaurant.objects.filter(
                name__icontains=search_term)[offset:offset + limit + 1]

            next = pagination_maker(request=request,
                                    offset=offset,
                                    limit=limit,
                                    more=restaurants[limit:])
            restaurant_list = []

            for restaurant in restaurants[:limit]:

                restaurant_serializer = RestaurantSerializer(restaurant)
                restaurant_list.append(restaurant_serializer.data)

            data['restaurants'] = {'items': restaurant_list}
            data['restaurants']['next'] = next

        elif tag == 'user':

            accounts = Account.objects.filter(
                Q(first_name__icontains=search_term)
                | Q(last_name__icontains=search_term))[offset:offset + limit +
                                                       1]

            next = pagination_maker(request=request,
                                    offset=offset,
                                    limit=limit,
                                    more=accounts[limit:])

            accounts_list = []

            for account in accounts:

                account_serializer = AccountSerializer(account)
                accounts_list.append(account_serializer.data)

            data['users'] = {'items': accounts_list}
            data['users']['next'] = next

    return Response(data)
Esempio n. 32
0
    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        print(request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        accountSerializer=AccountSerializer()

        if (accountSerializer.validate_mobile(serializer.data['mobile'])):
            data = {
                'apikey': settings.YUNPIAN_API_KEY,
                'mobile': serializer.data['mobile'],
                'text': settings.MOBILE_VERIFICATION_MESSAGE_TEMPLATE % (
                    serializer.data['code'],
                    settings.VERIFICATION_CODE_EXPIRATION_IN_MINUTES,
                ),
            }

            try:
                r = requests.post(settings.YUNPIAN_SMS_API, data=data)
                if r.status_code == 200:
                    return Response(status=status.HTTP_201_CREATED)

                response = {
                    'detail': six.text_type(_('YUNPIAN service request failed.')),
                    'reason': six.text_type(_('Response code is not 200.')),
                    'code': r.status_code,
                }
                return Response(response, status=status.HTTP_503_SERVICE_UNAVAILABLE)

            except:
                response = {
                    'detail': six.text_type(_('YUNPIAN service request failed.')),
                    'reason': six.text_type(_('Exception catched when made request to YUNPIAN SMS API.')),
                }
                return Response(response, status=status.HTTP_503_SERVICE_UNAVAILABLE)
        response = {
                    'detail': six.text_type(_('The number has been registered.')),
                    'reason': six.text_type(_('The number has been registered.')),
                    'code': r.status_code,
                }
        return Response(response, status=status.HTTP_503_SERVICE_UNAVAILABLE)
Esempio n. 33
0
 def get(self, request, vnf_instance, new_status, format=None):
     queryset = Account.objects.filter(productType=settings.VNF, instanceId=vnf_instance)
     if queryset.exists():
         jsonStatus='{"status":"' + new_status + '"}' 
         for account in queryset:
             serializer = AccountSerializer(account, data=json.loads(jsonStatus))
             try:
                 if serializer.is_valid():
                     #saves the new status
                     serializer.save()
                     print "status changed "
                     #prepares and sends the message to the queue
                     message = {}
                     message['instanceId'] = vnf_instance
                     message['event'] = new_status
                     #send_msg(str(message))
                     send_msg(json.dumps(serializer.data))
                     return Response(serializer.data, status=status.HTTP_201_CREATED)
             except ReferenceError:
                 print "  [ERROR] Could not update the messages queue"
                 return Response(status=status.HTTP_408_REQUEST_TIMEOUT)
             except Exception:
                 return Response(status=status.HTTP_400_BAD_REQUEST)
     return Response(queryset, status=status.HTTP_404_NOT_FOUND)