def sign_in(): user_req = request.get_json(force=True) user = User.parse(user_req, "create") if "errors" in user : return jsonify(errors=user["errors"]), 400 #check user exist cond = { "email" : user_req["user"]["email"], "type" : user_req["user"]["type"] } user = db.select(table="users", conditions=cond, multiple=False) if user is None : return jsonify(info="Bad Credentials"),400 if check_password_hash(user["password"],user_req["user"]["password"]): session["user"] = { "id" : user["id"], "email": user["email"], "name" : user["name"], "type": user["type"], "company_id": user["company_id"], } session.permanent = True return jsonify(session=session["user"], info="Your are currently logged in"), 200 else: return jsonify(info="Bad Credentials"),400
def update(id: int): d = db.select(table="deliveries", conditions={"id": id}, multiple=False) if d is None: return jsonify(info="Delivery not found"), 404 args = request.get_json(force=True) delivery = Delivery.parse(args, "update") if "errors" in delivery: return jsonify(errors=delivery["errors"]), 400 delivery = delivery["delivery"] delivery["company_id"] = session["user"]["company_id"] # customer_id if "customer_id" in delivery: if not db.is_existing(table="customers", conditions={"id": delivery["customer_id"]}): return jsonify(info="Customer not found"), 404 # sender_id if "sender_id" in delivery: if not db.is_existing(table="customers", conditions={"id": delivery["sender_id"]}): return jsonify(info="Sender not found"), 404 # receiver_id if "receiver_id" in delivery: if not db.is_existing(table="customers", conditions={"id": delivery["receiver_id"]}): return jsonify(info="Receiver not found"), 404 if "date_due" in delivery and d["driver_id"] is not None: db.delete(table="delivery_orders", conditions={"delivery_id": id}) # delete old date insert_at_last_order(id, delivery["date_due"], d["driver_id"]) db.update(table="deliveries", params=delivery, conditions={"id": id}) return jsonify(info="Delivery updated successfully"), 200
def insert_at_last_order(delivery_id, date, driver_id): last = db.select( table="delivery_orders", selected_columns=("MAX(num_order)",), conditions={"date": date, "driver_id": driver_id}, multiple=False, ) last = last["MAX(num_order)"] + 1 if isinstance(last["MAX(num_order)"], int) else 1 db.insert( table="delivery_orders", params={"num_order": last, "date": date, "delivery_id": delivery_id, "driver_id": driver_id}, )
def get(id: int): conditions = {"id": id, "company_id": session["user"]["company_id"]} if session["user"]["type"] == "driver": conditions["driver_id"] = session["user"]["id"] delivery = db.select(table="deliveries", conditions=conditions, multiple=False) if delivery is None: return jsonify(info="Delivery not found"), 404 d = Delivery(delivery).to_dict() return jsonify(delivery=d), 200
class FlicketSubscription(Base): __tablename__ = 'flicket_ticket_subscription' id = db.Column(db.Integer, primary_key=True) ticket_id = db.Column(db.Integer, db.ForeignKey(FlicketTicket.id)) ticket = db.relationship(FlicketTicket) user_id = db.Column(db.Integer, db.ForeignKey(FlicketUser.id)) user = db.relationship(FlicketUser) user_def = db.deferred(db.select([FlicketUser.name]).where(FlicketUser.id == user_id)) def __repr__(self): return '<Class FlicketSubscription: ticket_id={}, user_id={}>'.format(self.ticket_id, self.user_id)
def get(id:int): company_id = session["user"]["company_id"] customer_raw = db.select(table="customers", conditions={"id": id, "company_id": company_id}, multiple=False) if customer_raw is None: return jsonify(info="Customer not found"),404 customer = { "id": customer_raw["id"], "name" : customer_raw["name"], "phone" : customer_raw["phone"], "address" : customer_raw["address"], "location": { "lat": customer_raw["location_lat"], "lng": customer_raw["location_lng"], } } return jsonify(customer=customer),200
class FlicketSubscription(PaginatedAPIMixin, Base): __tablename__ = 'flicket_ticket_subscription' id = db.Column(db.Integer, primary_key=True) ticket_id = db.Column(db.Integer, db.ForeignKey(FlicketTicket.id)) ticket = db.relationship(FlicketTicket) user_id = db.Column(db.Integer, db.ForeignKey(FlicketUser.id)) user = db.relationship(FlicketUser) user_def = db.deferred( db.select([FlicketUser.name]).where(FlicketUser.id == user_id)) def to_dict(self): """ :return: dict() """ data = { 'id': self.id, 'ticket_id': self.ticket_id, 'user_id': self.user_id, 'user_def': self.user_def, 'links': { 'self': app.config['base_url'] + url_for('bp_api.get_subscription', id=self.id), 'subscriptions': app.config['base_url'] + url_for('bp_api.get_subscriptions'), 'ticket': app.config['base_url'] + url_for('bp_api.get_ticket', id=self.ticket_id), 'user': app.config['base_url'] + url_for('bp_api.get_user', id=self.user_id), } } return data def __repr__(self): return '<Class FlicketSubscription: ticket_id={}, user_id={}>'.format( self.ticket_id, self.user_id)
def generate_random(): req = request.get_json(force=True) company_id = session["user"]["company_id"] list_content = ["fish", "glass", "vegetables", "fragile", "frozen", "wood", "letter", "material", "electronic"] random_weight = lambda : round(random.uniform(0.10, 2000.00),2) random_area = lambda : round(random.uniform(0.10, 34.00), 2) customer_ids = db.select(table="customers", selected_columns=("id",), conditions={"company_id" : company_id}, multiple=True) random_receiver = lambda id : random.choice([v["id"] for v in customer_ids if v["id"]!=id ]) for x in range(0, 5): delivery = { "customer_id" : random.choice(customer_ids)["id"], "sender_id" : random.choice(customer_ids)["id"], "date_due" : req["date_due"], "date_created" : req["date_due"], "content" : random.choice(list_content), "area" : random_area(), "weight" : random_weight(), "company_id" : company_id } delivery["receiver_id"] = random_receiver(delivery["sender_id"]) er = 3 delivery_id = db.insert(table="deliveries", params=delivery) assign_driver(delivery_id, 3) # if x <3 : # db.update(table="deliveries",params={"state" : "taken"}, conditions={"id": delivery_id, "company_id": company_id}) # # if x>=3 and x<5: # db.update(table="deliveries",params={"state" : "on way"}, conditions={"id": delivery_id, "company_id": company_id}) # # if x==7 : # db.update(table="deliveries",params={"state" : "picked up"}, conditions={"id": delivery_id, "company_id": company_id}) # # if x==8 : # db.update(table="deliveries",params={"state" : "delivered"}, conditions={"id": delivery_id, "company_id": company_id}) return jsonify(info="done"), 200
def get(id: int): company_id = session["user"]["company_id"] v = db.select(table="vehicles", conditions={"id": id, "company_id": company_id}, multiple=False) if v is None: return jsonify(info="Vehicle not found"), 404 vehicle = { "id": v["id"], "registration": v["registration"], "type": v["type"], "weight": v["weight"], "max_weight": v["max_weight"], "area": v["area"], "max_area": v["max_area"], } return jsonify(vehicle=vehicle), 200
class FlicketSubscription(PaginatedAPIMixin, Base): __tablename__ = "flicket_ticket_subscription" id = db.Column(db.Integer, primary_key=True) ticket_id = db.Column(db.Integer, db.ForeignKey(FlicketTicket.id)) ticket = db.relationship(FlicketTicket) user_id = db.Column(db.Integer, db.ForeignKey(FlicketUser.id)) user = db.relationship(FlicketUser) user_def = db.deferred( db.select([FlicketUser.name]).where(FlicketUser.id == user_id) ) def to_dict(self): """ :return: dict() """ data = { "id": self.id, "ticket_id": self.ticket_id, "user_id": self.user_id, "user_def": self.user_def, "links": { "self": app.config["base_url"] + url_for("bp_api.get_subscription", id=self.id), "subscriptions": app.config["base_url"] + url_for("bp_api.get_subscriptions"), "ticket": app.config["base_url"] + url_for("bp_api.get_ticket", id=self.ticket_id), "user": app.config["base_url"] + url_for("bp_api.get_user", id=self.user_id), }, } return data def __repr__(self): return "<Class FlicketSubscription: ticket_id={}, user_id={}>".format( self.ticket_id, self.user_id )
def get(id:int): company_id = session["user"]["company_id"] d = db.select(table="users", conditions={"id":id, "type":"driver", "company_id": company_id}, multiple=False) if d is None: return jsonify(info="Driver not found"), 404 driver = { "id": d["id"], "name": d["name"], "email": d["email"], "phone": d["phone"], "location": { "lat": d["location_lat"], "lng": d["location_lng"] }, "vehicle_id_1":d["vehicle_id_1"], "vehicle_id_2":d["vehicle_id_2"] } return jsonify(driver=driver),200
def get_all_drivers(company_id:int, return_obj=False, vehicles=False): _sql = """ select users.id, users.name, users.location_lat, users.location_lng, users.vehicle_id_1, users.vehicle_id_2, v1.max_area AS v1_max_area, v1.max_weight AS v1_max_weight, v1.area AS v1_area, v1.weight AS v1_weight, v2.max_area AS v2_max_area, v2.max_weight AS v2_max_weight, v2.area AS v2_area, v2.weight AS v2_weight from users INNER JOIN vehicles AS v1 ON users.vehicle_id_1 = v1.id LEFT JOIN vehicles AS v2 ON users.vehicle_id_2 = v2.id WHERE users.type='driver' and users.company_id = %(company_id)s ; """ if vehicles is True: drivers_raw = db.query(_sql, {"company_id" : company_id}, multiple=True) else : drivers_raw= db.select(table="users", conditions={"type":"driver", "company_id": company_id}, multiple=True) drivers = [] if return_obj: for driver in drivers_raw: drivers.append(Driver(driver)) else : for driver in drivers_raw: d = {"driver": Driver(driver).__dict__} drivers.append(d) return drivers
def getAll(): company_id = session["user"]["company_id"] customers_raw = db.select(table="customers",conditions={"company_id": company_id}) if len(customers_raw) <1: return jsonify(customers=customers_raw), 200 customers = [] for customer in customers_raw: c = { "customer": { "id": customer["id"], "name": customer["name"], "phone": customer["phone"], "address" : customer["address"], "location": { "lat": customer["location_lat"], "lng": customer["location_lng"], } } } customers.append(c) return jsonify(customers=customers),200
def getAll(): company_id = session["user"]["company_id"] vs = db.select(table="vehicles", conditions={"company_id": company_id}) if len(vs) < 1: return jsonify(vehicles=[]), 200 vehicles = [] for v in vs: vehicle = { "vehicle": { "id": v["id"], "registration": v["registration"], "type": v["type"], "weight": v["weight"], "max_weight": v["max_weight"], "area": v["area"], "max_area": v["max_area"], } } vehicles.append(vehicle) return jsonify(vehicles=vehicles), 200
def deactivated_badges(cls): return db.select([ db.func.count(Badges.id), Badges.status == 'Deactivated' ]).as_scalar()
def active_badges(cls): return db.select([ db.func.count(Badges.id), Badges.status == 'Active' ]).as_scalar()