示例#1
0
    def delete(self, user_id):
        """
        DELETE method
        Removes an account
        Param: string id
        Return: dict (message ok / message)
        """

        data = parser.parse_args()

        user = UsersModel.find_by_id(user_id=user_id)

        if user:
            try:
                user.delete_from_db()
                return {
                    'message':
                    "User with id [{}] and all associated info deleted".format(
                        user_id)
                }, 200
            except:
                return {"message": "Error Description"}, 500
        else:
            return {
                'message': "User with id [{}] Not found".format(user_id)
            }, 404
示例#2
0
    def find_last_rentals_info(cls, moto, num_rentals, associated_rentals):
        """
        Finds n last rentals from a moto
        Param: moto id and rentals num
        Return: Json
        """
        final_list = [moto.json()]
        count = 0

        associated_rentals_json = [
            rental.json() for rental in associated_rentals
        ]
        sorted_associated_rentals = sorted(associated_rentals_json,
                                           key=lambda k: k['id'])
        sorted_associated_rentals.reverse()

        for rental in sorted_associated_rentals:
            if (count < num_rentals):
                count += 1
                user = UsersModel.find_by_id(rental['user_id'])
                final_list.append([rental, user.json()])
            else:
                break

        return final_list
示例#3
0
 def get(cls, token):
     try:
         user_id = decodeID(token)
         user = UsersModel.find_by_id(user_id)
         if not user or user.token != token:
             return {"success": False, 'message': 'Record Not Found'}, 404
         return user.json(), 200
     except Exception as e:
         return {"success": False, "message": str(e)}
示例#4
0
 def get(self):
     # search interface
     try:
         user_instance = UsersModel.find_by_id(current_identity.id)
         user_dump, errors = UsersSchema().dump(user_instance)
         if errors:
             return StandardResponse(404, 1, u'Resource Not Found')
     except Exception, e:
         return StandardResponse(500, 1, u'SQLAlchemy Error')
	def put(self, user_id, alt_phone_number):

		user = UsersModel.find_by_id(user_id)

		if user:
			user.alt_phone_number = alt_phone_number
			user.save_to_db()
			return {'data':{'status': True, 'user': user.json()}}

		else:
			return {"data": {"status": False}}
示例#6
0
    def put(self, user_id):
        """
        PUT method
        Modifies a user
        Param: id
        Return: dict (user created)
        """
        data = parser.parse_args()

        user = UsersModel.find_by_id(user_id=user_id)

        if data['name']:
            user.name = data["name"]

        if data['surname']:
            user.surname = data["surname"]

        if data['national_id_document']:
            user.national_id_document = data["national_id_document"]

        if data['country']:
            user.country = data["country"]

        if data['mail']:
            user.mail = data["mail"]

        if data['google_token']:
            user.google_token = data["google_token"]

        if data['role']:
            user.role = data["role"]

        if data['id_bank_data']:
            user.id_bank_data = data["id_bank_data"]

        try:
            user.save_to_db()
            return {'user': UsersModel.find_by_id(user_id).json()}, 200
        except:
            return {"message": "Error Description"}, 500
示例#7
0
    def delete(cls, token):
        try:
            user_id = decodeID(token)
            user = UsersModel.find_by_id(user_id)
            if not user or user.token != token:
                return {"success": False, 'message': 'Record Not Found'}, 404

            user.deleted_by = 1
            user.deleted_on = datetime.now()
            user.save_to_db()
            #user.delete_from_db()
            return {"success": True, 'message': 'Record deleted.'}, 200
        except Exception as e:
            return {"success": False, "message": str(e)}
示例#8
0
    def put(self, token):
        try:
            data = self.parser.parse_args()
            validateObj = UsersModel.validateData(data, request)
            if type(validateObj) is dict:
                return {"success": False, "errors": validateObj}, 400

            user_id = decodeID(token)
            user = UsersModel.find_by_id(user_id)
            if not user or user.token != token:
                return {"success": False, 'message': 'Record Not Found'}, 404

            user.modified_on = datetime.now()
            user.modified_by = 1
            user.password = data['password']
            user.user_type_id = data['user_type_id']
            user.company_name = data['company_name']
            user.first_name = data['first_name']
            user.last_name = data['last_name']
            user.phone = data['phone']
            user.title = data['title']
            user.owner_manager = data['owner_manager']
            user.yearly_budget = data['yearly_budget']
            user.logo = data['logo']
            user.city = data['city']
            user.country_id = data['country_id']
            user.address = data['address']
            user.timezone = data['timezone']
            user.level = data['level']
            user.permission = data['permission']
            user.assigned_brands = data['assigned_brands']
            user.assigned_products = data['assigned_products']
            user.assigned_services = data['assigned_services']
            user.parent_user_id = data['parent_user_id']
            name = data['email']
            if name.strip():
                user.save_to_db()
            else:
                return {
                    "success": False,
                    "message": "String Should not be empty"
                }

            return {
                "success": True,
                "message": "Record updated successfully."
            }, 200
        except Exception as e:
            return {"success": False, "message": str(e)}
