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()
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)
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])