Esempio n. 1
0
    def put(cls, reqId):

        json_data = request.get_json()

        request_data = RequestModel.find_by_id(reqId)
        if request_data.reqStatus == "pending":
            device_data = DeviceModel.find_by_id(request_data.deviceId)
            user_data = UserModel.find_by_id(request_data.userId)

            req_audit_obj = {"reqId": reqId, "handleBy": json_data["admin_id"]}
            req_audit_model = RequestAuditModel(**req_audit_obj)

            admin_data = UserModel.find_by_id(json_data['admin_id'])

            if request_data and admin_data.role == "admin":
                request_data.reqStatus = "declined"
                device_data.status = "available"
                device_data.assignTo = "0"
                device_data.releaseDate = None
                request_data.insert_request()
                device_data.insert_device()
                req_audit_model.insert_request_audit()
                # declined request
                return {"Message": "Request Declined Successfully"}, 201
            return {"Message": "Request Not Found"}, 401
        return {"Message": "Request Already Resolve"}, 403
Esempio n. 2
0
    def post(cls, userId):
        json_data = request.get_json()

        user_data = UserModel.find_by_id(userId)
        admin_data = UserModel.find_by_id(json_data['admin_id'])
        user_devices = DeviceModel.find_my_devices(userId)
        type(user_devices)
        print(len(user_devices))
        if user_data:
            if len(user_devices) == 0:
                if admin_data:
                    if admin_data.role == "admin":
                        if user_data.isActivated:
                            user_data.isActivated = False
                            user_data.insert_user()
                            return {"Message": "User is DeActivated"}, 201
                        return {"Message": "User is Already DeActivated"}, 401
                    return {
                        "Message":
                        "You dont have an access to deactivate other user"
                    }, 401
                return {"Message": "Admin Not Found"}, 401
            return {
                "Message": "User has some devices so you cannot deactivate him"
            }, 401
        return {"Message": "User Not Found"}, 401
Esempio n. 3
0
    def put(cls, deviceId, userId):

        json_data = request.get_json()

        device_data = DeviceModel.find_by_id(deviceId)

        if device_data.status == "blocked" or device_data.status == "allocated":
            return {"Message": "Device is not available"}, 401
        user_data = UserModel.find_by_id(userId)

        req_obj = {"deviceId": deviceId, "userId": userId}
        request_model = RequestModel(**req_obj)

        device_obj = {
            "deviceId": deviceId,
            "userId": userId,
            "allocateBy": json_data["admin_id"]
        }
        device_audit_model = DeviceAuditModel(**device_obj)

        admin_data = UserModel.find_by_id(json_data['admin_id'])

        if device_data and user_data and admin_data.role == "admin":
            # if device_data.status == "created" or device_data.status == "available" :
            if user_data.isActivated:
                if device_data.isActivated:
                    # device_data.isAvailable = False
                    # if user_data.role == "admin":
                    request_model.reqStatus = "approved"
                    device_data.status = "allocated"
                    device_data.assignTo = user_data.email
                    device_data.releaseDate = json_data["releaseDate"]
                    try:
                        device_data.insert_device()
                        request_model.insert_request()
                        # return {"Message": "DEVICE ASSIGNED"}, 201
                    except:
                        return {"Message": "INTERNAL SERVER ERROR"}, 401

                    req_model = RequestModel.get_my_last_request(
                        deviceId, userId)
                    req_audit_obj = {
                        "reqId": req_model.reqId,
                        "handleBy": json_data["admin_id"]
                    }
                    req_audit_model = RequestAuditModel(**req_audit_obj)

                    # try:
                    req_audit_model.insert_request_audit()
                    device_audit_model.insert_device_audit()
                    return {"Message": "DEVICE ASSIGNED"}, 201

                    # except:
                    #     return {"Message": "INTERNAL SERVER ERROR"}, 403

                # return {"Message": "DEVICE ALREADY ASSIGNED TO USER"}, 403
                return {"Message": "DEVICE IS NOT ACTIVATED TO ASSIGN"}, 400
            return {"Message": "USER IS NOT ACTIVATED TO ASSIGN"}, 400
        return {"MESSAGE": "INVALID REQUEST"}, 400
