def six(promo_code_id): return_dict = {'day_of_week':'Sunday'} return_dict.setdefault('timing', []) sundayvalidtimings = PromoCodeValidTiming.query.filter_by(promo_code_id=promo_code_id, day_of_week="Sunday").all() result_sundayvalidtimings = promo_code_valid_timings_schema.dump(sundayvalidtimings) if result_sundayvalidtimings == []: return "" for validtiming in result_sundayvalidtimings: if validtiming["start_time"] == "00:00:00" and validtiming["end_time"] == "23:59:59": del validtiming["start_time"] del validtiming["end_time"] del validtiming["day_of_week"] del validtiming["id"] del validtiming["promo_code_id"] else: return_dict['timing'].append(validtiming) return return_dict
def update_promo_code(Id): tokenstr = request.headers["Authorization"] file = open("instance/key.key", "rb") key = file.read() file.close() tokenstr = tokenstr.split(" ") token = tokenstr[1] role = jwt.decode(token, key, algorithms=['HS256'])["role"] if role == "SuperAdmin": try: promocode = PromoCode.query.get(Id) code = request.json["code"] valid_from = request.json["validFrom"] valid_to = request.json["validTo"] usage_limit = request.json["usageLimit"] usage_per_user = request.json["usageperUser"] discount_type = request.json["discountType"] discount = request.json["discount"] updated_at = datetime.now() promocode.code = code promocode.valid_from = valid_from promocode.valid_to = valid_to promocode.usage_limit = usage_limit promocode.usage_per_user = usage_per_user promocode.discount_type = discount_type promocode.discount = discount promocode.updated_at = updated_at db.session.commit() validproduct = PromoCodeValidProduct.query.all() result = promo_code_valid_products_schema.dump(validproduct) for i in result: if i["promo_code_id"] == promocode.id: valid_product_id = i["id"] promocode_validproduct = PromoCodeValidProduct.query.get(valid_product_id) db.session.delete(promocode_validproduct) db.session.commit() valid_locations = PromoCodeValidLocation.query.all() result = promo_code_valid_locations_schema.dump(valid_locations) for i in result: if i["promo_code_id"] == promocode.id: valid_location_id = i["id"] promocode_validlocation = PromoCodeValidLocation.query.get(valid_location_id) db.session.delete(promocode_validlocation) db.session.commit() validtimings = PromoCodeValidTiming.query.all() result = promo_code_valid_timings_schema.dump(validtimings) for i in result: if i["promo_code_id"] == promocode.id: valid_timing_id = i['id'] promocode_validtiming = PromoCodeValidTiming.query.get(valid_timing_id) db.session.delete(promocode_validtiming) db.session.commit() promo_code_id = promocode.id valid_products = request.json["validProducts"] for i in valid_products: valid_product = i product = Product.query.all() result = products_schema.dump(product) for p in result: if p["name"] == valid_product: product_id = p["id"] new_valid_product = PromoCodeValidProduct(valid_product, promo_code_id, product_id) db.session.add(new_valid_product) db.session.commit() valid_locations = request.json["validLocations"] for i in valid_locations: valid_location = i venue = Venue.query.all() result = venues_schema.dump(venue) for p in result: if p["name"] == valid_location: venue_id = p["id"] new_valid_location = PromoCodeValidLocation(valid_location, promo_code_id, venue_id) db.session.add(new_valid_location) db.session.commit() timing_included = request.json["timingIncluded"] if timing_included is True: valid_timing = request.json["validTiming"] for i in valid_timing: day_of_week = i["day_of_week"] timing = i["timing"] if len(timing) > 0: for i in timing: start_time = i["start_time"] end_time = i["end_time"] new_valid_timing = PromoCodeValidTiming(start_time, end_time, day_of_week, promo_code_id) db.session.add(new_valid_timing) else: start_time = "00:00:00" end_time = "23:59:59" new_valid_timing = PromoCodeValidTiming(start_time, end_time, day_of_week, promo_code_id) db.session.add(new_valid_timing) db.session.commit() except exc.IntegrityError: return json.dumps({'message': "Code '" + code + "' already exists"}), 400, {'ContentType': 'application/json'} return (json.dumps({'message': 'success'}), 200, {'ContentType': 'application/json'}) else: return "You are not authorised to perform this action", 400