def test_main_service_db_connection(self):
     with transaction_context() as session:
         entry = Action(time=1,
                        name="test1",
                        action_type=ActionType.FIXED_ACTION.value)
         session.add(entry)
         entry = Action(time=2,
                        name="test2",
                        action_type=ActionType.FIXED_ACTION.value)
         session.add(entry)
         entry = Action(time=0,
                        name="test3",
                        action_type=ActionType.REPETITIVE_ACTION.value)
         session.add(entry)
     service = MainService()
     service.run()
     lst = service.get_action_from_queue()
     self.assertEqual(len(lst), 0)
     time.sleep(3)
     lst = service.get_action_from_queue()
     self.assertEqual(len(lst), 3)
     with transaction_context() as session:
         lst = session.query(Action).all()
         for i in lst:
             print(i)
             session.delete(i)
Exemple #2
0
 def test_db(self):
     with transaction_context() as session:
         entry = Action(time=1,
                        name="test",
                        action_type=ActionType.REPETITIVE_ACTION.value)
         session.add(entry)
     with transaction_context() as session:
         lst = session.query(Action).all()
         for i in lst:
             print(i)
             session.delete(i)
Exemple #3
0
 def is_cron(self, message: str) -> bool:
     with transaction_context() as session:
         r = session.query(Cron).filter_by(message=message).all()
         if len(r) == 0:
             return False
         else:
             return True
Exemple #4
0
 def tearDown(self):
     print('END TestParamService')
     with transaction_context() as session:
         lst = session.query(ParamDb).all()
         for elem in lst:
             session.delete(elem)
             print(f'{elem} removed from db')
Exemple #5
0
 def setUp(self):
     print('BEGIN TestParamService')
     with transaction_context() as session:
         entry = ParamDb(name=ParamName.BEGIN_TIME_REPETITIVE_ACTION,
                         value=2)
         print(f'{entry} added to db')
         session.add(entry)
Exemple #6
0
 def put(self, message: str, cron: str) -> Cron:
     with transaction_context() as session:
         entry = Cron(message=message, cron=cron)
         session.add(entry)
         session.commit()
         logger.info('Cron added {}'.format(entry))
     return entry
Exemple #7
0
 def alert_is_in_db(self, message: str, time: str) -> bool:
     with transaction_context() as session:
         r = session.query(DbAlert).filter_by(message=message).filter_by(
             time=time).all()
         if len(r) == 0:
             return False
         else:
             return True
Exemple #8
0
 def put(self, alert: Alert) -> Alert:
     with transaction_context() as session:
         entry = DbAlert(**asdict(alert))
         session.add(entry)
         session.commit()
         alert = Alert(**entry.serialize)
         logger.info('Alert added in DB : {}'.format(alert))
     return alert
Exemple #9
0
def client_id_present_in_db(client_id: str) -> bool:
    with transaction_context() as session:
        ids = session.query(DbClientId).all()
        ids = set(map(lambda x: x.client_id, ids))
    if client_id in ids:
        return True
    else:
        return False
 def get_param(self, param_name: ParamName) -> Param:
     with transaction_context() as session:
         entry = session.query(ParamDb).filter_by(
             name=param_name.value).first()
         if entry is None:
             logger.error(f'{param_name} not in db')
             raise Exception(f'{param_name} not in db')
         param = Param(name=param_name, value=entry.value)
     return param
 def add_param(self, name: str, value):
     param_name = ParamName(name)
     if param_name is ParamName.OTHER:
         logger.error(f'{name} not in ParamName enum')
         raise Exception(
             f'{name} not in ParamName enum. Accepted value : ' +
             ';'.join([i for i in ParamName]))
     with transaction_context() as session:
         entry = ParamDb(name=param_name, value=value)
         session.add(entry)
def update_scope(name: str, scopes: List[str]) -> User:
    logger.info(f'Updating scope of user {name} with {scopes}')
    with transaction_context() as session:
        user = session.query(DbUser).filter_by(nickname=name).first()
        if user is None:
            raise Exception(f'No user named {name}')
        user.scopes = ' '.join(scopes)
        session.commit()
        ret = User(**user.serialize)
    return ret
def create_user(name: str, pwd: str, scopes: List[str] = None) -> User:
    logger.info(f'Creating user {name}')
    user = DbUser(nickname=name,
                  password=pwd,
                  scopes=' '.join(scopes) if scopes else '')
    with transaction_context() as session:
        session.add(user)
        session.commit()
        ret = User(**user.serialize)
    return ret
 def emit(self, record):
     trace = None
     exc = record.__dict__['exc_info']
     if exc:
         trace = traceback.format_exc()
     with transaction_context() as session:
         log = Log(logger=record.__dict__['name'],
                   level=record.__dict__['levelname'],
                   trace=trace,
                   message=record.__dict__['message'])
         session.add(log)
