Exemple #1
0
    def remove_manager(self, owner, to_remove):

        """

        Args:
            owner:
            to_remove:

        Returns:

        """
        if owner in self.store_owners:
            if to_remove in self.store_managers.keys():

                if to_remove in self.appointed_by.get(owner):

                    self.appointed_by[owner].remove(to_remove)
                    self.store_managers.pop(to_remove)

                    return True
                else:
                    return False
            else:
                return False

        else:
            logger.error("%s is not a store owner", owner)
            return False
Exemple #2
0
    def get_store(self, store_id: int) -> Store:
        if store_id in self.stores.keys():

            return self.stores.get(store_id)
        else:
            logger.error("%d store id doesn't exist", store_id)
            return NullStore()
Exemple #3
0
    def appoint_manager(self, owner, to_appoint):
        """

        Args:
            owner: user that in the owners list
            to_appoint: user that should be appoint to manager

        Returns:

        """
        if owner in self.store_owners:
            if to_appoint not in self.store_managers.keys():
                self.store_managers[to_appoint] = [
                    getattr(Store, "get_sales_history")
                ]
                self.appointed_by[owner].append(to_appoint)
                self.orm.appoint_manager(owner, to_appoint)
                return {
                    'error': False,
                    'data': to_appoint + ' has become a manager'
                }
            else:
                return {
                    'error': True,
                    'error_msg': to_appoint + ' is already a manager'
                }
        else:
            logger.error("%s is not a store owner", owner)
            return {
                'error': True,
                'error_msg': to_appoint + ' is not an owner'
            }
Exemple #4
0
    def remove_permission_from_manager(self, owner, manager, permission):
        """

        Args:
            owner:
            manager:
            permission:

        Returns:

        """

        if owner in self.store_owners:
                if manager in self.store_managers.keys():
                    if manager in self.appointed_by[owner]:
                        permission_function = getattr(Store, permission)
                        if permission_function in self.store_managers.get(manager):
                            self.store_managers[manager].remove(permission_function)
                            return True
                        else:
                            return False
                    else:
                        return False
                else:
                    return False
        else:
            logger.error("%s is not a store owner", owner)
            return False
Exemple #5
0
    def add_product(self, user_name: str, product_name: str,
                    product_price: int, product_categories, key_words: [str],
                    amount):
        """

        Args:
            user_name:the user who wants to add product, should be a owner
                or a manager with permission
            product_name:product name
            product_price:product price
            product_categories:
            key_words:

        Returns:

        """
        if self.is_owner(user_name) or self.check_permission(
                user_name, 'update_products'):
            self.inventory.add_product(
                product_name,
                Product(product_name, product_price, product_categories,
                        key_words, amount, self.store_id))
            return {'error': False, 'data': "Product has been added"}
        else:
            logger.error("%s Don't have this permission", user_name)
            return {'error': True, 'error_msg': "User don't have permission"}
Exemple #6
0
    def appoint_owner(self, owner, to_appoint):
        """

        Args:
            owner:
            to_appoint:

        Returns:

        """
        if owner in self.store_owners and \
                to_appoint not in self.store_owners:
            return {
                'error': False,
                'data': self.appoint_owner_helper(owner, to_appoint)
            }
        else:
            logger.error("%s is not a store owner or %s is already owner",
                         owner, to_appoint)
            return {
                'error':
                True,
                'error_msg':
                owner + "is not a store owner or " + to_appoint +
                " is already owner"
            }
Exemple #7
0
 def find_reg_user(self, username):
     if username in self.reg_user_list.keys():
         user = self.reg_user_list[username]
         return True, user
     logger.error("registered user with username %s does not exist",
                  username)
     return False, {'error_msg': 'User ' + username + ' does not exist.'}
Exemple #8
0
 def find_reg_user(self, username) -> RegisteredUser:
     if username in self.reg_user_list.keys():
         user = self.reg_user_list[username]
         return user
     logger.error("registered user with username %s does not exist",
                  username)
     return NullUser()
    def _import_events_from_sitemap(self):
        sitememap_urls = self.harzinfo_loader.load_sitemap()

        for url, lastmod in sitememap_urls.items():
            try:
                self._import_event_from_sitemap(url, lastmod)
            except Exception:
                logger.error(f"Event Exception {url}", exc_info=True)
Exemple #10
0
def remove_stock(market, ticker):
    try:
        stock_list_entry = StockListEntry.query.filter_by(
            market=market, ticker=ticker).first()
        if stock_list_entry:
            db.session.delete(stock_list_entry)
            db.session.commit()
    except Exception as e:
        logger.error(traceback.format_exc())
