def get(self):
        user = session.query(UserModel).filter(UserModel.user == request.authorization.username).first()
        operations = session.query(OperationModel).filter(OperationModel.user_id == user.id).all()
        
        # Checking if fetched operations list empty
        if not operations:
            return operations, 204

        return operations, 200
def updateRoles(id):
    form = RoleForm()
    
    if not form.title.data[0].isdigit():
        if form.validate_on_submit():
            session.query(User_Role).filter(User_Role.id == id).update({User_Role.title: form.title.data})
            
            return redirect(url_for('auth.getRoles'))
        flash('Unable to update role!')
    flash('Value entered must start with an alphabet!')

    return redirect(url_for('auth.getRoles'))
Exemplo n.º 3
0
def add_rule():
    data = request.json
    parameter = data['parameter']
    threshold = data['threshold']

    user_list = []
    payload = {}

    # Check if rule exists
    if session.query(Rule).filter(Rule.parameter == parameter).first():
        payload['status'] = False
        payload['message'] = 'parameter %s already exists. Edit the rule instead.' % (parameter)
        resp = jsonify(payload)
        resp.status_code = 403
        return resp

    for username in data['usernames']:
        user = session.query(User).filter(User.username == username).first()

        # Check if all usernames exist
        if user:
            user_list.append(user)

        # If a username does not exist, send an error message
        else:
            payload['status'] = False
            payload['message'] = 'username %s does not exist.' % (username)
            resp = jsonify(payload)
            resp.status_code = 404
            return resp

    try:
        # Add rule to database
        new_rule = Rule(parameter=parameter,
                        threshold=threshold,
                        user=user_list)
        session.add(new_rule)
        session.commit()

    except:
        # Error saving rule to database
        payload['status'] = False
        payload['message'] = 'error creating rule.'
        resp = jsonify(payload)
        resp.status_code = 500
        return resp

    # Success response
    payload['status'] = True
    payload['message'] = 'rule for %s with threshold %d created successfuly.' % (parameter, threshold)
    resp = jsonify(payload)
    resp.status_code = 201
    return resp
Exemplo n.º 4
0
def edit_parameter(parameter):
    data = request.json
    threshold = data['threshold']

    user_list = []
    payload = {}

    # Check if rule exists
    rule = session.query(Rule).filter(Rule.parameter == parameter).first()
    if not rule:
        payload['status'] = False
        payload['message'] = 'parameter %s does not exist.' % (parameter)
        resp = jsonify(payload)
        resp.status_code = 404
        return resp

    for username in data['usernames']:
        user = session.query(User).filter(User.username == username).first()

        # Check if all usernames exist
        if user:
            user_list.append(user)

        # If a username does not exist, send an error message
        else:
            payload['status'] = False
            payload['message'] = 'username %s does not exist.' % (username)
            resp = jsonify(payload)
            resp.status_code = 404
            return resp

    try:
        # Edit rule
        rule.parameter = parameter
        rule.threshold = threshold
        rule.user = user_list
        session.commit()

    except:
        # Error editing rule
        payload['status'] = False
        payload['message'] = 'error editing rule.'
        resp = jsonify(payload)
        resp.status_code = 500
        return resp

    # Success response
    payload['status'] = True
    payload['message'] = 'rule for %s with threshold %d edited successfuly.' % (parameter, threshold)
    resp = jsonify(payload)
    resp.status_code = 200
    return resp
Exemplo n.º 5
0
def add_user():
    data = request.json
    username = data['username']

    payload = {}

    # Check if username exists
    user = session.query(User).filter(User.username == username).first()
    if user:
        payload['status'] = False
        payload['message'] = 'username %s already exists.' % (username)
        resp = jsonify(payload)
        resp.status_code = 403
        return resp

    try:
        # Add user to database
        new_user = User(username=username)
        session.add(new_user)
        session.commit()
    except:
        # Error saving event to database
        payload['status'] = False
        payload['message'] = 'error creating user.'
        resp = jsonify(payload)
        resp.status_code = 500
        return resp

    # Success response
    payload['status'] = True
    payload['message'] = 'user %s created successfuly.' % (username)
    resp = jsonify(payload)
    resp.status_code = 201
    return resp
Exemplo n.º 6
0
 def last_match_id(self, nickname: str):
     query = session.query(self.model)
     model = query.filter(self.model.user_id == TftUserModel.id).order_by(
         self.model.id.desc()).first()
     if model:
         match_id = model.match_id
         return match_id
     raise DbRecordNotExist
Exemplo n.º 7
0
    def placements_to(self, nickname: str, match_id: str):
        """
        Выдать все отфильтрованные матчи
        """
        rim_id = session.query(self.model.id)\
            .filter(self.model.match_id == match_id)\
            .order_by(self.model.id)\
            .first()

        matches = session.query(self.model)\
            .filter(self.model.id >= rim_id)\
            .all()

        if matches:
            placements = [match.placement for match in matches]
            return placements
        raise DbRecordNotExist