Esempio n. 4
0
    def delete(cls, user_id):
        user = UserModel.find_by_id(user_id)
        if not user:
            return {"message": "User does not exit"}, 404

        else:
            return user.delete_from_db()
Esempio n. 5
0
    def delete(self, _id: str):
        user = UserModel.find_by_id(_id)
        if user:
            user.delete_from_db()
            return {'message': 'Account deleted'}, 200

        return {'message': 'Account not found'}, 404
Esempio n. 6
0
    def post(cls):
        json_data = request.get_json()
        user = UserModel.find_by_id(json_data["userId"])
        device = DeviceModel.find_by_id(json_data["deviceId"])

        print(json_data["releaseDate"])

        if device.status == "available" or device.status == "created":
            if user and device:
                if device.isActivated:
                    if device.status == "created" or device.status == "available":
                        try:
                            req_obj = {
                                "deviceId": json_data["deviceId"],
                                "userId": json_data["userId"]
                            }
                            request_data = request_schema.load(req_obj)
                        except ValidationError as err:
                            return err.messages, 401

                        try:
                            request_model = RequestModel(**request_data)
                            device.status = "blocked"
                            device.releaseDate = json_data["releaseDate"]
                            request_model.insert_request()
                            device.insert_device()
                        except:
                            return {"Message": "REQUEST INSERT ERROR"}, 401
                        return {"Message": "REQUEST SUCCESSFULLY ADDED"}, 201
                    return {"Message": "DEVICE IS NOT AVAILABLE"}, 401
                return {"Message": "DEVICE IS NOT ACTIVATED"}, 401
            return {"Message": "SOMETHING GETTING WRONG"}, 401
        return {"Messgae": "Device is not available to request"}, 401
Esempio n. 7
0
    def post(self):
        user = user_schema.load(request.get_json(), partial=True)

        # prevent double account
        if UserModel.find_by_id(user.id):
            return {'message': 'Account already exists'}, 401

        user.username = user.username.lower()
        user.ip = request.remote_addr

        # assign unique id
        player_id = None
        while player_id is None:
            temp = UserModel.get_new_PlayerId()
            if UserModel.find_by_playerId(temp) is None:
                player_id = temp

        # user creation
        user.playerId = player_id
        user.save_to_db()

        # settings creation
        settings = UserSettingsModel(user_id=user.id)
        settings.save_to_db()
        return
Esempio n. 8
0
    def post(cls, userId):
        json_data = request.get_json()

        user_data = UserModel.find_by_id(userId)
        admin_data = UserModel.find_by_id(json_data['admin_id'])

        if user_data:
            if admin_data:
                if admin_data.role == "admin":
                    if not user_data.isActivated:
                        user_data.isActivated = True
                        user_data.insert_user()
                        return {"Message": "User is Activated"}, 201
                    return {"Message": "User is Already Activated"}, 201
                return {
                    "Message": "You dont have an access to activate other user"
                }, 401
            return {"Message": "Admin Not Found"}, 401
        return {"Message": "User Not Found"}, 401
Esempio n. 9
0
 def put(cls, userId):
     json_data = request.get_json()
     user_data = UserModel.find_by_id(userId)
     if user_data:
         user_data.firstName = json_data['firstName']
         user_data.lastName = json_data['lastName']
         user_data.role = json_data['role']
         user_data.insert_user()
         return {"Message": "User Update Successful"}, 201
     return {"Message": "User Not Found"}, 401
Esempio n. 10
0
 def post(self, id):
     choice = ChoiceModel.find_by_id(id)
     if choice:
         user = UserModel.find_by_id(get_jwt_identity())
         choiceVote = ChoiceVote(choice.choice, choice.poll_id, choice.id,
                                 user.username, user.id)
         choiceVote.save_to_db()
         choice.votes += 1
         choice.save_to_db()
     return choice.json()