示例#9
0
 def find_by_user_id(cls, user_id, view_all):
     """
     Finds bank data by user id
     Param: number user id
     Return: BankDataModel
     """
     if (view_all):
         return BankDataModel.query.filter_by(user_id=user_id).all()
     else:
         user = UsersModel.find_by_id(user_id)
         if user:
             return BankDataModel.query.filter_by(
                 id_bank_data=user.id_bank_data).all()
         else:
             return None
	def put(self, user_id, password, new_password):

		user = UsersModel.find_by_id(user_id)
		if user is not None:

			if user.password == password:

				user.password = new_password
				try:
					user.save_to_db()
					return {"data":{"status": True}}
				except:
					return {"data": {"status": False}}


		return {"data": {"status": False}}
示例#11
0
    def delete(self, id_bank_data):
        """
        DELETE method
        Removes bank data
        Param: string bank data ip
        Return: dict (message ok / message)
        """
        data = parser.parse_args()

        if not data['user_id']:
            return {
                'message': {
                    "user_id": "Specify user to delete card from"
                }
            }, 400

        bdata = BankDataModel.find_by_user_id_and_id_bank_data(
            user_id=data['user_id'], id_bank_data=id_bank_data)

        user = UsersModel.find_by_id(data['user_id'])

        if not user:
            return {
                'message':
                "User with id [{}] does not exist".format(data['user_id'])
            }, 409

        if bdata:
            if str(user.id_bank_data) == id_bank_data:
                user.id_bank_data = None

            try:
                user.save_to_db()
                bdata.delete_from_db()
                return {
                    'message':
                    "Data with bank data id [{}] and all associated info deleted"
                    .format(id_bank_data)
                }, 200
            except:
                return {"message": "Error Description"}, 500
        else:
            return {
                'message':
                "Data with bank data id [{}] Not found".format(id_bank_data)
            }, 404
示例#12
0
    def get(self):
        """
        GET method
        Gets an account by id or google token
        Param: string id or google token
        Return: dict (account ok / message)
        """

        data = parser.parse_args()

        arguments = sum([1 if value else 0 for value in data.values()])

        if arguments > 1:
            return {'message': "Please filter by only one feature"}, 400
        if arguments <= 0:
            return {
                'message':
                "Please filter by at least one feature: id or google_token"
            }, 400

        if data['id']:
            user = UsersModel.find_by_id(user_id=data['id'])
            search_by = ('id', data['id'])
        elif data['google_token']:
            user = UsersModel.find_by_google_token(
                google_token=data['google_token'])
            search_by = ('Google token', data['google_token'])
        else:
            return {
                'message':
                "Please filter by a valid feature: id or google_token"
            }, 400

        if user:
            return {'user': user.json()}, 200
        else:
            return {
                'message':
                "User with {} [{}] Not found".format(search_by[0],
                                                     search_by[1])
            }, 404
示例#13
0
	def get(self, user_id, order_id):

		user = UsersModel.find_by_id(user_id)
		if user:

			fcmtoken = user.fcmtoken
			fname = user.fname
			lname = user.lname
			firebase = pyrebase.initialize_app(config)
			dbfirebase = firebase.database()
			dbfirebase.child("orders").child(order_id).update({'status': '3'})
			push_service = FCMNotification(api_key="AAAABnCMzP4:APA91bHf4jst14Er5BrZMC9fOVVRGtMUVkPF7VYUI8t3BWbReJJbH_KYui8TIjITnTGZTq8HoKRPztnBsSXAD07m-JA1Tv1Wf6-I4P8gy3coaeMzJpG2K2alBF9iOHJQjbtQhjXuxzFo")
			message_title = fname + " " + lname
			message_body = " Your Order is out for delivery.. You can track the delivery boy..."
			push_service.notify_single_device(registration_id=fcmtoken, message_title=message_title, message_body=message_body)
 				
 			return {'data': {'status': True}}

 		else:

 			return {'data': {'status': False}}