Exemplo n.º 8
0
async def employee_put(id: str, employee: Employee) -> Any:
    curr_empl = session.query(EmployeeDB) \
        .filter(EmployeeDB.id == id) \
        .one()
    for key, value in employee.dict().items():
        setattr(curr_empl, key, value)
    session.commit()

    return ({'message': 'success'})
    def delete(self, id):
        
        

        parsed_args = parser.parse_args()        
        delete_files=parsed_args['delete_files']
        user = session.query(UserModel).filter(UserModel.user == request.authorization.username).first()
        operation = session.query(OperationModel).filter(OperationModel.id == id, OperationModel.user_id ==user.id).first()


        # checking if requested operation exists
        if not operation:
            abort(404, status="fail", message="No such operation")

        # Deleting operation

        # Deleting related files if specified
        
        # Getting current session, it's not possible to delete row 
        # in SQLite while it's running on another session
        curr_sess=db.session.object_session(operation)
        curr_sess.delete(operation)
        del_count=0
        
        full_original=os.path.join(BASEDIR, UPLOAD_FOLDER, operation.original_file.split("/")[-1])
        if not os.path.exists(full_original) or os.remove(full_original):
            del_count+=1

        full_keyword=os.path.join(BASEDIR, UPLOAD_FOLDER, operation.keyword.split("/")[-1])
        if not os.path.exists(full_keyword) or os.remove(full_keyword):
            del_count+=1

        full_generated=os.path.join(BASEDIR, UPLOAD_FOLDER, operation.generated_file.split("/")[-1])
        if not os.path.exists(full_generated) or os.remove(full_generated):
            del_count+=1
            
        if del_count == 3:
            curr_sess.commit()
        else:
            curr_sess.rollback()
            abort(501, status="error", message="Cannot delete one of the related file, delete was not performed")


        return operation, 204
Exemplo n.º 10
0
 def placements(self, nickname: str) -> list:
     """
     Вернуть все места из базы данных.
     """
     matches = session.query(self.model, TftUserModel)\
         .filter(self.model.user_id == TftUserModel.id)\
         .filter(TftUserModel.nickname == nickname)\
         .all()
     if matches:
         placements = [match[0].placement for match in matches]
         return placements
     raise DbRecordNotExist
def checkPermissions():
    """
        Check if permission/role relationship exists in database.
        if it does not, create new permission/role relationship.
        
        if unchecked revoke permissions given to role
    """
    
    if request.method == 'POST':
        access = {}
        revoked = {}
        selected = []
        unselected = []
        
        values = [tuple(map(int, value.split('-'))) for value in request.form.getlist('check')]
        checked = 'check' in request.form
        heads = ['permission', 'role']
        
        access_roles = session.query(perm_role).all()
        
        # check if checked values are already in db before adding
        for x in values:
            if x not in access_roles:
                selected.append(x)
                
        for items in selected:
            access = dict(zip(heads, items))

            if selected:
                role = User_Role.query.filter_by(id = access['role']).first()
                perms = Perm.query.filter_by(id = access['permission']).all()
                
                role.givePermissionsTo(perms)
        
        # check if box is unselected and revoke permission in db
        for x in access_roles:
            if x not in values:
                unselected.append(x)
        
        for i in unselected:
            revoked = dict(zip(heads, i))  
        
            if unselected:
                xRole = User_Role.query.filter_by(id = revoked['role']).first()
                xPerms = Perm.query.filter_by(id = revoked['permission']).all()
                
                xRole.revokePermissions(xPerms)
            
        return redirect(url_for('auth.getPermissions'))
Exemplo n.º 12
0
async def employee_get(offset: int = 0,
                       limit: int = 10,
                       sort: str = '+id') -> Employees:
    sort_field = sort[1:]
    sort_dir = sort[0]
    sort_obj = getattr(EmployeeDB, sort_field)

    if sort_dir == '-':
        sort_obj = sort_obj.desc()

    employees = session.query(EmployeeDB) \
                       .order_by(sort_obj) \
                       .offset(offset) \
                       .limit(limit) \
                       .all()

    employees = Employees(**{'employees': employees})
    return employees
Exemplo n.º 13
0
def get_user_alert(username):

    payload = {}
    alerts = []

    # Check if username exists
    user = session.query(User).filter(User.username == username).first()
    if not user:
        payload['status'] = False
        payload['message'] = 'username %s does not exist.' % (username)
        resp = jsonify(payload)
        resp.status_code = 404
        return resp

    # Check every event of every rule to see if it exceeds the threshold
    for rule in user.rules:
        for event in rule.event:
            if event.value > rule.threshold:
                alerts.append({
                    'parameter': rule.parameter,
                    'value': event.value,
                    'threshold': rule.threshold,
                    'timestamp': event.timestamp
                })

    # Success response
    payload['status'] = True

    # Check if there is any alert
    if not alerts:
        payload['message'] = 'no alerts for the user %s.' % (username)
    else:
        payload['message'] = 'alerts for the user %s.' % (username)
        payload['alerts'] = alerts
    resp = jsonify(payload)
    resp.status_code = 200
    return resp