Esempio n. 11
0
    def get(self, _id: str):
        user = UserModel.find_by_id(_id)
        Settings = UserSettingsModel.find_by_user(_id)

        if user:
            return {
                'user': user_schema.dump(user),
                'settings': settings_schema.dump(Settings)
            }, 200

        return {'message': 'Account not found'}, 404
Esempio n. 12
0
    def put(self, _id: str):
        user = UserModel.find_by_id(_id)
        if user:
            data = user_schema.load(request.get_json(), partial=True)
            if data.username:
                user.username = data.username
            if data.last_online:
                user.last_online = datetime.datetime.utcnow
            user.updated_at = datetime.datetime.utcnow
            user.save_to_db()
            return {'user': user_schema.dump(user)}, 200

        return {'message': 'Account not found'}, 404
Esempio n. 13
0
    def get(self, _id=None):
        if _id:
            user = UserModel.find_by_id(_id)
            if user:
                return BaseResponse.ok_response('Successful.',
                                                user.json(is_long=True))
            return BaseResponse.bad_request_response('User does not exists.',
                                                     {})
        else:
            users = list(
                map(lambda x: x.json(is_long=True), UserModel.find_all()))

            return BaseResponse.ok_response('Successful.', users)
Esempio n. 14
0
    def put(cls, reqId):

        json_data = request.get_json()

        request_data = RequestModel.find_by_id(reqId)
        device_data = DeviceModel.find_by_id(request_data.deviceId)

        if request_data.reqStatus == "pending":
            if device_data.status == "blocked":
                user_data = UserModel.find_by_id(request_data.userId)
                req_audit_obj = {
                    "reqId": reqId,
                    "handleBy": json_data["admin_id"]
                }
                req_audit_model = RequestAuditModel(**req_audit_obj)

                device_obj = {
                    "deviceId": request_data.deviceId,
                    "userId": request_data.userId,
                    "allocateBy": json_data["admin_id"]
                }
                device_audit_model = DeviceAuditModel(**device_obj)

                admin_data = UserModel.find_by_id(json_data['admin_id'])

                if request_data and admin_data.role == "admin":
                    request_data.reqStatus = "approved"
                    device_data.status = "allocated"
                    device_data.assignTo = user_data.email
                    request_data.insert_request()
                    device_data.insert_device()
                    req_audit_model.insert_request_audit()
                    device_audit_model.insert_device_audit()
                    return {"Message": "Request Approved"}, 201
                return {"Message": "Request Not Found"}, 401
            return {"Message": "Device is not requested"}, 401
        return {"Message": "Request Already Resolve"}, 403
Esempio n. 15
0
 def post(self):
     data = Poll.parser.parse_args()
     user = UserModel.find_by_id(get_jwt_identity())
     poll = PollModel(data.name, user.id, user.username)
     try: 
         poll.save_to_db()
         for choice in data.choice_list:
             if data.admin:
                 choice_to_save = ChoiceModel(choice, randint(80,1000), poll.id)
             else:
                 choice_to_save = ChoiceModel(choice, 0, poll.id)
             choice_to_save.save_to_db()
     except:
         return {'message': 'Server error'}, 500
     return poll.json(), 201
Esempio n. 16
0
    def post(cls):
        try:
            token = request.args.get('token', None)
            new_password = request.get_json().get('new_password', None)

            if token is None:
                return {
                    "message": get_text('reset_password_token_required')
                }, 401

            if new_password is None:
                return {
                    "message": get_text('reset_password_new_password_required')
                }, 400

            reset_password = PasswordResetModel.find_by_id(token)

            if reset_password is None:
                return {
                    "message": get_text('reset_password_token_invalid')
                }, 401

            if reset_password.expired:
                return {
                    "message": get_text('reset_password_token_expired')
                }, 400

            # Token is valid
            user_id = reset_password.user_id
            user = UserModel.find_by_id(user_id)

            if user:
                user.password = generate_password_hash(new_password)
                user.save_to_db()
                # delete the associated password reset row
                reset_password.delete_from_db()

                return {
                    "message": get_text('reset_password_password_updated')
                }, 200

            return {
                "message": get_text('reset_password_user_from_token_not_found')
            }, 404

        except Exception as ex:
            print(ex)
            return {"message": get_text('server_error_generic')}, 500