Exemple #15
0
def create_new_build_order():
    name = request.form['name']
    with transaction_context() as session:
        session.expire_on_commit = False
        lst = session.query(BuildOrder).filter_by(name=name).all()
        if len(lst) == 0:
            entry = BuildOrder(name=name)
            session.add(entry)
        else:
            entry = lst[0]
    j = entry.serialize
    return jsonify(j)
Exemple #16
0
def actions(build_order=None, _id=None):
    if _id:
        if request.method == 'DELETE':
            with transaction_context() as session:
                to_del = session.query(Action).filter_by(id=_id).first()
                logger.info(f'Deleting {to_del}')
                session.delete(to_del)
            return '', 204
        elif request.method == 'GET':
            with transaction_context() as session:
                to_ret = session.query(Action).filter_by(id=_id).first()
                j = to_ret.serialize
            return jsonify(j)
        elif request.method == 'PUT':
            with transaction_context() as session:
                session.expire_on_commit = False
                to_update = session.query(Action).filter_by(id=_id).first()
                logger.info(f'Updating {to_update} with : {request.json}')
                # to_update.__dict__.update(**request.json)
                for k, v in request.json.items():
                    setattr(to_update, k, v)
                session.add(to_update)
    else:
        if request.method == 'GET':
            with transaction_context() as session:
                lst = session.query(BuildOrder).filter_by(
                    name=build_order).first().actions
                lst = sorted(lst, key=lambda x: x.time)
                lst = [i.serialize for i in lst]
            return jsonify(lst)
        elif request.method == 'POST':
            with transaction_context() as session:
                session.expire_on_commit = False
                new_action = Action(**request.json)
                session.add(new_action)
                session.commit()
                logger.info(f'Creating {new_action}')
                j = new_action.serialize
            return jsonify(j), 201
    return '', 200
Exemple #17
0
 def get_action_list(self) -> List[Action]:
     lst_to_return = []
     with transaction_context() as session:
         if self.build_order_name is None:
             lst = session.query(ActionDb).all()
         else:
             lst = session.query(BuildOrder).filter_by(
                 name=self.build_order_name).first().actions
         lst = list(
             filter(lambda x: x.action_type == ActionType.FIXED_ACTION,
                    lst))
         lst_to_return = [Action(i.time, i.name) for i in lst]
     return lst_to_return
def get_user_by_name(name: str) -> DbUser:
    with transaction_context() as session:
        user: DbUser = session.query(DbUser).filter_by(nickname=name).first()
        if user is None:
            raise UserNotFoundException(f'User not found : {name}')
    return user
Exemple #19
0
def add_one(client_id: str):
    with transaction_context() as session:
        entry = DbClientId(client_id=client_id)
        session.add(entry)
 def get_all(self) -> List[Param]:
     with transaction_context() as session:
         lst = session.query(ParamDb).all()
         lst = [Param(name=i.name, value=i.value) for i in lst]
     return lst
def get_all_users() -> List[User]:
    with transaction_context() as session:
        users_from_db: List[DbUser] = session.query(DbUser).all()
        users = list(map(lambda x: User(**x.serialize), users_from_db))
    return users
Exemple #22
0
 def get_all(self) -> List[Alert]:
     with transaction_context() as session:
         r = session.query(DbAlert).all()
         r = list(map(lambda x: Alert(**x.serialize), r))
     return r
 def delete_param(self, param_name: ParamName):
     with transaction_context() as session:
         entry = session.query(ParamDb).filter_by(
             name=param_name.value).first()
         if entry is not None:
             session.delete(entry)
Exemple #24
0
 def remove_one(self, _id: int):
     with transaction_context() as session:
         r = session.query(DbAlert).filter_by(id=_id).first()
         logger.info('Removing alert {}'.format(r.serialize))
         session.delete(r)
 def setUp(self) -> None:
     Base.metadata.create_all(bind=engine)
     self.password = '******'
     user = DbClientId(client_id='aaa')
     with transaction_context() as session:
         session.add(user)
Exemple #26
0
 def setUp(self):
     Base.metadata.create_all(bind=engine)
     self.password = '******'
     user = DbUser(nickname='Robin', password=self.password, scopes="a b c")
     with transaction_context() as session:
         session.add(user)
Exemple #27
0
def get_all_build_orders_name():
    with transaction_context() as session:
        lst = session.query(BuildOrder).all()
        lst = [i.name for i in lst]
    return jsonify(lst)
Exemple #28
0
 def persist_entry(self, action: Action):
     with transaction_context() as session:
         entry = ActionDb(time=action.time,
                          name=action.name,
                          action_type=ActionType.FIXED_ACTION.value)
         session.add(entry)
Exemple #29
0
 def delete_entry(self, action: Action):
     with transaction_context() as session:
         entry = session.query(ActionDb).filter_by(
             time=action.time, name=action.name).first()
         session.delete(entry)
Exemple #30
0
def get_all() -> List[str]:
    with transaction_context() as session:
        ids = session.query(DbClientId).all()
        ids = list(map(lambda x: x.client_id, ids))
    return ids