Exemplo n.º 14
0
def add_event():
    data = request.json
    parameter = data['parameter']
    value = data['value']

    payload = {}

    # Check if rule exists
    rule = session.query(Rule).filter(Rule.parameter == parameter).first()
    if not rule:
        payload['status'] = False
        payload['message'] = 'parameter %s does not exist.' % (parameter)
        resp = jsonify(payload)
        resp.status_code = 404
        return resp

    try:
        # Add event to database
        new_event = Event(value=value, rule=rule)
        session.add(new_event)
        session.commit()
    except:
        # Error saving event to database
        payload['status'] = False
        payload['message'] = 'error creating event.'
        resp = jsonify(payload)
        resp.status_code = 500
        return resp

    # Success response
    payload['status'] = True
    payload['message'] = 'event for %s with value %d created successfuly.' % (
        parameter, value)
    resp = jsonify(payload)
    resp.status_code = 201
    return resp
Exemplo n.º 15
0
from app.db import session
from app.models import Home

print(session.query(Home).get_x())
Exemplo n.º 16
0
async def read_users():
    users = session.query(UserTable).all()
    return users
Exemplo n.º 17
0
def list_entries():
    """list journal stock entries"""
    all_entries = (session.query(Stock).all())
    print(earnings_controller.get_all_entries_df(all_entries))
Exemplo n.º 18
0
 def test_unauth(self):
     with self.app:
         user = session.query(User).get(1)
         self.assertFalse(user.authenticated)
Exemplo n.º 19
0
 def get_by_username(self, username -> str):
     return (
         session.query(self.model)
         .filter_by(get_by_username=username)
         .first()
      )
Exemplo n.º 20
0
 def get_all(self):
     return session.query(self.model).all()
Exemplo n.º 21
0
    def post(self):
        parsed_args = parser.parse_args()        
        original_file=parsed_args['file']
        keyword=parsed_args['keyword']

        # check if the post request has the file and keyword part and they are not empty and they are allowed
        if original_file is None or keyword is None or not allowed_file(original_file.filename) or not allowed_file(keyword.filename):
            
            # init array for collecting responses
            response=[]

            # Check if file is specified
            if original_file is None:
                response.append("File parameter has not been specified: Type->File")

            # check if keyword is specified
            if keyword is None:
                response.append("Keyword parameter has not been specified: Type->File")

            # check if selected files are in allowed list
            if not allowed_file(original_file.filename) or not allowed_file(keyword.filename):
                response.append("Uploading files only in {} format is allowed".format(ALLOWED_EXTENSIONS))

            abort(400, status="fail", message=response)
        
        # Starting of part adding trademark symbol
        if original_file and keyword:
            
            # Security check of file name
            original_filename = secure_filename(original_file.filename)
            extension = os.path.splitext(original_filename)[1]

            # Coverting files to string
            keyword_text = keyword.read().decode("utf-8")
            text=original_file.read().decode("utf-8")

            # Generating uniq id for saving files safely without overlaping
            uniq_id=str(uuid.uuid4())

            # Saving original file to upload folder with new unique name
            original_file_n="original-"+uniq_id+extension
            with open(os.path.join(UPLOAD_FOLDER, original_file_n), "w") as f:
                f.write(text) 

            # Saving keyword file to upload folder with new unique name
            keyword_n="keyword-"+uniq_id+extension
            with open(os.path.join(UPLOAD_FOLDER, keyword_n), "w") as f:
                f.write(keyword_text) 

            # Counter for replacement
            count=0

            # Looping keywords key against words of original files
            for key in keyword_text.splitlines():
                while key in text.split():
                    
                    # with that logic also covered preventing adding trademark symbol
                    #   if already exist
                    # Adding trademark symbol to the end of the word
                    text=text.replace(key,key+TRADEMARK_SYMBOL,1)

                    # increasing replacement counter
                    count+=1


            #Saving generated file to upload folder with new unique name
            generated_file_n = "generated-"+uniq_id+extension
            with open(os.path.join(UPLOAD_FOLDER, generated_file_n), "w") as f:
                f.write(text)                

            # Fetching session user 
            user = session.query(UserModel).filter(UserModel.user == request.authorization.username).first()
            
            # Saving as a new operation to database
            operation = OperationModel(original_filename, os.path.join(request.host_url, UPLOAD_FOLDER, original_file_n), os.path.join(request.host_url, UPLOAD_FOLDER, keyword_n), os.path.join(request.host_url, UPLOAD_FOLDER, generated_file_n), count, user.id)
            OperationModel.add(operation)
            return operation, 201
Exemplo n.º 22
0
 def get_by_email(self, email -> str):
     return (
         session.query(self.model)
         .filter_by(email=email)
         .first()
      )