def confirm_user_subscription(token): secret_key = ConfigValues.get_config_value( 'EMAIL_PASSWORD_RESET_SECRET_KEY') confirm_serializer = URLSafeTimedSerializer(secret_key) try: email = confirm_serializer.loads(token, salt='email-confirm', max_age=3600) except SignatureExpired: return Responses.TOKEN_EXPIRED() json_dict = request.json email = json_dict['email'] user = User.get_user_by_email(email) if not user: return Responses.NOT_EXIST() subscription_type = json_dict['subscription_type'] subscription = SubscriptionType.get_items(subscription_type) start_date = date.today() end_date = start_date + relativedelta(months=int(1)) #end_date = start_date + relativedelta(months=int(subscription.plan)) user_subscription = UserSubscription(user.id, end_date, subscription.id) error = user_subscription.update() if len(error) > 0: Responses.OPERATION_FAILED() user.subscribed = True user_error = user.update() if len(user_error) > 0: Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_order(id): item = Order.query.get(id) if not item: return Responses.NOT_EXIST() json_dict = request.json order_items_dict = json_dict['order_items'] for order_item_dict in order_items_dict: order_item = OrderItem() if "id" in order_item_dict.keys(): order_item = OrderItem.query.get(order_item_dict['id']) order_item.update_from_dict(order_item_dict) if order_item.date_returned != None: # ensure this is a date string if is_date(order_item.date_returned): order_item.date_returned = datetime.datetime.strptime(order_item.date_returned, '%Y-%m-%d %H:%M:%S') if not "id" in order_item_dict.keys(): item.order_items.append(order_item) # else: # for oid in item.order_items: # if(oid.id == order_item_dict['id']): # oid = order_item item.update_from_dict(json_dict) # re enable if customers can call in to order # currently orders can only be made from customer UI # only edit on the order is to the status #item.calculate_cost() if len(item.update(force_insert=True)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def delete_product(id=None): """ get_products returns all product or the product with specific id Args: id ([type]): product id Returns: [type]: [description] """ item = Product.query.get(id) variations = Variation.get_items_for_id(product_id=item.id) # delete variations before product for variation in variations: if len(variation.delete()) > 0: return Responses.OPERATION_FAILED() # deletes product error = item.delete() if len(error) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def add_product(): json_dict = request.json item = Product() error = item.update(json_dict['product']) if len(error) > 0: return Responses.OPERATION_FAILED() product = Product.query.filter_by( name=json_dict['product']['name']).first() variations = [] variations_dict = json_dict['variations'] for variation_dict in variations_dict: variation = Variation() if variation.update_from_dict(variation_dict): variation.product_id = product.id if variation.next_available_date != None: # ensure this is a date string if is_date(variation.next_available_date): variation.next_available_date = datetime.datetime.strptime( variation.next_available_date, '%Y-%m-%d %H:%M:%S') variations.append(variation) for variation in variations: if len(variation.update()) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_product(id): item = Product.query.get(id) if not item: return Responses.NOT_EXIST() json_dict = request.json if len(item.update(json_dict['product'])) > 0: return Responses.OPERATION_FAILED() current_variations = Variation.query.filter_by(product_id=item.id).all() current_variations_names = [] for variation in current_variations: current_variations_names.append(variation.name) variations_dict = json_dict['variations'] for variation_dict in variations_dict: variation = Variation() variation.update_from_dict(variation_dict) if variation.next_available_date != None: # ensure this is a date string if is_date(variation.next_available_date): variation.next_available_date = datetime.datetime.strptime( variation.next_available_date, '%Y-%m-%d %H:%M:%S') if variation.name in current_variations_names: for current_variation in current_variations: if variation.name == current_variation.name: if len(current_variation.update(variation_dict)) > 0: return Responses.OPERATION_FAILED() else: #a new variation is being added to this product if len(variation.update()) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_user_order(): item = Order.query.get(id) if not item: return Responses.NOT_EXIST() json_dict = request.json if json_dict['order_items']: order_items_dict = json_dict['order_items'] for order_item_dict in order_items_dict: order_item = OrderItem() if "id" in order_item_dict.keys(): order_item = OrderItem.query.get(order_item_dict['id']) order_item.update_from_dict(order_item_dict) if not "id" in order_item_dict.keys(): item.order_items.append(order_item) else: for oid in item.order_items: if (oid.id == order_item_dict['id']): oid = order_item item.calculate_cost() if len(item.update(force_insert=True)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_article_categories(id): item = ArticleCategory.query.get(id) if not item: return Responses.NOT_EXIST() json_dict = request.json if len(item.update(json_dict)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_order_status(id): item = OrderStatus.query.get(id) if not item: return Responses.NOT_EXIST() json_dict = request.json if len(item.update(json_dict)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_product_category(id): item = ProductCategory.query.get(id) if not item: return Responses.NOT_EXIST() json_dict = request.json if len(item.update(json_dict)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def remove_unconfirmed_user_order(id): item = Order.query.get(id) if not item: return Responses.NOT_EXIST() item.delete() if len(item.delete()) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def delete_subscription_types(plan=None): """ get_subscription_types gets all subscription types """ page, per_page = get_page_from_args() item = SubscriptionType.get_items(plan=plan, page=page, per_page=per_page) error = item[0].delete() if len(error) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def delete_vouchers(id=None): """ delete voucher """ page, per_page = get_page_from_args() sort_by = request.args.get('sort_by') is_desc = parse_int(request.args.get('is_desc')) item = Voucher.query.get(id) error = item.delete() if len(error) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_confirmed_user_order(id): item = Order.query.get(id) if not item: return Responses.NOT_EXIST() json_dict = request.json item.update_from_dict(json_dict) # if not json_dict['payment_ref']: # return Responses.OPERATION_FAILED() if len(item.update(force_insert=True)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_config_value(name): """ update_config_value updates setting by using name """ item = ConfigValues.query.filter_by(name=name).first() if not item: return Responses.NOT_EXIST() json_dict = request.json if len(item.update(json_dict)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def delete_user(email=None): """ get_users gets all user or specify user Args: email ([type], optional): [description]. Defaults to None. Returns: [type]: [description] """ item = User.get_user_by_email(email) error = item.delete() if len(error) > 0: return Responses.OPERATION_FAILED(error) return Responses.SUCCESS()
def delete_variation(id=None): """ get_products returns all product or the product with specific id Args: id ([type]): product id Returns: [type]: [description] """ variation = Variation.get_variation_from_id(id) # delete variation before product if len(variation.delete()) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_subscription(id): """ update_subscription updates user subscription by using id Args: id (int): Returns: (string,int): update succesful, otherwise response no need to update """ item = UserSubscription.query.get(id) if not item: return Responses.NOT_EXIST() json_dict = request.json if len(item.update(json_dict)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_user(email): """ update_user updates user by using email Args: email (string): Returns: (string,int): user info if update succesful, otherwise response no need to update """ item = User.get_user_by_email(email) if not item: return Responses.NOT_EXIST() json_dict = request.json if len(item.update(json_dict)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_subscription_type(plan): """ update_subscription_type updates subscription type by using duration in months Args: plan (string): Returns: (string,int): update succesful, otherwise response no need to update """ item = SubscriptionType.get_items(plan=plan)[0] if not item: return Responses.NOT_EXIST() json_dict = request.json if len(item.update(json_dict)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def update_vouchers(name): """ update_voucher updates voucher by using name Args: name (string): Returns: (string,int): update succesful, otherwise response no need to update """ item = Voucher.get_voucher(name) if not item: return Responses.NOT_EXIST() json_dict = request.json if (('discount_percent_off' in json_dict and float(json_dict['discount_percent_off']) > 0) and ('discount_fixed_amount' in json_dict and float(json_dict['discount_fixed_amount']) > 0)): return Responses.OPERATION_FAILED(Messages.VOUCHER_DETAILS_WRONG) if len(item.update(json_dict)) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def delete_order_status(id=None): item = OrderStatus.query.get(id) error = item.delete() if len(error) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()
def delete_product_categories(id=None): item = ProductCategory.query.get(id) error = item.delete() if len(error) > 0: return Responses.OPERATION_FAILED() return Responses.SUCCESS()