Exemple #11
0
 def find_user(self, username) -> User:
     if username in self.reg_user_list.keys():
         user = self.reg_user_list[username]
     else:
         if username in self.guest_user_list.keys():
             user = self.guest_user_list[username]
         else:
             logger.error("user with username %s does not exist", username)
             user = NullUser()
     return user
 def _load_categories(self):
     try:
         category_list = self.api_client.get_categories()
         self.categories = {
             c["name"]: {
                 "id": c["id"]
             }
             for c in category_list
         }
     except Exception:
         logger.error("Categories Exception", exc_info=True)
Exemple #13
0
def add_stock(market, ticker):
    try:
        stock = Stock(market, ticker)
        stock.generate_metrics()
        if stock.data and stock.data['price']:
            stock_list_entry = StockListEntry(market.upper(), ticker.upper())
            db.session.add(stock_list_entry)
            db.session.commit()
        return stock
    except Exception as e:
        logger.error(traceback.format_exc())
Exemple #14
0
def get_stocks_from_db():
    try:
        stocks = []
        stock_list_entries = StockListEntry.query.all()

        for stock_list_entry in stock_list_entries:
            stocks.append(object_to_dict(stock_list_entry))

        return stocks
    except Exception as e:
        logger.error(traceback.format_exc())
Exemple #15
0
 def pay(self, user, cart: Cart) -> [Purchase]:
     res = []
     cart = jsonpickle.decode(cart)
     if True:  #self.external_payment_system.pay(user, cart):
         for store in cart.baskets.keys():
             res.append(
                 Purchase(
                     cart.baskets.get(store).products, user, store,
                     self.p_id))
             self.p_id += 1
     else:
         logger.error("Failed to complete payment")
     return jsonpickle.encode(res)
Exemple #16
0
    def find_user(self, username):
        print(type(username))

        if username in self.reg_user_list.keys():
            user = self.reg_user_list[username]
            return True, user
        else:
            if username in self.guest_user_list.keys():
                user = self.guest_user_list[username]
                return True, user
            else:
                logger.error("user with username %s does not exist", username)
                return False, {'error_msg ': 'user not found'}
Exemple #17
0
 def update_product(self, user, product_name, attribute, updated):
     if self.check_permission(user, "update_products"):
         return {
             'error':
             not self.inventory.update_product(product_name, attribute,
                                               updated),
             'data':
             'updated'
         }
     logger.error("%s don't have this permission", user)
     return {
         'error': True,
         'error_msg': user + " don't have this permission"
     }
Exemple #18
0
    def remove_permission_from_manager(self, owner, manager, permission):
        """

        Args:
            owner:
            manager:
            permission:

        Returns:

        """

        if owner in self.store_owners:
            if manager in self.store_managers.keys():
                if manager in self.appointed_by[owner]:
                    # permission_function = getattr(Store, permission)
                    if permission in self.store_managers.get(manager):
                        self.store_managers[manager].remove(permission)
                        self.orm.remove_permission(manager, permission)
                        return {
                            'error':
                            False,
                            'data':
                            permission + ' has been removed from ' + manager
                        }

                    else:
                        return {
                            'error': True,
                            'error_msg': manager + ' dont has this permission'
                        }

                else:
                    return {
                        'error': True,
                        'error_msg': manager + ' not appointed by ' + owner
                    }
            else:
                return {
                    'error': False,
                    'error_msg': manager + ' is not a manager'
                }

        else:
            logger.error("%s is not a store owner", owner)
            return {
                'error': True,
                'error_msg': owner + 'is not an owner of this store'
            }
Exemple #19
0
    def add_permission_to_manager(self, owner, manager, permission):
        """

        Args:
            owner:
            manager:
            permission:

        Returns:

        """
        if owner in self.store_owners:
            if manager in self.appointed_by.get(owner):
                if manager in self.store_managers.keys():
                    # permission_function = getattr(Store, permission)
                    if permission not in self.store_managers.get(manager):
                        self.store_managers[manager].append(permission)
                        self.orm.add_permission(manager, permission)
                        return {
                            'error': False,
                            'data':
                            permission + ' has been added to ' + manager
                        }
                    else:
                        return {
                            'error': True,
                            'error_msg':
                            manager + ' has already this permission'
                        }

                else:
                    return {
                        'error': True,
                        'error_msg': manager + ' is not a manager'
                    }

            else:
                return {
                    'error': True,
                    'error_msg': manager + ' not appointed by ' + owner
                }

        else:
            logger.error("%s is not a store owner", owner)
            return {
                'error': True,
                'error_msg': owner + ' is not an owner of this store'
            }
Exemple #20
0
def drop_data() -> None:
    """
    Drop Data from the Tables.

    Raises:
        SQLAlchemy Exception : May raise when error occurs while working with the DB.
    """
    try:
        Department.query.delete()
        Employee.query.delete()
        db.session.commit()

    except Exception as err:
        logger.error('Couldn\'t delete Data from the Database: {}'.format(
            str(err)))
        db.session.rollback()
