def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('category_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] category_id = args['category_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) product_position = session.query(ProductsPositions).filter( ProductsPositions.category_id == category_id).first() if not product_position: product_position = { 'id': None, 'category_id': category_id, 'products_positions': [] } return product_position except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type='GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('request_user_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] request_user_id = args['request_user_id'] user_action_logging.log_user_actions(ROUTE,user_id, action_type) user = session.query(Users).filter(Users.id==request_user_id).first() if not user: abort(400, message='Ошибка получения данных. Данные не найдены') user.user_login = session.query(UserLogins).filter(UserLogins.user_id==user.id).first() user.user_info_data = session.query(UserInfo).filter(UserInfo.user_id == user.id).first() return user except Exception as e: if (hasattr(e,'data')): if (e.data!=None and "message" in e.data): abort(400,message =e.data["message"]) abort(400, message = "Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('attachments_ids') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] attachments_ids = args['attachments_ids'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) attachments_ids = [int(s) for s in attachments_ids.split(',')] attachments = session.query(Attachments).filter( Attachments.id.in_(attachments_ids)).all() if not attachments: return [] # abort(400, message='Ошибка получения данных. Данные не найдены') # result = copy.deepcopy(attachments) return attachments except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка") finally: pass
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('client_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] client_id = args['client_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) client_info = session.query(ClientInfo).filter( ClientInfo.client_id == client_id).first() if not client_info: abort(400, message='Ошибка получения данных. Данные не найдены') #image_path_converter.convert_path(client_info.attachment_data) return client_info except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) # check login settings = session.query(Settings).order_by( Settings.id.desc()).all() if not settings: abort(400, message='Ошибка получения данных. Данные не найдены') return settings except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('product_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] product_id = args['product_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) # check login comments = session.query(ProductComments).filter( ProductComments.product_id == product_id).all() if not comments: return [] #abort(400, message='Ошибка получения данных. Данные не найдены') return comments except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) product_categories = session.query(ProductCategories).filter( ProductCategories.is_delete == False).all() if not product_categories: abort(400, message='Ошибка получения данных. Данные не найдены') categories_without_products = [] for product_category in product_categories: product = session.query(Products).filter( Products.category_id == product_category.id).first() if (product == None): categories_without_products.append(product_category) return categories_without_products except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('product_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] product_id = args['product_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) # check login product = session.query(Products).filter( Products.id == product_id).first() if not product: abort(400, message='Ошибка получения данных. Данные не найдены') entity = product if not entity: abort(404, message=ENTITY_NAME + " {} doesn't exist".format(id)) #api_url = settings.API_URL # if hasattr(entity, 'default_image_data'): # if (entity.default_image_data != None and entity.default_image_data.file_path != None): # entity.default_image_data.file_path = urllib.parse.urljoin(api_url, # entity.default_image_data.file_path) # if hasattr(entity, 'default_image_data'): # if (entity.default_image_data != None and entity.default_image_data.thumb_file_path != None): # entity.default_image_data.thumb_file_path = urllib.parse.urljoin(api_url, # entity.default_image_data.thumb_file_path) # if hasattr(entity, 'default_image_data'): # if (entity.default_image_data != None and entity.default_image_data.optimized_size_file_path != None): # entity.default_image_data.optimized_size_file_path = urllib.parse.urljoin(api_url, # entity.default_image_data.optimized_size_file_path) entity.images_data = [] if (entity.gallery_images != None and len(entity.gallery_images) > 0): for img_id in entity.gallery_images: image = session.query(Attachments).filter( Attachments.id == img_id).first() if not image: continue entity.images_data.append(image) return entity except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка") finally: pass
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('product_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] product_id = args['product_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) product = session.query(Products).filter( Products.id == product_id).first() t = 0 products = session.query(Products).filter( Products.id != product_id, Products.is_delete == False).all() if not products: abort(400, message='Ошибка получения данных. Данные не найдены') if (not product): return products recommendations = product.product_recomendations if (not recommendations): # если у продукта нет рекомендаций то выводим весь список товаров rec_products = session.query(Products).filter( Products.id != product_id, Products.is_delete == False).all() for r_product in rec_products: r_product.is_recommend = False return rec_products if (len(recommendations) > 0): for pr in products: p_id = pr.id if ((p_id in recommendations) == True): pr.is_recommend = True else: pr.is_recommend = False return products except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) orders = [] # check login orders = session.query(Orders).filter( Orders.user_id == user_id).order_by(desc(Orders.id)).all() if not orders: return [] for entity in orders: entity.display_creation_date = entity.creation_date.strftime( "%Y-%m-%d %H:%M") if (entity.processed_date != None): entity.display_processed_date = entity.processed_date.strftime( "%Y-%m-%d %H:%M") if (entity.execute_date != None): entity.display_execute_date = entity.execute_date.strftime( "%Y-%m-%d %H:%M") entity.order_user_data = session.query(Users).filter( Users.id == entity.user_id).first() if (entity.executor_id != None): entity.order_executor_data = session.query(Users).filter( Users.id == entity.executor_id).first() entity.bonuses = 0 bonus = session.query(UserBonuses).filter( UserBonuses.order_id == entity.id).first() if (bonus != None): entity.bonuses = bonus.amount return orders except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('code') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] code = args['code'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) #products = session.query(Products).filter(Products.category_id==category_id).order_by(desc(Products.id)).all() user_confirmation_code = session.query( UserConfirmationCodes).filter( UserConfirmationCodes.user_id == user_id).order_by( desc(UserConfirmationCodes.id)).first() if (not user_confirmation_code): abort(400, message='Error') if (user_confirmation_code.code != str(code)): abort(400, message='Error') user = session.query(Users).filter(Users.id == user_id).first() if (not user): abort(400, message='Error') user.lock_state = False session.add(user) session.commit() response = {'status_code': 200} # response = object() # # # response.status_code = type('', (), {}) # setattr(response,'status_code',200) # # response.status_code =200 # setattr(response,'status_code',200) return response except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) view_settings = session.query(ViewSettings).first() return view_settings except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) # check login owner_users = session.query(Users).filter( Users.client_id == settings.OWNER_CLIENT_ID).order_by( Users.id.desc()).all() for user in owner_users: u_id = user.id login = session.query(UserLogins).filter( UserLogins.user_id == u_id).first() if not login: continue user.user_login = login for user in owner_users: u_id = user.id user_info = session.query(UserInfo).filter( UserInfo.user_id == user.id).first() if not user_info: continue user.user_info_data = user_info if not owner_users: abort(400, message='Ошибка получения данных. Данные не найдены') return owner_users except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) # product = session.query(Products).filter(Products.id==product_id).first() t = 0 products = session.query(Products).filter( Products.is_delete == False).all() if not products: abort(400, message='Ошибка получения данных. Данные не найдены') settings = session.query(ViewSettings).first() if (not settings): return Products recommendations = settings.recomendation_elements if (len(recommendations) > 0): for pr in products: p_id = pr.id if ((p_id in recommendations) == True): pr.is_recommend = True else: pr.is_recommend = False return products except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('message_content_id') args = parser.parse_args() if len(args) == 0: abort(400, message='Arguments not found') user_id = args['user_id'] message_content_id = args['message_content_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) messages = session.query(Messages).filter( Messages.message_content_id == message_content_id).all() return messages except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('category_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] category_id = int(args['category_id']) user_action_logging.log_user_actions(ROUTE, user_id, action_type) product_categories = session.query(ProductCategories).filter( ProductCategories.parent_category_id == category_id, ProductCategories.is_delete == False).all() product_category_position = session.query(ProductCategoryPositions) \ .filter(ProductCategoryPositions.parent_category_id == category_id).first() if product_category_position is not None and len( product_category_position.child_category_positions) > 0: positioned_categories = [ x for x in product_category_position.child_category_positions ] other_categories = [] for cat in product_categories: if cat.id in product_category_position.child_category_positions: positioned_categories[positioned_categories.index( cat.id)] = cat else: other_categories.append(cat) product_categories = positioned_categories + other_categories return product_categories except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('state_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] state_id = int(args['state_id']) user_action_logging.log_user_actions(ROUTE, user_id, action_type) orders = [] # check login if (state_id == 1 or state_id == 3 or state_id == 4): orders = session.query(Orders).filter( Orders.order_state_id == state_id).all() t = 0 pass elif (state_id == 2): orders = session.query(Orders).filter( and_(Orders.order_state_id == 2, Orders.executor_id == user_id)).all() for entity in orders: entity.order_user_data = session.query(Users).filter( Users.id == entity.user_id).first() if (entity.executor_id != None): entity.order_executor_data = session.query(Users).filter( Users.id == entity.executor_id).first() if not orders: return [] return orders except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('product_id') parser.add_argument('user_cart_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] product_id = args['product_id'] user_cart_id = args['user_cart_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) products = session.query(UserCartPositions).filter( and_(UserCartPositions.product_id == product_id, UserCartPositions.user_cart_id == user_cart_id)).first() if (not products): response = { 'product_count': 1, 'alt_product_count': 0, 'unit_name': 'НЕТ', 'alt_unit_name': 'НЕТ' } return response alt_product_count = int(products.alt_count) response = { 'product_count': int(products.count), 'alt_product_count': alt_product_count } return response except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') args = parser.parse_args() if len(args) == 0: abort(400, message='Arguments not found') user_id = args['user_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) events = session.query(Events).filter(Events.state == True).all() counter = 0 for x in events: if (x.end_date.replace(tzinfo=None) - datetime.utcnow()).days <= x.count_days_notifications: counter += 1 return counter except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('order_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] order_id = int(args['order_id']) user_action_logging.log_user_actions(ROUTE, user_id, action_type) orderPositions = session.query(OrderPositions).filter(OrderPositions.order_id == order_id).order_by( desc(OrderPositions.id)).all() if not orderPositions: return [] return orderPositions except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('product_id') parser.add_argument('value') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] product_id = int(args['product_id']) value = (args['value']) if (value == 'False' or value == 'false'): value = False else: value = True user_action_logging.log_user_actions(ROUTE, user_id, action_type) favorite_products = session.query(UserFavoriteProducts).filter( UserFavoriteProducts.user_id == user_id).first() response = {'status_code': 200} if (not favorite_products): favorite_products_args = {} favorite_products_args["user_id"] = user_id favorite_products_args["products_ids"] = [product_id] favorite_products_entity = UserFavoriteProducts( favorite_products_args) session.add(favorite_products_entity) session.commit() return favorite_products favorite_products_ids = favorite_products.products_ids if (value == True): if ((product_id in favorite_products_ids) == False): favorite_products_ids.append(product_id) else: arr = [] for p_id in favorite_products_ids: if (p_id != product_id): arr.append(p_id) favorite_products_ids = arr # f_args ={} # f_args["products_ids"] = [favorite_products_ids] # favorite_products = session.query(UserFavoriteProducts).filter(UserFavoriteProducts.user_id==user_id).first() # db_transformer.transform_update_params(favorite_products, f_args) # favorite_products.products_ids=[] # session.add(favorite_products) # session.commit() output = map(int, favorite_products_ids) favorite_products.products_ids = output # setattr(favorite_products,'products_ids',favorite_products_ids) session.add(favorite_products) session.commit() return favorite_products except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('filter_parameter') parser.add_argument('filter_value') parser.add_argument('user_cart_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] filter_parameter = args['filter_parameter'] filter_value = args['filter_value'] user_cart_id = self.get_user_cart_argument(args) user_action_logging.log_user_actions(ROUTE, user_id, action_type) products = [] # filter paramenters 1 - brands, 2 -partners, 3 - favorites, 4 - recommends , 5 - filter by name, 6 - discount, 7 -stock # session.query(Products).filter(Products.category_id==category_id).order_by(desc(Products.id)).all() # products = products. if (str(filter_parameter) == '1'): products = self.filter_by_brand(filter_value) elif (str(filter_parameter) == '2'): products = self.filter_by_partner(filter_value) elif (str(filter_parameter) == '3'): products = self.filter_by_favorites(user_id) elif (str(filter_parameter) == '4'): products = self.filter_by_recommendations() elif (str(filter_parameter) == '5'): products = self.filter_by_name(filter_value) elif (str(filter_parameter) == '6'): products = self.filter_by_discount() elif (str(filter_parameter) == '7'): products = self.filter_by_stock() elif (str(filter_parameter) == '8'): products = self.filter_by_all_partners() elif (str(filter_parameter) == '9'): products = self.filter_by_popular() elif (str(filter_parameter) == '10'): products = self.filter_by_product_name_or_partner_name( filter_value) products = [x for x in products if x.is_delete == False] if not products: abort(400, message='Ошибка получения данных. Данные не найдены') for product in products: if (user_cart_id == -1): product.count = 1 else: user_cart = session.query(UserCarts).filter( UserCarts.id == user_cart_id).first() check_user_cart_positions = session.query( UserCartPositions).filter( and_( UserCartPositions.user_cart_id == user_cart.id, UserCartPositions.product_id == product.id)).first() if (not check_user_cart_positions): product.count = 1 else: product.count = check_user_cart_positions.count pass # comments = session.query(ProductComments).filter( # ProductComments.product_id == product.id and ProductComments.is_delete == False).all() # product.comments_count = 0 # product.rate = 0 # if (not comments): # continue # total_rate = 0 # comments_count = 0 # for comment in comments: # total_rate += comment.rate # comments_count += 1 # # if (comments_count > 0): # product.comments_count = comments_count # product.rate = round((total_rate / comments_count), 2) # products.internal_products_count = len(products) return products except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка") finally: pass
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) user_favorite_products = session.query( UserFavoriteProducts).filter( UserFavoriteProducts.user_id == user_id).first() if (not user_favorite_products): abort(400, message="Not found favorite products") if (not user_favorite_products.product_ids): abort(400, message="Not found favorite products") products = [] for favorite_product_id in user_favorite_products.products_ids: product = session.query(Products).filter( Products.id == favorite_product_id).filter() if (not product): continue products.append(product) if not products: abort(400, message='Ошибка получения данных. Данные не найдены') # for product in products: # comments = session.query(ProductComments).filter(ProductComments.product_id==product.id and ProductComments.is_delete==False).all() # product.comments_count = 0 # product.rate = 0 # if (not comments): # # continue # total_rate =0 # comments_count=0 # for comment in comments: # total_rate+=comment.rate # comments_count+=1 # # if (comments_count>0): # product.comments_count =comments_count # product.rate =round((total_rate/comments_count),2) #products.internal_products_count = len(products) return products except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка") finally: pass
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('user_cart_id') parser.add_argument('product_id') parser.add_argument('count') parser.add_argument('alt_count') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = int(args['user_id']) user_cart_id = int(args['user_cart_id']) product_id = int(args['product_id']) count = float(args['count']) alt_count = float(args['alt_count']) if (alt_count == -1): alt_count = 0 user_action_logging.log_user_actions(ROUTE, user_id, action_type) user_cart = {} if (user_cart_id == -1): user_cart_args = {} user_cart_args["user_id"] = user_id user_cart_entity = UserCarts(user_cart_args) session.add(user_cart_entity) session.commit() user_cart = user_cart_entity else: user_cart = session.query(UserCarts).filter( UserCarts.id == user_cart_id).first() if (not user_cart): user_cart_args = {} user_cart_args["user_id"] = user_id user_cart_entity = UserCarts(user_cart_args) session.add(user_cart_entity) session.commit() user_cart = user_cart_entity #check if cart positions contains current product check_user_cart_positions = session.query( UserCartPositions).filter( and_(UserCartPositions.user_cart_id == user_cart.id, UserCartPositions.product_id == product_id)).first() if (not check_user_cart_positions): user_cart_position_args = {} user_cart_position_args['product_id'] = product_id user_cart_position_args['user_cart_id'] = user_cart.id user_cart_position_args['count'] = count user_cart_position_args['alt_count'] = alt_count user_cart_position_args['temp_cart_uid'] = str( uuid.uuid4().hex) user_cart_position_args['need_invoice'] = False user_cart_position_entity = UserCartPositions( user_cart_position_args) session.add(user_cart_position_entity) session.commit() else: if (count > 0 or alt_count > 0): check_user_cart_positions.count = count check_user_cart_positions.alt_count = alt_count session.add(check_user_cart_positions) session.commit() else: session.delete(check_user_cart_positions) session.commit() #calculte total sum user_cart_positions = session.query(UserCartPositions).filter( UserCartPositions.user_cart_id == user_cart.id).all() total_sum = 0 total_sum_without_discount = 0 amount_sum = 0 currency_id = -1 for cart_position in user_cart_positions: count = cart_position.count alt_count = cart_position.alt_count if (count == 0 and alt_count == 0): continue product = session.query(Products).filter( Products.id == cart_position.product_id).first() if (currency_id == -1): currency_id = product.currency_id if (product.alt_discount_amount == None): product.alt_discount_amount = 0 if (product.alt_amount == None): product.alt_amount = 0 if (not product): continue single_amount = 0 if (product.is_discount_product == True): discount_amount = product.discount_amount alt_discount_amount = product.alt_discount_amount if (discount_amount == 0): discount_amount = product.amount if (alt_discount_amount == None or alt_discount_amount == 0): alt_discount_amount = product.alt_amount if (discount_amount == 0): discount_amount = product.amount single_amount = round(discount_amount * count, 2) alt_single_amount = round(alt_discount_amount * alt_count, 2) total_sum += single_amount total_sum += alt_single_amount total_sum_without_discount += round( product.amount * count, 2) total_sum_without_discount += round( product.alt_amount * alt_count, 2) delta = product.amount - discount_amount alt_delta = product.alt_amount - alt_discount_amount amount_sum += round(delta * count, 2) amount_sum += round(alt_delta * alt_count, 2) else: total_sum += round(product.amount * count, 2) total_sum += round(product.alt_amount * alt_count, 2) total_sum_without_discount += round( product.amount * count, 2) total_sum_without_discount += round( product.alt_amount * alt_count, 2) economy_delta = total_sum_without_discount - amount_sum economy_percent = 0 if (total_sum_without_discount != 0): economy_percent = round( 100 * (economy_delta / total_sum_without_discount), 2) user_cart.total_amount = total_sum user_cart.total_amount_without_discount = total_sum_without_discount user_cart.discount_amount = amount_sum user_cart.economy_delta = economy_delta user_cart.economy_percent = economy_percent user_cart.products_count = len(user_cart_positions) user_cart.currency_data = session.query(CurrencyCatalog).filter( CurrencyCatalog.id == currency_id).first() return user_cart except Exception as e: session.rollback() if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('orders_ids') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] orders_ids = [int(x) for x in args['orders_ids'].split(',')] user_action_logging.log_user_actions(ROUTE, user_id, action_type) positions = session.query(OrderPositions) \ .filter(OrderPositions.order_id.in_(orders_ids), OrderPositions.order_position_state_id != 2).all() if not positions: abort(404, message="Positions {} doesn't exist".format(id)) marshlled_positions = marshal(positions, output_fields) curr_keys = [ 'count', 'amount_per_item', 'unit_display_value', 'amount_per_item_discount' ] alt_keys = [ 'alt_count', 'alt_amount_per_item', 'alt_unit_display_value', 'alt_amount_per_item_discount' ] positions = [] for pos in marshlled_positions: if pos['count'] > 0: curr_pos = pos.copy() for alt_key in alt_keys: curr_pos.pop(alt_key) if curr_pos['amount_per_item_discount'] > 0: curr_pos['amount_per_item_discount'] = curr_pos[ 'amount_per_item'] - curr_pos[ 'amount_per_item_discount'] curr_pos['total_amount'] = curr_pos['count'] * ( curr_pos['amount_per_item'] - curr_pos['amount_per_item_discount']) positions.append(curr_pos) if pos['alt_count'] > 0: curr_pos = pos.copy() change_dict = dict(zip(curr_keys, alt_keys)) for curr_key, alt_key in change_dict.items(): curr_pos[curr_key] = curr_pos[alt_key] for alt_key in alt_keys: curr_pos.pop(alt_key) if curr_pos['amount_per_item_discount'] > 0: curr_pos['amount_per_item_discount'] = curr_pos[ 'amount_per_item'] - curr_pos[ 'amount_per_item_discount'] curr_pos['total_amount'] = curr_pos['count'] * ( curr_pos['amount_per_item'] - curr_pos['amount_per_item_discount']) positions.append(curr_pos) if len(positions) == 0: return "All products have 0 count. Nothing to download." titles = [ "Наименование", "Артикул", "Количество", "Стоимость 1 ед.", "Скидка", "Итого", "Акция" ] docs = {} for position in positions: if position.get('partner_id', 0) != 0: if position['partner_id'] in docs: docs[position['partner_id']]['total'] += position[ 'total_amount'] if '{}-{}-{}-{}'.format( position['product_id'], '1' if position['is_stock_product'] else '0', position['amount_per_item'], position['amount_per_item_discount'], position['unit_display_value']) in docs[ position['partner_id']]['positions']: docs[position['partner_id']]['positions'][ '{}-{}-{}-{}'.format( position['product_id'], '1' if position['is_stock_product'] else '0', position['amount_per_item'], position['amount_per_item_discount'], position['unit_display_value'] )]['total_amount'] += position['total_amount'] docs[position['partner_id']]['positions'][ '{}-{}-{}-{}'.format( position['product_id'], '1' if position['is_stock_product'] else '0', position['amount_per_item'], position['amount_per_item_discount'], position['unit_display_value'] )]['count'] += position['count'] else: docs[position['partner_id']]['positions'][ '{}-{}-{}-{}'.format( position['product_id'], '1' if position['is_stock_product'] else '0', position['amount_per_item'], position['amount_per_item_discount'], position['unit_display_value'])] = position else: docs[position['partner_id']] = { 'name': position['partner_name'], 'total': position['total_amount'] or 0, 'currency': position['currency_display_value'], 'positions': { '{}-{}-{}-{}'.format( position['product_id'], '1' if position['is_stock_product'] else '0', position['amount_per_item'], position['amount_per_item_discount'], position['unit_display_value']): position } } styles_dict = { 'title': ['ota_title', 'ota_text'], 'subtitle': ['ota_subtitle', 'ota_subtitle', 'ota_subtitle'], 'subtitle_text': ['ota_text', 'ota_text', 'ota_text'], 'shop_subtitle': [ 'shop_ota_subtitle', 'shop_ota_subtitle', 'shop_ota_subtitle', 'shop_ota_subtitle', 'shop_ota_subtitle' ], 'shop_subtitle_text': ['ota_text', 'ota_text', 'ota_text', 'ota_text', 'ota_text'], 'header': [ 'ota_header', 'ota_header', 'ota_header', 'ota_header', 'ota_header', 'ota_header', 'ota_header' ], 'data_row': [ 'ota_text', 'ota_num', 'ota_num', 'ota_num', 'ota_num', 'ota_num', 'ota_text', 'ota_text' ], 'total_row': [ 'ota_text', 'ota_text', 'ota_text', 'ota_text', 'ota_header', 'ota_header' ] } documents = {} dtnow = datetime.datetime.now().strftime("%Y-%m-%d %H:%M") for key, document in docs.items(): converted_data_rows = [[[ 'Погрузочный лист для {}'.format(document['name']), dtnow ]]] names = [styles_dict['title']] names.append(styles_dict['header']) converted_data_rows.append([titles]) for position in document['positions'].values(): names.append(styles_dict['data_row']) converted_data_rows.append([self.get_row(position)]) names.append(styles_dict['total_row']) converted_data_rows.append([[ '', '', '', '', 'Сум. Итого', '{} {}'.format(document['total'], document['currency']) ]]) documents[key] = { 'name': document['name'], 'rows': converted_data_rows, 'styles': names } export_folder, export_path = documents_exporter.export_order_positions( documents, 3) return send_from_directory(export_folder, export_path, as_attachment=True) except Exception as e: return {}
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('orders_ids') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] orders_ids = [int(x) for x in args['orders_ids'].split(',')] user_action_logging.log_user_actions(ROUTE, user_id, action_type) positions = session.query(OrderPositions) \ .filter(OrderPositions.order_id.in_(orders_ids), OrderPositions.order_position_state_id != 2).all() if not positions: abort(404, message="Positions {} doesn't exist".format(id)) marshlled_positions = marshal(positions, output_fields) curr_keys = [ 'count', 'amount_per_item', 'unit_display_value', 'amount_per_item_discount' ] alt_keys = [ 'alt_count', 'alt_amount_per_item', 'alt_unit_display_value', 'alt_amount_per_item_discount' ] positions = [] for pos in marshlled_positions: if pos['count'] > 0: curr_pos = pos.copy() for alt_key in alt_keys: curr_pos.pop(alt_key) if curr_pos['amount_per_item_discount'] > 0: curr_pos['amount_per_item_discount'] = curr_pos[ 'amount_per_item'] - curr_pos[ 'amount_per_item_discount'] curr_pos['total_amount'] = curr_pos['count'] * ( curr_pos['amount_per_item'] - curr_pos['amount_per_item_discount']) positions.append(curr_pos) if pos['alt_count'] > 0: curr_pos = pos.copy() change_dict = dict(zip(curr_keys, alt_keys)) for curr_key, alt_key in change_dict.items(): curr_pos[curr_key] = curr_pos[alt_key] for alt_key in alt_keys: curr_pos.pop(alt_key) if curr_pos['amount_per_item_discount'] > 0: curr_pos['amount_per_item_discount'] = curr_pos[ 'amount_per_item'] - curr_pos[ 'amount_per_item_discount'] curr_pos['total_amount'] = curr_pos['count'] * ( curr_pos['amount_per_item'] - curr_pos['amount_per_item_discount']) positions.append(curr_pos) if len(positions) == 0: return "All products have 0 count. Nothing to download." titles = [ "Наименование", "Артикул", "Количество", "Стоимость 1 ед.", "Скидка", "Итого", "Накладная", "Акция" ] sub_titles = ["Клиент", "Регистрация", "БИН/ИИН"] shop_sub_titles = [ "Магазин", "Адрес", "Город/а.е.", "Регион/Область", "Телефон" ] docs = {} for position in positions: if position.get('partner_id', 0) != 0: if position['partner_id'] in docs: docs[position['partner_id']]['total'] += position[ 'total_amount'] if position['client_id'] in docs[ position['partner_id']]['clients']: if position['client_address_id'] in \ docs[position['partner_id']]['clients'][position['client_id']]['shops']: docs[position['partner_id']]['clients'][ position['client_id']]['shops'][ position['client_address_id']][ 'positions'].append(position) docs[position['partner_id']]['clients'][ position['client_id']]['shops'][ position['client_address_id']][ 'total'] += position[ 'total_amount'] else: docs[position['partner_id']]['clients'][ position['client_id']]['shops'][ position['client_address_id']] = { 'name': position['client_address_name'], 'address': position['client_address'], 'city': position['client_city_name'], 'area': position['client_area_name'], 'phone': position['client_phone'], 'total': position['total_amount'] or 0, 'positions': [position] } else: docs[position['partner_id']]['clients'][ position['client_id']] = { 'name': position['client_name'], 'registration': position['registration_number'] or "", 'email': position['client_email'], 'shops': { position['client_address_id']: { 'name': position['client_address_name'], 'address': position['client_address'], 'city': position['client_city_name'], 'area': position['client_area_name'], 'total': position['total_amount'] or 0, 'phone': position['client_phone'], 'positions': [position] } } } else: docs[position['partner_id']] = { 'name': position['partner_name'], 'total': position['total_amount'] or 0, 'currency': position['currency_display_value'], 'clients': { position['client_id']: { 'name': position['client_name'], 'registration': position['registration_number'] or "", 'email': position['client_email'], 'shops': { position['client_address_id']: { 'name': position['client_address_name'], 'address': position['client_address'], 'city': position['client_city_name'], 'area': position['client_area_name'], 'total': position['total_amount'] or 0, 'phone': position['client_phone'], 'positions': [position] } } } } } styles_dict = { 'title': ['ota_title', 'ota_text'], 'subtitle': ['ota_subtitle', 'ota_subtitle', 'ota_subtitle'], 'subtitle_text': ['ota_text', 'ota_text', 'ota_text'], 'shop_subtitle': [ 'shop_ota_subtitle', 'shop_ota_subtitle', 'shop_ota_subtitle', 'shop_ota_subtitle', 'shop_ota_subtitle' ], 'shop_subtitle_text': ['ota_text', 'ota_text', 'ota_text', 'ota_text', 'ota_text'], 'header': [ 'ota_header', 'ota_header', 'ota_header', 'ota_header', 'ota_header', 'ota_header', 'ota_header', 'ota_header' ], 'data_row': [ 'ota_text', 'ota_num', 'ota_num', 'ota_num', 'ota_num', 'ota_num', 'ota_text', 'ota_text' ], 'total_row': [ 'ota_text', 'ota_text', 'ota_text', 'ota_text', 'ota_header', 'ota_header' ] } documents = {} dtnow = datetime.datetime.now().strftime("%Y-%m-%d %H:%M") for key, document in docs.items(): converted_data_rows = [[[ 'ТН для {}'.format(document['name']), dtnow ]]] names = [styles_dict['title']] for client in document['clients'].values(): names.append(styles_dict['subtitle']) names.append(styles_dict['subtitle_text']) converted_data_rows.append([sub_titles]) converted_data_rows.append([[ client['name'], client.get('email', ""), client.get('registration', "") ]]) for shop in client['shops'].values(): names.append(styles_dict['shop_subtitle']) names.append(styles_dict['shop_subtitle_text']) converted_data_rows.append([shop_sub_titles]) converted_data_rows.append([[ shop.get('name', ""), shop.get('address', ""), shop.get('city', ""), shop.get('area', ""), shop.get('phone', "") ]]) names.append(styles_dict['header']) converted_data_rows.append([titles]) for position in shop['positions']: names.append(styles_dict['data_row']) converted_data_rows.append( [self.get_row(position)]) names.append(styles_dict['total_row']) converted_data_rows.append([[ '', '', '', '', 'Итого', '{} {}'.format(shop['total'], document['currency']) ]]) names.append(styles_dict['total_row']) converted_data_rows.append([[ '', '', '', '', 'Сум. Итого', '{} {}'.format(document['total'], document['currency']) ]]) documents[key] = { 'name': document['name'], 'rows': converted_data_rows, 'styles': names } export_folder, export_path = documents_exporter.export_order_positions( documents, 10) return send_from_directory(export_folder, export_path, as_attachment=True) except Exception as e: return {}
def get(self): error_message = '' try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('user_cart_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] user_cart_id = args['user_cart_id'] user_action_logging.log_user_actions(ROUTE, user_id, action_type) user_cart = session.query(UserCarts).filter(UserCarts.id == user_cart_id).first() if not user_cart: abort(400, message='Ошибка получения данных. Данные не найдены') user_cart_positions = session.query(UserCartPositions).filter( UserCartPositions.user_cart_id == user_cart.id).order_by(desc(UserCartPositions.id)).all() partner_ids = [] for position in user_cart_positions: product = session.query(Products).filter(Products.id == position.product_id).first() if (not product): continue if (product.partner_id != None): partner = session.query(PartnersCatalog).filter(PartnersCatalog.id == product.partner_id).first() if (partner != None): if (partner.minimum_order_amount != None and partner.minimum_order_amount > 0): if (partner.id not in partner_ids): partner_ids.append(partner.id) partner_sums = [] for id in partner_ids: partner = session.query(PartnersCatalog).filter(PartnersCatalog.id == id).first() if (not partner): continue partner_sum = [partner.id, partner.name, partner.minimum_order_amount, 0] partner_sums.append(partner_sum) for position in user_cart_positions: product = session.query(Products).filter(Products.id == position.product_id).first() if (product.partner_id != None): for partner_sum in partner_sums: if (partner_sum[0] == product.partner_id): count = position.count alt_count = position.alt_count if alt_count is None: alt_count = 0 single_amount = product.amount if product.discount_amount > 0: single_amount = product.discount_amount alt_single_amount = product.alt_amount if product.alt_discount_amount > 0: alt_single_amount = product.alt_discount_amount if alt_single_amount is None: alt_single_amount = 0 amount = count * single_amount alt_amount = alt_single_amount * alt_count t_amount = amount + alt_amount partner_sum[3] += t_amount break result_arr = [] for partner_sum in partner_sums: if (partner_sum[2] > partner_sum[3]): result_arr.append(partner_sum) return result_arr except Exception as e: abort(400, message=error_message)
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('product_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = int(args['user_id']) product_id = int(args['product_id']) user_action_logging.log_user_actions(ROUTE, user_id, action_type) product = session.query(Products).filter( Products.id == product_id).first() # products = products. if not product: abort(400, message='Ошибка получения данных. Данные не найдены') product.can_comments = False orders = session.query(Orders).filter( Orders.user_id == user_id).all() for order in orders: order_positions = session.query(OrderPositions).filter( and_(OrderPositions.order_id == order.id, OrderPositions.product_id == product.id)).first() if (order_positions != None): product.can_comments = True break comments = session.query(ProductComments).filter( ProductComments.product_id == product.id).order_by( desc(ProductComments.creation_date)).all() product.comments = comments # product.comments_count = 0 # product.rate = 0 if (not comments): product.comments = [] if (product.comments != None): # total_rate = 0 # comments_count = 0 for comment in product.comments: # total_rate += comment.rate # comments_count += 1 user_id = comment.user_id user_info = session.query(UserInfo).filter( UserInfo.user_id == user_id).first() if (not user_info): continue avatar_id = user_info.avatar_id if (avatar_id != None): avatar = session.query(Attachments).filter( Attachments.id == avatar_id).first() if (not avatar): continue comment.comment_user_data.avatar = avatar # if (comments_count > 0): # product.comments_count = comments_count # product.rate = round((total_rate / comments_count), 2) return product except Exception as e: abort(400, message="Product details Error") if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"])
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('order_id') parser.add_argument('user_cart_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = int(args['user_id']) order_id = int(args['order_id']) user_cart_id = int(args['user_cart_id']) user_action_logging.log_user_actions(ROUTE, user_id, action_type) old_order = session.query(Orders).filter( Orders.id == order_id).first() if (not old_order): abort(400, message="Order not found") old_order_positions = session.query(OrderPositions).filter( OrderPositions.order_id == old_order.id).all() if (not old_order_positions): abort(400, message="Order positions not found") user_cart = {} if (user_cart_id == -1): user_cart_args = {} user_cart_args["user_id"] = user_id user_cart_entity = UserCarts(user_cart_args) session.add(user_cart_entity) session.commit() user_cart = user_cart_entity else: user_cart = session.query(UserCarts).filter( UserCarts.id == user_cart_id).first() for old_position in old_order_positions: user_cart_position_args = {} user_cart_position_args['product_id'] = old_position.product_id user_cart_position_args['user_cart_id'] = user_cart.id user_cart_position_args['count'] = old_position.count user_cart_position_args['temp_cart_uid'] = str( uuid.uuid4().hex) user_cart_position_args[ 'need_invoice'] = old_position.need_invoice user_cart_position_args['alt_count'] = old_position.alt_count user_cart_position_entity = UserCartPositions( user_cart_position_args) session.add(user_cart_position_entity) session.commit() pass response = {'cart_id': user_cart.id} return response except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка")
def get(self): try: action_type = 'GET' parser = reqparse.RequestParser() parser.add_argument('user_id') parser.add_argument('category_id') parser.add_argument('user_cart_id') args = parser.parse_args() if (len(args) == 0): abort(400, message='Arguments not found') user_id = args['user_id'] category_id = int(args['category_id']) user_cart_id = self.get_user_cart_argument(args) user_action_logging.log_user_actions(ROUTE, user_id, action_type) products = session.query(Products).filter( Products.category_id == category_id, Products.is_delete == False).order_by(Products.amount).all() # products = products. if not products: abort(400, message='Ошибка получения данных. Данные не найдены') for product in products: if (user_cart_id == -1): product.count = 1 product.alt_count = 0 else: user_cart = session.query(UserCarts).filter( UserCarts.id == user_cart_id).first() check_user_cart_positions = session.query( UserCartPositions).filter( and_( UserCartPositions.user_cart_id == user_cart.id, UserCartPositions.product_id == product.id)).first() if (not check_user_cart_positions): product.count = 1 product.alt_count = 0 else: product.count = check_user_cart_positions.count product.alt_count = check_user_cart_positions.alt_count pass product_position = session.query(ProductsPositions) \ .filter(ProductsPositions.category_id == category_id).first() if product_position is not None and len( product_position.products_positions) > 0: positioned_products = [ x for x in product_position.products_positions ] other_prods = [] for prod in products: if prod.id in product_position.products_positions: positioned_products[positioned_products.index( prod.id)] = prod else: other_prods.append(prod) products = positioned_products + other_prods # products.internal_products_count = len(products) return products except Exception as e: if (hasattr(e, 'data')): if (e.data != None and "message" in e.data): abort(400, message=e.data["message"]) abort(400, message="Неопознанная ошибка") finally: pass