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
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
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)}
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}}
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
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)}
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)}
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}}
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
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
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}}
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
def identity_callback(payload): user_identity = payload['identity'] id = user_identity.get('useruuid', "") return UsersModel.find_by_id(id)
def identity(payload): id = payload['identity'] return UsersModel.find_by_id(id)
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()