Exemple #1
0
 def delete(self, id):
     try:
         object = session.query(Objects).filter(Objects.id == id).first()
         if not object:
             abort(404, message="Object {} doesn't exist".format(id))
         session.delete(object)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove Entity")
Exemple #2
0
 def delete(self, id):
     try:
         entity = session.query(MODEL).filter(MODEL.id == id).first()
         if not entity:
             abort(404, message=ENTITY_NAME+" {} doesn't exist".format(id))
         session.delete(entity)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove "+ENTITY_NAME)
Exemple #3
0
 def delete(self, id):
     try:
         setting = session.query(Settings).filter(Settings.id == id).first()
         if not setting:
             abort(404, message=" Settings {} doesn't exist".format(id))
         session.delete(setting)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove  Settings")
Exemple #4
0
 def delete(self, id):
     try:
         client = session.query(Clients).filter(Clients.id == id).first()
         if not client:
             abort(404, message="Client type {} doesn't exist".format(id))
         session.delete(client)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove Client")
Exemple #5
0
 def delete(self, id):
     try:
         schema = session.query(Schemas).filter(Schemas.id == id).first()
         if not schema:
             abort(404, message="Client type {} doesn't exist".format(id))
         session.delete(schema)
         session.commit()
         return {}, 204
     except Exception as e:
         # db.db.init_session()
         session.rollback()
         abort(400, message="Error in remove schema".format(id))
 def delete(self, id):
     try:
         user_role = session.query(UserRoles).filter(
             UserRoles.id == id).first()
         if not user_role:
             abort(404, message="User role {} doesn't exist".format(id))
         session.delete(user_role)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove user role")
Exemple #7
0
 def delete(self, id):
     try:
         user_login = session.query(UserLogins).filter(
             UserLogins.id == id).first()
         if not user_login:
             abort(404, message="User Login {} doesn't exist".format(id))
         session.delete(user_login)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error remove user login")
Exemple #8
0
 def delete(self, id):
     try:
         client_info = session.query(ClientInfo).filter(
             ClientInfo.id == id).first()
         if not client_info:
             abort(404, message="Attachment  {} doesn't exist".format(id))
         session.delete(client_info)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove Attachment ")
Exemple #9
0
 def delete(self, id):
     try:
         action_log = session.query(ActionLog).filter(
             ActionLog.id == id).first()
         if not action_log:
             abort(404, message="Action log {} doesn't exist".format(id))
         session.delete(action_log)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove Action Type")
 def delete(self, id):
     try:
         attachment = session.query(Attachments).filter(
             Attachments.id == id).first()
         if not attachment:
             abort(404, message="Attachment  {} doesn't exist".format(id))
         session.delete(attachment)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove Attachment ")
 def delete(self, id):
     try:
         shared_group_object = session.query(SharedGroupObjects).filter(
             SharedGroupObjects.id == id).first()
         if not shared_group_object:
             abort(
                 404,
                 message="Shared Group Object {} doesn't exist".format(id))
         session.delete(shared_group_object)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove Shared Group Object")
 def delete(self, id):
     try:
         group_object_right = session.query(GroupObjectRights).filter(
             GroupObjectRights.id == id).first()
         if not group_object_right:
             abort(
                 404,
                 message="Group Object Rights  {} doesn't exist".format(id))
         session.delete(group_object_right)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove Group Object Rights ")
Exemple #13
0
 def delete(self, id):
     try:
         user_group = session.query(UserGroupSettings).filter(
             UserGroupSettings.id == id).first()
         if not user_group:
             abort(
                 404,
                 message="User Group Settings {} doesn't exist".format(id))
         session.delete(user_group)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove User Group Settings")
Exemple #14
0
 def delete(self, id):
     try:
         entity = session.query(MODEL).filter(MODEL.id == id).first()
         if not entity:
             abort(404,
                   message=ENTITY_NAME + " {} doesn't exist".format(id))
         session.query(Products).filter(
             Products.partner_id == entity.id).update(
                 {Products.partner_id: None})
         session.commit()
         session.delete(entity)
         session.commit()
         session.query(Attachments).filter(Attachments.id.in_(
             entity.images)).delete(synchronize_session=False)
         session.commit()
         return {}, 204
     except Exception as e:
         session.rollback()
         abort(400, message="Error while remove " + ENTITY_NAME)
    def post(self):
        try:

            action_type = 'POST'
            json_data = request.get_json(force=True)

            user_cart_id = json_data['id']
            cart_positions = json_data['cart_positions']
            # user_action_logging.log_user_actions(ROUTE, user_id, action_type)

            db_cart_positions = session.query(UserCartPositions).filter(
                UserCartPositions.user_cart_id == user_cart_id).order_by(
                    desc(UserCartPositions.id)).all()

            remove_cart_position_indexes = []
            #проверяем все ли элементы корзины из реальной БД есть в той, что пришла
            for db_cart_position in db_cart_positions:
                founded = False
                for cart_position in cart_positions:
                    m_cart_position_id = cart_position['id']
                    if (m_cart_position_id == db_cart_position.id):
                        founded = True
                        break

                if (founded == False):
                    remove_cart_position_indexes.append(db_cart_position.id)

            #удаляем все позиции которые были удалены на стороне клиента
            for remove_cart_position_index in remove_cart_position_indexes:
                entity = session.query(UserCartPositions).filter(
                    UserCartPositions.id ==
                    remove_cart_position_index).first()
                if not entity:
                    continue
                session.delete(entity)
                session.commit()

            total_bonuses = 0
            for position in cart_positions:
                position_args = {}
                position_args['id'] = position['id']
                position_args['count'] = position['count']
                position_args['alt_count'] = position['alt_count']
                position_args['description'] = position['description']
                position_args['need_invoice'] = position['need_invoice']

                db_position = session.query(UserCartPositions).filter(
                    UserCartPositions.id == position_args['id']).first()

                if (not db_position):
                    continue

                db_transformer.transform_update_params(db_position,
                                                       position_args)
                session.add(db_position)
                session.commit()

            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).all()
            # for cart_position in cart_positions:
            #     cart_position

            user_cart.cart_positions = user_cart_positions
            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

                cart_position.bonus = 0
                product = session.query(Products).filter(
                    Products.id == cart_position.product_id).first()
                if (currency_id == -1):
                    currency_id = product.currency_id

                if (not product):
                    continue

                if (product.alt_discount_amount == None):
                    product.alt_discount_amount = 0

                if (product.alt_amount == None):
                    product.alt_amount = 0

                cart_position.bonuses = 0
                if (cart_position.count != 0):
                    bonus = product.amount * (product.bonus_percent /
                                              100) * cart_position.count
                    bonus += product.alt_amount * (
                        product.bonus_percent / 100) * cart_position.alt_count
                    bonus = round(bonus, 2)
                    if (bonus != None):
                        cart_position.bonuses = bonus
                        total_bonuses += bonus

                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 = 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()
            user_cart.bonuses_amount = round(total_bonuses, 2)
            return user_cart

        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('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="Неопознанная ошибка")