Exemple #21
0
    def appoint_owner(self, owner, to_appoint):
        """

        Args:
            owner:
            to_appoint:

        Returns:

        """
        if owner in self.store_owners and \
                to_appoint not in self.store_owners:
            return self.appoint_owner_helper(owner, to_appoint)
        else:
            logger.error("%s is not a store owner or %s is already owner", owner, to_appoint)
            return False
Exemple #22
0
def get_stocks_from_google():
    try:
        stocks = []
        stock_list_entries = StockListEntry.query.all()

        for stock_list_entry in stock_list_entries:
            stock = Stock(stock_list_entry.market, stock_list_entry.ticker)
            stock.generate_metrics()

            for key, value in stock.data.items():
                setattr(stock_list_entry, key, value)

            db.session.commit()
            stocks.append(object_to_dict(stock_list_entry))

        return stocks
    except Exception as e:
        logger.error(traceback.format_exc())
Exemple #23
0
    def appoint_manager(self, owner, to_appoint):
        """

        Args:
            owner: user that in the owners list
            to_appoint: user that should be appoint to manager

        Returns:

        """
        if owner in self.store_owners:
            if to_appoint not in self.store_managers.keys():
                self.store_managers[to_appoint] = [getattr(Store, "get_sales_history")]
                self.appointed_by[owner].append(to_appoint)
                return True
            else:
                return False
        else:
            logger.error("%s is not a store owner", owner)
            return False
Exemple #24
0
    def remove_owner(self, owner, to_remove, publisher: Publisher):
        """

        Args:
            owner:
            to_remove:
            :param owner:
            :param to_remove:
            :param publisher:

        Returns:


        """
        if owner in self.store_owners:
            if to_remove in self.store_owners:
                if owner in self.appointed_by.keys(
                ) and to_remove in self.appointed_by.get(owner):
                    if to_remove in self.appointed_by.keys():
                        self.appointed_by[owner].remove(to_remove)

                        self.__remove_owner_all_appointed(to_remove, publisher)
                        self.orm.remove_owner(to_remove)
                    return {'ans': True, 'desc': 'product has been removed'}
                else:
                    logger.error("%s is not a store owner", owner)
                    return {
                        'ans': False,
                        'desc': to_remove + ' is not a appointed by ' + owner
                    }
            else:
                return {
                    'ans': False,
                    'desc': to_remove + ' is not owner of this store'
                }
        else:
            return {
                'ans': False,
                'desc': to_remove + ' is not owner of this store'
            }
Exemple #25
0
    def add_product(self, user_name: str, product_name: str, product_price: int, product_categories,
                    key_words: [str], amount) -> bool:
        """

        Args:
            user_name:the user who wants to add product, should be a owner
                or a manager with permission
            product_name:product name
            product_price:product price
            product_categories:
            key_words:

        Returns:

        """
        if self.check_permission(user_name, getattr(Store, "add_product")):
            self.inventory.add_product(product_name,
                                       Product(product_name, product_price, product_categories, key_words, amount))
            return True
        else:
            logger.error("%s Don't have this permission", user_name)
            return False
Exemple #26
0
    def remove_manager(self, owner, to_remove):
        """

        Args:
            owner:
            to_remove:

        Returns:

        """
        if owner in self.store_owners:
            if to_remove in self.store_managers.keys():

                if to_remove in self.appointed_by.get(owner):

                    self.appointed_by[owner].remove(to_remove)
                    self.store_managers.pop(to_remove)

                    return {
                        'ans': True,
                        'desc': to_remove + ' is not a manager by ' + owner
                    }

                else:
                    return {
                        'ans': False,
                        'desc': to_remove + ' is not a appointed by ' + owner
                    }
            else:
                return {
                    'ans': False,
                    'desc': to_remove + ' is not a manager of this store'
                }
        else:
            logger.error("%s is not a store owner", owner)
            return {
                'ans': False,
                'desc': owner + ' is not an owner of this store'
            }
Exemple #27
0
 def connect(self):
     if self.external_payment_system is not None:
         if self.external_payment_system.connect():
             return True
         logger.error("Failed to connect to payment system")
     return False
 def connect(self):
     if self.external is not None:
         if self.external.connect():
             logger.error("Failed to connect to shipment system")
             return True
     return False
Exemple #29
0
 def update_product(self, user, product_name, attribute, updated):
     if self.check_permission(user, getattr(Store, "update_product")):
         return self.inventory.update_product(product_name, attribute, updated)
     logger.error("%s don't have this permission", user)
     return False