Esempio n. 17
0
    def delete(self, _id=None):
        try:
            user = UserModel.find_by_id(_id)
            if user:
                user.status = 'INA'
                user.updatedOn = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

                user.save_to_db()

                return BaseResponse.ok_response('User deleted successfully.',
                                                {})
            else:
                return BaseResponse.not_acceptable_response(
                    'User does not exists.', [])
        except Exception as e:
            return BaseResponse.server_error_response(str(e))
Esempio n. 18
0
    def put(self, _id=None):
        try:
            data = User.parser.parse_args()

            user = UserModel.find_by_id(_id)
            if user:
                hash_password = UserModel.hash_password(data['password'])

                user.roleId = data['roleId'] if (data['roleId']
                                                 is not None) else user.roleId
                user.email = data['email'] if (data['email']
                                               is not None) else user.email
                user.password = hash_password if (
                    data['password'] is not None) else user.password
                user.fullName = data['fullName'] if (
                    data['fullName'] is not None) else user.fullName
                user.lastName = data['lastName'] if (
                    data['lastName'] is not None) else user.lastName
                user.phoneNumber = data['phoneNumber'] if (
                    data['phoneNumber'] is not None) else user.phoneNumber
                user.profilePicture = data['profilePicture'] if (data['profilePicture'] is not None) \
                    else user.profilePicture
                user.lastIPConnection = data['lastIPConnection'] if (data['lastIPConnection'] is not None) \
                    else user.lastIPConnection
                user.updatedOn = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

                user.save_to_db()

                if user.lastIPConnection and DeviceModel.find_by_ip(
                        user.lastIPConnection) is None:
                    device = DeviceModel(user_id=user.id,
                                         ip=user.lastIPConnection,
                                         created_at=datetime.now().strftime(
                                             '%Y-%m-%d %H:%M:%S'))
                    device.save_to_db()

                return BaseResponse.ok_response('User updated successfully.',
                                                user.json(is_long=True))
            else:
                return BaseResponse.not_acceptable_response(
                    'User does not exists.', {})
        except Exception as e:
            return BaseResponse.server_error_response(str(e))
Esempio n. 19
0
    def put(self, _id: str):
        user = UserModel.find_by_id(_id)
        settings = UserSettingsModel.find_by_user(_id)

        if settings:
            data = settings_schema.load(request.get_json(), partial=True)

            if data.notifications is not None:
                settings.notifications = data.notifications

            if data.public is not None:
                settings.public = data.public

            if data.language:
                settings.language = data.language

            user.updated_at = datetime.datetime.utcnow
            user.save_to_db()
            settings.save_to_db()
            return {"settings": settings_schema.dump(settings)}, 200

        return {'message': 'Account not found'}, 404
Esempio n. 20
0
 def get(cls, user_id):
     user = UserModel.find_by_id(user_id)
     if not user:
         return {'message': 'User not found'}, 404
     return user.json()
Esempio n. 21
0
 def find_my_devices(cls, userId):
     user_data = UserModel.find_by_id(userId)
     return cls.query.filter_by(assignTo=user_data.email).all()
Esempio n. 22
0
 def delete(cls, user_id):
     user = UserModel.find_by_id(user_id)
     if not user:
         return {'message': 'User not found'}, 404
     user.delete_from_db()
     return {'message': 'User deleted'}, 200
Esempio n. 23
0
def identify(payload):
    user_id = payload['identity']
    return UserModel.find_by_id(user_id)
Esempio n. 24
0
def identity(payload):
    user_id = payload["identity"]
    return UserModel.find_by_id(user_id)