def get(self, id=None):
     if id:
         try:
             user = db_session.query(TabUser).filter(TabUser.id == id).one()
             user_schema = UserSchema().dump(user)
             db_session.close()
             return jsonify(user_schema)
         except BaseException as exc:
             return str(exc), 404
     else:
         users = db_session.query(TabUser).all()
         users_schema = UserSchema(many=True).dump(users)
         db_session.close()
         return jsonify(users_schema)
    def delete(self, id):
        try:
            # Find Association and delete
            asso = db_session.query(TabUserRoles).filter(
                TabUserRoles.user_id == id).all()
            for item in asso:
                item.delete(item)

            # Delete User
            user = db_session.query(TabUser).filter(TabUser.id == id).one()
            user.delete(user)
            return "", 200

        except BaseException as exc:
            return str(exc), 404
    def get(self, id=None):
        if id:
            try:
                role = db_session.query(TabRole).filter(TabRole.id == id).one()
                role_schema = RolesSchema().dump(role)
                db_session.close()
                return jsonify(role_schema)
            except BaseException as exc:
                return str(exc), 404

        else:
            role = db_session.query(TabRole).all()
            role_schema = RolesSchema(many=True).dump(role)
            db_session.close()
            return jsonify(role_schema)
 def put(self, id):
     rev_type = db_session.query(TabRevisionTypes).filter(TabRevisionTypes.id == id).first()
     rev_type.name = request.json['name']
     rev_type.description = request.json['description']
     rev_type.expiration = request.json['expiration']
     rev_type.exp_reminder = request.json['exp_reminder']
     rev_type.update()
     return Response(status=200)
    def put(self, id):
        user = db_session.query(TabUser).filter(TabUser.id == id).one()
        user.autor = user_from_request(request)

        roles = request.json['roles']
        owned_loc = request.json['owned_loc']

        # User update
        user.email = request.json['email']
        user.name = request.json['name']
        user.surname = request.json['surname']
        user.phone = request.json['phone']
        user.is_enabled = request.json['is_enabled']

        # TODO: Rebuild to efficient variant
        # Deleting all roles from user Association table
        asso = db_session.query(TabUserRoles).filter(
            TabUserRoles.user_id == id).all()
        for item in asso:
            db_session.delete(item)
            print('Deleted', item.role_id)
        db_session.commit()

        # Appending roles to user
        for item in roles:
            role = db_session.query(TabRole).filter(
                TabRole.id == item['id']).first()
            user.roles.append(role)
            print('Appended', role.name)

        # Deleting owned locations from Association table
        owned_loc_asso = db_session.query(TabLocOwners).filter(
            TabLocOwners.id_user == id).all()
        for item in owned_loc_asso:
            db_session.delete(item)
        db_session.commit()

        #Appending onwed_loc to user
        for item in owned_loc:
            location = db_session.query(TabLocation).filter(
                TabLocation.id == item['id']).first()
            user.owned_loc.append(location)

        user.update()
        return
 def put(self, id):
     device = db_session.query(TabRevisions).filter(
         TabRevisions.id == id).first()
     device.id_location = request.json['id_location']
     device.id_device_type = request.json['id_device_type']
     device.id_category = request.json['id_category']
     device.id_acc_center = request.json['id_acc_center']
     device.update()
     return Response(status=200)
 def get(self):
     revision = db_session.query(TabRevisions) \
         .join(TabDevice, TabRevisions.device) \
         .join(TabRevisionTypes, TabRevisions.revision_type) \
         .join(TabUser, TabRevisions.technician) \
         .all()
     rev_result = RevissionsSchemaEnd(many=True).dump(revision)
     response = jsonify(rev_result)
     print(response.json)
     db_session.close()
     return response
 def get(self, id):
     revision = db_session.query(TabRevisions, TabDevice, TabRevisionTypes, TabUser, Pricelist) \
         .join(TabDevice, TabRevisions.id_device == TabDevice.id) \
         .join(TabRevisionTypes, TabRevisions.id_rev == TabRevisionTypes.id) \
         .join(TabUser, TabRevisions.id_technician == TabUser.id) \
         .join(Pricelist,
               and_(TabRevisions.id_rev == Pricelist.id_rev_type, TabDevice.id_category == Pricelist.id_cat)) \
         .filter(TabRevisions.id == id).first()
     schema = RevissionsSchemaEnd(many=True)
     result = schema.dump(revision)
     response = jsonify(result)
     return Response(
         response=jsonify(response),
         status=200,
     )
    def post(self):
        try:
            new_rev_type = TabRevisionTypes(name=request.json['name'],
                                            description=request.json['description'],
                                            expiration=request.json['expiration'],
                                            exp_reminder=request.json['exp_reminder'],
                                            autor=1)
            group = db_session.query(TabGroupOfRevTypes).filter(TabGroupOfRevTypes.id == request.json['id_group']).first()
            new_rev_type.group.append(group)

            print(new_rev_type)
            TabRevisionTypes.add(new_rev_type)
            return "", 201
        except BaseException as e:
            print(e)
            return flask_restful.abort(409)
    def get(self, id, attachment_type):
        obj_revisson = db_session.query(TabRevisions)\
            .join(TabDevice, TabRevisions.device)\
            .join(TabLocation, TabDevice.location) \
            .join(TabRevisionTypes, TabRevisions.revision_type)\
            .filter(TabRevisions.id == id).first()

        # Filename for export
        attachment_filename = translate_rev_name(obj_revisson.device.location.name) \
                              + "-" + translate_rev_name(obj_revisson.revision_type.name) \
                              + "-" + attachment_type + ".pdf"

        path = "D:/RevManager/UPLOAD_FILES/{0}/{1}/{2}.pdf".format(
            obj_revisson.device.location.id_acc_center,
            obj_revisson.device.id_acc_center,
            str(obj_revisson.id) + "-" + attachment_type)
        return send_file(path,
                         as_attachment=True,
                         attachment_filename=attachment_filename)
    def post(self):
        data = request.get_json(force=True)
        email = data['email']
        password = data['password']
        user = db_session.query(TabUser).filter(TabUser.email == email).first()

        if user == None:
            response = make_response(
                jsonify({"message": "invalid username/password"}))
            response.status_code = 401
            return response
        if check_password_hash(user.password, password):
            token = create_token(user)
            user.lastlogin = time.strftime('%Y-%m-%d %H:%M:%S')
            user.update()
            return {'token': token}, 200
        else:
            response = make_response(
                jsonify({"message": "invalid username/password"}))
            response.status_code = 401
            return response
    def post(self):
        # TODO:Ošetřit duplicity
        """
        Example of User JSON for POST method:
        {
            "user": {
                "autor": 1,
                "email": "*****@*****.**",
                "is_enabled": true,
                "name": "Test",
                "password": "******",
                "phone": "123456789",
                "surname": "User 3"
            },
            "roles": [
                1,
                2
            ]
        }
        """
        # Get data from JSON
        global isAdded
        response = request.get_json()
        res_role = response['roles']
        res_user = response['user']

        # Deserialize JSON to Obj User over UserSchemaPut
        user = UserSchemaPut().load(res_user)
        user.autor = user_from_request(request)

        # Appending roles to User
        print(res_role)
        for item in res_role:
            role = db_session.query(TabRole).filter(TabRole.id == item).first()
            user.roles.append(role)

        # Add and commmt do DB
        user.add(user)
        return
    def post(self):
        data = json.loads(request.form['data'])
        id_revision = data['id']
        attachment_type = data['type']

        obj_revisson = db_session.query(TabRevisions) \
            .join(TabDevice, TabRevisions.device) \
            .join(TabLocation, TabDevice.location) \
            .join(TabRevisionTypes, TabRevisions.revision_type) \
            .filter(TabRevisions.id == id_revision).first()

        f = RevFile()
        f.setRelativePath(loc_acc=obj_revisson.device.location.id_acc_center,
                          device_acc=obj_revisson.device.id_acc_center)
        f.filename = str(id_revision)

        # File saving Logic
        if attachment_type == 'def':
            rev_v = request.files['file']
            f.saveFile(file=rev_v, file_type="def")
            obj_revisson.rev_v = True
            obj_revisson.update()

        elif attachment_type == 'periodic':
            rev_p = request.files['file']
            f.saveFile(file=rev_p, file_type="period")
            obj_revisson.rev_p = True
            obj_revisson.update()

        elif attachment_type == 'bug':
            rev_z = request.files['file']
            f.saveFile(file=rev_z, file_type="bug")
            obj_revisson.rev_z = True
            obj_revisson.fix_date = data['fix_date']
            obj_revisson.update()
        else:
            pass
        return "", 200
 def decorated_function(*args, **kwargs):
     if not request.headers.get('Authorization'):
         response = jsonify(message='Missing authorization header')
         response.status_code = 403
         return response
     try:
         payload = parse_token(request)
     except DecodeError:
         response = jsonify(message='Token is invalid')
         response.status_code = 401
         return response
     except ExpiredSignature:
         response = jsonify(message='Token has expired')
         response.status_code = 401
         return response
     user_id = payload['sub']
     user = db_session.query(TabUser).filter_by(id=user_id).first()
     roles_list = user.get_roles()
     if not (roles[0] in roles_list or 'admin' in roles):
         response = jsonify(message='Unauthorized role')
         response.status_code = 403
         return response
     return f(*args, **kwargs)
 def delete(self, id):
     db_session.query(TabGroupOfRevTypes).filter(TabGroupOfRevTypes.id == id).delete()
     db_session.commit()
     return Response(status=200)
    def post(self):
        # try:
        data = json.loads(request.form['data'])
        print(data)
        """
        Class for save file
        f = File() # Class init

        - file from request
        - filename: Custom or name of file
        - data from json for make PATH

        PATH build style:
        id_location/id_device/id_revisionTypesGroup/id_revision
        """

        # Find device for recognize ACC Centre
        device = db_session.query(TabDevice) \
            .join(TabLocation, TabDevice.location) \
            .filter(TabDevice.id == data['id_device']).first()

        # Find last ID in revission for filename
        last_id = db_session.query(func.max(TabRevisions.id)).scalar()
        if last_id is None:
            last_id = 0

        f = RevFile()
        f.setRelativePath(loc_acc=device.location.id_acc_center,
                          device_acc=device.id_acc_center)
        f.filename = str(last_id + 1)

        # File saving Logic
        if data['file_v'] is not None:
            rev_v = request.files['file_v']
            f.saveFile(file=rev_v, file_type="def")

        if data['file_p'] is not None:
            rev_p = request.files['file_p']
            f.saveFile(file=rev_p, file_type="period")

        if data['file_z'] is not None:
            rev_z = request.files['file_z']
            f.saveFile(file=rev_z, file_type="bug")

        try:
            fix_date = data['fix_date']
        except BaseException as exc:
            print(exc)
            fix_date = None

        # Add to database
        new_revission = TabRevisions(
            realization=data['realization'],
            authorize=False,
            id_device=data['id_device'],
            id_technician=user_from_request(request),
            id_rev=data['id_revisionType'],
            is_fault=data['is_fault'],
            rm_authorization=data['rm_authorization_required'],
            autor=user_from_request(request),
            rev_v=True if data['file_v'] is not None else False,
            rev_p=True if data['file_p'] is not None else False,
            rev_z=True if data['file_z'] is not None else False,
            fix_date=fix_date,
            expiration=data['expiration'])
        TabRevisions.add(new_revission)

        return Response(status=201)
 def get(self):
     rev_type = db_session.query(TabGroupOfRevTypes).all()
     schema = GroupOfRevTypesSchemaNested(many=True, only=("id", "name"))
     result = schema.dump(rev_type)
     response = jsonify(result)
     return response
 def get(self):
     rev_type = db_session.query(TabRevisionTypes).all()
     schema = RevisionTypesSchemaNested(many=True)
     result = schema.dump(rev_type)
     response = jsonify(result)
     return response
 def delete(self, id):
     db_session.query(TabGroupRevJoin).filter(TabGroupRevJoin.id_rev_type == id).delete()
     db_session.query(TabRevisionTypes).filter(TabRevisionTypes.id == id).delete()
     db_session.commit()
     return "", 200
 def get(self, id):
     rev_group = db_session.query(TabGroupOfRevTypes).filter(TabGroupOfRevTypes.id == id).first()
     schema = GroupOfRevTypesSchemaNested()
     result = schema.dump(rev_group)
     response = jsonify(result)
     return response
 def test_delete(self):
     rev_type = db_session.query(TabRevisionTypes).filter(
         TabRevisionTypes.name == "Testovací revize").one()
     delete = requests.delete(
         "http://127.0.0.1:5000/api/revision_type/{0}".format(rev_type.id))
     assert delete.status_code == 200
 def put(self, id):
     rev_group = db_session.query(TabGroupOfRevTypes).filter(TabGroupOfRevTypes.id == id).first()
     rev_group.name = request.json['name']
     rev_group.description = request.json['description']
     rev_group.update()
     return Response(status=200)
 def get(self, id):
     rev_type = db_session.query(TabRevisionTypes).filter(TabRevisionTypes.id == id).first()
     schema = RevisionTypesSchema()
     result = schema.dump(rev_type)
     response = jsonify(result)
     return response
 def test_get(self):
     rev_type = db_session.query(TabRevisionTypes).filter(
         TabRevisionTypes.name == "Testovací revize").one()
     assert rev_type.name == "Testovací revize"