示例#14
0
    def post(self):
        """
        POST method
        Adds new bank data
        Return: dict (account created / message)
        """
        data = parser.parse_args()

        if not data['user_id']:
            return {'message': {"user_id": "User id cant be empty"}}, 400

        if not data['card_number']:
            return {
                'message': {
                    "card_number": "Card number cant be empty"
                }
            }, 400

        if not data['card_owner']:
            return {'message': {"card_owner": "Card owner cant be empty"}}, 400

        if not data['card_cvv']:
            return {'message': {"card_cvv": "Card CVV cant be empty"}}, 400

        if not data['card_expiration']:
            return {
                'message': {
                    "card_expiration": "Card expiration date cant be empty"
                }
            }, 400

        if BankDataModel.find_by_user_id_and_card_number(
                data['user_id'], data['card_number']):
            return {
                'message':
                "Data with user id [{}] and card number [{}] already exists".
                format(data['user_id'], data['card_number'])
            }, 409

        user = UsersModel.find_by_id(data['user_id'])

        if user:
            bdata = BankDataModel(user_id=data['user_id'],
                                  card_number=data['card_number'],
                                  card_owner=data['card_owner'],
                                  card_cvv=data['card_cvv'],
                                  card_expiration=data['card_expiration'])
            try:
                bdata.save_to_db()
                try:
                    if not user.id_bank_data:
                        user.id_bank_data = bdata.id_bank_data
                    user.save_to_db()
                except:
                    return {
                        'bankdata':
                        "Bank data was created, but could not update user card preferences"
                    }, 201
                return {
                    'message':
                    BankDataModel.find_by_user_id_and_card_number(
                        bdata.user_id, bdata.card_number).json()
                }, 201
            except:
                return {"message": "Error Description"}, 500
        else:
            return {
                'message':
                "User with id [{}] does not exist".format(data['user_id'])
            }, 409
示例#15
0
def identity_callback(payload):
    user_identity = payload['identity']
    id = user_identity.get('useruuid', "")
    return UsersModel.find_by_id(id)
示例#16
0
def identity(payload):
    id = payload['identity']
    return UsersModel.find_by_id(id)
示例#17
0
    def post(self):

        # db.session.begin(subtransactions=True)

        try:

            data = MenuOrderResource.parser.parse_args()

            if data['payment_type'] == "CD":
                payment = PaymentModel(data['payment_type'], "COD",
                                       data['amount'], data['amount_payable'],
                                       data['amount_tax'], data['amount_menu'],
                                       data['amount_discount'],
                                       data['amount_wallet'])
                try:
                    # payment.save_to_db()
                    db.session.add(payment)
                    db.session.flush()
                    # db.session.commit()
                except:
                    return {
                        'data': {
                            "status": False,
                            "message": "Paymnet False"
                        }
                    }, 500

                # payment_id = payment.id

                order_id = MenuOrderModel.getOrderNumber()

                order = MenuOrderModel(order_id, data['user_id'], payment.id,
                                       data['address_id'], data['promo_code'],
                                       data['special_note_required'],
                                       data['ratings'], 0)
                try:
                    # order.save_to_db()
                    db.session.add(order)
                    db.session.flush()
                    # db.session.commit()
                except:
                    return {
                        'data': {
                            "status": False,
                            "message": "Order Failed"
                        }
                    }, 500

                o_id = order.id

                menu = json.loads(data['menu'])

                for m in menu:

                    print str(m)
                    # m = json.loads(me)

                    mmodel = MenuOrderItemModel(o_id, m['menu_id'],
                                                m['menu_qty'],
                                                m['menu_amount'],
                                                m['menu_choice'])

                    try:
                        # mmodel.save_to_db()
                        db.session.add(mmodel)
                        db.session.flush()
                        # db.session.commit()
                    except:
                        return {
                            'data': {
                                "status": False,
                                "message": "Menu Item Save Failed"
                            }
                        }, 500

                db.session.commit()
                push_service = FCMNotification(
                    api_key=
                    "AAAABnCMzP4:APA91bHf4jst14Er5BrZMC9fOVVRGtMUVkPF7VYUI8t3BWbReJJbH_KYui8TIjITnTGZTq8HoKRPztnBsSXAD07m-JA1Tv1Wf6-I4P8gy3coaeMzJpG2K2alBF9iOHJQjbtQhjXuxzFo"
                )

                # Your api-key can be gotten from:  https://console.firebase.google.com/project/<project-name>/settings/cloudmessaging
                firebase = pyrebase.initialize_app(config)
                dbfirebase = firebase.database()

                user = UsersModel.find_by_id(int(data['user_id']))
                address = UsersAddressModel.find_by_id(int(data['address_id']))
                data = {
                    "user_id":
                    data['user_id'],
                    "status":
                    "0",
                    "order":
                    order.json(),
                    "payment":
                    payment.json(),
                    "menu":
                    menu,
                    "user":
                    user.json(),
                    "address":
                    address.json(),
                    "datetime":
                    str(datetime.datetime.now(pytz.timezone('Asia/Calcutta')))
                }
                dbfirebase.child("orders").child(str(order_id)).set(data)
                admin = AdminModel.find_by_username("admin")
                print admin.fcmtoken
                registration_id = admin.fcmtoken
                message_title = "New Order"
                message_body = "A new Food order has arrived..!! Confirm the order "
                push_service.notify_single_device(
                    registration_id=registration_id,
                    message_title=message_title,
                    message_body=message_body)

                return {
                    'data': {
                        "status": True,
                        "payment": payment.json(),
                        "order": order.json(),
                        "menu": menu
                    }
                }
        # except:
        # 	db.session.rollback()
        finally:
            db.session.close()