예제 #1
0
 def put(self, request):
     """Update user account data
     :param email: str
     :param first_name: str
     :param last_name: str
     :param username: str
     :param password: str
     :param phone: str
     :param genre: str
     :param birthdate: date
     :param profile_photo: file
     :return token: jwt_token
     """
     user = request.user
     request_info = RequestInfo()
     serializer = UserSerializer(user, data=request.data)
     if user is not None and serializer.is_valid():
         serializer.save()
         return request_info.return_status({
             'status': status.HTTP_200_OK,
             'token': generate_jwt(user),
             'detail': 'user updated'
         })
     else:
         raise AuthenticationFailed()
예제 #2
0
def create_bill(request):
    """create bill
    :param basic_information: (dict)
	:param emisor_rfc: (str)
	:param receiver_rfc: (str)
	:param date_expedition: (date)
	:param coin: (str)
	:param folio: (str)
	:param way_to_pay: (str)
    :param concepts: (list of dicts)
        :param product_key: (str)
        :param quantity: (str)
        :param description: (str)
        :param amount: (str)
    """
    req_inf = RequestInfo()
    errors = []
    concepts = []
    try:
        request.data['basic_information']['emisor'] = Fiscal.objects.get(
            rfc=request.data['basic_information']['emisor_rfc']).user.id
        request.data['basic_information']['receiver'] = Fiscal.objects.get(
            rfc=request.data['basic_information']['receiver_rfc']).user.id
        request.data['basic_information'].pop('emisor_rfc')
        request.data['basic_information'].pop('receiver_rfc')
        for data in request.data.get('concepts'):
            concept_serializer = ConceptSerializer(data=data)
            if concept_serializer.is_valid():
                concept_serializer.save()
                concepts.append(concept_serializer.instance)
            else:
                errors.append(concept_serializer.errors)
        if len(errors) == 0:
            bill_serializer = SimpleFacturaSerializer(
                data=request.data.get('basic_information'))
            if bill_serializer.is_valid():
                bill_serializer.save()
                for con in concepts:
                    bill_serializer.instance.concepts.add(con)
                    bill_serializer.save()
                return req_inf.status()
            else:
                return req_inf.status(bill_serializer.errors,
                                      status.HTTP_400_BAD_REQUEST)
        else:
            return req_inf.return_status(errors)
    except Exception as e:
        return req_inf.status(e.args[0], status.HTTP_400_BAD_REQUEST)
예제 #3
0
 def patch(self, request):
     """User API PATCH
     Args:
         username: (str)
         first_name: (str)
         last_name: (str)
         email: (str)
         password: (str)
         phone: (str)
     Description:
         update user info view
     """
     user = get_jwt_user(request)
     data = request.data
     req_inf = RequestInfo()
     try:
         if user is not None:
             user_cls = Client.objects.get(user=user)
             if 'username' in data:
                 if self.validate_data(data.get('username'), user.username):
                     user.username = data.get('username')
             if 'email' in data:
                 if self.validate_data(data.get('email'), user_cls.user.email):
                     user.email = data.get('email')
             if 'password' in data:
                 user.set_password(data.get('password'))
             if 'phone' in data:
                 user_cls.phone = data.get('phone')
             if 'first_name' in data:
                 user.first_name = data.get('first_name')
             if 'last_name' in data:
                 user.last_name = data.get('last_name')
             user.save()
             user_cls.save()
             data_err = {
                 'status': status.HTTP_200_OK,
                 'token': generate_jwt(user, request),
                 'detail': 'user updated'
             }
             return req_inf.return_status(data_err)
         else:
             return req_inf.status_401('token invalido')
     except ObjectDoesNotExist as e:
         return req_inf.status_404(e.args[0])
     except Exception as e:
         return req_inf.status_400(e.args[0])