예제 #1
0
 def get(self):
     """Use  this endpoint to get all the tasks"""
     # tasks=TaskModel.fetch_all()
     user_id = get_jwt_identity()
     user = UserModel.get_userby_id(user_id)
     user_tasks = user.tasks
     return tasks_schema.dump(user_tasks), 200
예제 #2
0
def cancel_account():
    """
    user can cancel their account, if get this api their token will be added into blacklist.
    once token has been added into blacklist, user's account will be deleted from database
    :return:
    """
    if request.json:
        try:
            #添加用户的去重
            name = request.json.get('name',None)
            get_user = User.query.filter_by(name=name).first()
            if not get_user:
                return  http_response(250, 'bad', 'user not exist')
            try:
                current_user = get_jwt_identity()
                if current_user == get_user.name:
                    try:
                        db.session.delete(get_user)
                        db.session.commit()
                    except:
                        db.session.rollback()
                    jti = get_raw_jwt()['jti']
                    blacklist.add(jti)

            except Exception:
                return http_response(250, 'bad', 'user cancel failed')
            # pass
        except Exception as e:
            print(e.args)
            return http_response(250, 'bad', 'user cancel failed')

        return http_response(460,'ok','user canceled, thanks for using pan')

    else:
        return http_response(250, 'bad', 'json data required')
예제 #3
0
 def post(cls):
     """  Creates a new task for allocation  """
     user = get_jwt_identity()
     data = request.json
     data['from_employ'] = user['_id']
     data['from_employ_role'] = user['role']
     data['to_employ_role'] = ''
     data['to_employ'] = ''
     data['status'] = 'bookkeeper_pending'
     data['note'] = 'task_initiated'
     data['active'] = True
     if user['role'] in ['operator', 'bookkeeper', 'administrator']:
         if Task.check_task(data):
             if Task.create(data):
                 Task.update_timetrack(data, data)
                 msg = "Successful"
                 LOG.info('Task Allocation : %s', msg)
                 return {"msg": msg}
             else:
                 msg = 'Server Error'
                 LOG.info('Message : %s', msg)
                 return {"msg": msg}
         else:
             msg = "Claim is already under progress"
             LOG.info('Result : %s', msg)
             return {"msg": msg}
     else:
         msg = "Permission Denied"
         LOG.info('WARNING : %s', msg)
         return {"msg": msg}
    def lookup():
        my_email = app.get_jwt_identity()["email"]

        user_object = db_auth.User.objects(email=my_email).first()
        friends = user_object.friends
        response = OrderedDict()
        response["success"] = True
        response["length"] = len(friends)
        response["friends"] = []

        for friend in friends:
            friend_object = db_auth.User.objects(email=friend).first()
            response["friends"].append({
                "name":
                friend_object.name,
                "profile":
                friend_object.profile,
                "weight":
                friend_object.weight,
                "goal_weight":
                friend_object.goal_weight,
                "now_weight":
                friend_object.now_weight,
                "percentage":
                (float(friend_object.weight) - float(friend_object.now_weight))
                / (float(friend_object.weight) -
                   float(friend_object.goal_weight)) * 100.0
            })

        return jsonify(response), 200
    def add():
        email = app.get_jwt_identity()["email"]
        date = request.form["date"]
        type = request.form["type"]  # breakfast, lunch, dinner
        food_id = request.form["food_id"]

        user_object = User.objects(email=email).first()
        meal_object = Food.objects(Q(date=date) & Q(user_id=user_object.pk))

        if len(meal_object) == 0:
            if type == "breakfast":
                Food(date=date, user_id=user_object.pk,
                     breakfast=[food_id]).save()
            elif type == "lunch":
                Food(date=date, user_id=user_object.pk, lunch=[food_id]).save()
            elif type == "dinner":
                Food(date=date, user_id=user_object.pk,
                     dinner=[food_id]).save()
        else:
            meal_object = Food.objects(
                Q(date=date) & Q(user_id=user_object.pk)).first()

            if type == "breakfast":
                meal_object.breakfast.append(food_id).save()
            elif type == "lunch":
                meal_object.lunch.append(food_id).save()
            elif type == "dinner":
                meal_object.dinner.append(food_id).save()

        return jsonify({
            "success": True,
            "msg": "Meal Add successfully!!"
        }), 200
예제 #6
0
 def get(cls):
     """Show the work status of all users"""
     user = get_jwt_identity()
     if user['role'] == 'operator':
         return jsonify(Task.staff_status())
     if user['role'] == 'administrator':
         status = jsonify(Task.staff_status(operator=True))
         return status
예제 #7
0
    def put(cls, _id):
        """To accept tasks allocated to the user"""
        user = get_jwt_identity()
        #body = request.json
        if user['role'] in ['bookkeeper', 'accountant']:
            master_data = Task.get_task(_id)

            if master_data != None:
                data = master_data['status_track'][-1]
                data['time_taken'] = 0
                data['status_time'] = datetime.datetime.utcnow().isoformat()

                if user['role'] == 'bookkeeper' and data['status'] in [
                        'bookkeeper_pending', 'bookkeeper_hold',
                        'accountant_revert'
                ]:
                    c_id = master_data['c_id']
                    c_type = master_data['c_type']
                    c_name = master_data['c_name']
                    data['status'] = "bookkeeper_inreview"
                    data['note'] = "Accepted by bookkeeper"
                    data['from_employ_role'] = master_data['from_employ_role']
                    data['from_employ'] = master_data['from_employ']
                    data['to_employ_role'] = user['role']
                    data['to_employ'] = user['_id']

                elif user['role'] == 'accountant' and data['status'] in [
                        'accountant_pending', 'accountant_hold'
                ]:
                    c_id = master_data['c_id']
                    c_type = master_data['c_type']
                    c_name = master_data['c_name']
                    data['status'] = "accountant_inreview"
                    data['from_employ_role'] = master_data['from_employ_role']
                    data['from_employ'] = master_data['from_employ']

                else:
                    msg = "Out of scope error"
                    LOG.info('msg: %s', str(_id) + " " + msg)
                    return {"msg": msg}

                if Task.update_status(_id, data):
                    Task.update_timetrack(data, master_data)
                    msg = "Successful"
                    LOG.info('msg: %s', str(_id) + " " + msg)
                    return {"msg": msg}
                else:
                    msg = "server error"
                    LOG.info('msg: %s', str(_id) + " " + msg)
                    return {"msg": msg}
            else:
                msg = "Task doesn't exists"
                LOG.info('msg: %s', str(_id) + " " + msg)
                return {"msg": msg}
        else:
            msg = "unauthorized"
            LOG.info('msg: %s', str(_id) + " " + msg)
            return {"msg": msg}
    def get():
        email = app.get_jwt_identity()["email"]
        date = request.form["date"]

        user_object = User.objects(email=email).first()
        weight_object = Weight.objects(
            Q(date=date) & Q(user_id=user_object.pk)).first()

        return jsonify({"success": True, "weight": weight_object.weight}), 200
    def set(self):
        flavor = eval(request.form['flavor'])
        phone = app.get_jwt_identity()["email"]
        user_object = db_auth.User.objects(email=phone).first()

        user_object.flavor = flavor
        user_object.save()

        return jsonify({"success": True, "msg": "successful set food flavor"})
예제 #10
0
 def put(cls):
     """ To refresh the current user access token """
     current_user = get_jwt_identity()
     resp = Auth.create_token(current_user['_id'],
                              current_user['role'],
                              fresh=False)
     access_token = resp['access_token']
     resp = jsonify(resp)
     LOG.info('Access Token refreshed for %s', str(data['_id']))
     return jsonify({'access_token': access_token})
예제 #11
0
 def get(cls):
     user = get_jwt_identity()
     _id = user['_id']
     """Fetch staff info given its identifier"""
     staff_obj = Staff.get_staff(_id)
     if staff_obj:
         msg = "Staff details successfully displayed"
         LOG.info('msg: %s', str(_id) + ' ' + msg)
         return staff_obj
     else:
         msg = "Staff not found"
         LOG.info('msg: %s', str(_id) + ' ' + msg)
         return {'msg': msg}
예제 #12
0
    def post(self):
        """Use this end point to add a new task"""
        # data["id"]=len(tasks)+1
        # tasks.append(data)
        # return  data ,201

        data = api.payload
        task = TaskModel(
            title=data["title"],
            description=data["description"],
            user_id=get_jwt_identity())  #to get the id of the logged on person
        task.save_toDB()
        return task_schema.dump(task), 201
예제 #13
0
 def get(cls):
     """List all task initiated"""
     user = get_jwt_identity()
     if user['role'] in ['operator', 'administrator']:
         obj = Task.get_tasks()
         tasks = []
         for doc in obj:
             tasks.append(doc)
         return tasks
     else:
         obj = Task.get_pending_tasks()
         tasks = []
         for doc in obj:
             tasks.append(doc)
         return tasks
예제 #14
0
    def get(cls):
        """ List all staff registered """
        user = get_jwt_identity()
        print(user)

        if user['role'] == 'administrator':
            msg = "Staff details viewed successfully"
            LOG.info('msg : %s', msg)
            l = Staff.get_staffs()
            # print("rossum")
            # for i in l:
            #     i['created_at'] = dateutil.parser.parse(i['created_at']).isoformat()
            return l
        else:
            msg = 'Access Denied'
            LOG.info(msg + '{} {} tried to access Staff details. '.format(
                user['role'], user['_id']))
            return {"msg": msg}
예제 #15
0
    def add():
        favorite = str(request.form['favorite']).split(',')
        email = app.get_jwt_identity()["email"]

        user_object = User.objects(email=email).first()
        favorite_object = Favorite.objects(user_id=user_object.pk)

        if len(favorite_object) == 0:
            Favorite(
                user_id=user_object.pk,
                food=favorite
            ).save()
        else:
            favorite_object = Favorite.objects(user_id=user_object.pk).first()
            favorite_object.food = favorite_object.food + favorite
            favorite_object.save()

        return jsonify({
            "success": True,
            "msg": "add my favorite food successfully"
        }), 200
    def add():
        my_email = app.get_jwt_identity()["email"]
        add_email = str(request.form['email'])
        user_object = db_auth.User.objects(email=my_email)

        if len(user_object) == 0:
            return Error.invalid_input()
        else:
            add_object = db_auth.User.objects(email=add_email)
            if len(add_object) == 0:
                return jsonify({
                    "success": False,
                    "msg": "fail to find added user"
                })
            else:
                user_object = user_object.first()
                user_object.friends.append(add_email)
                user_object.save()

                return jsonify({
                    "success": True,
                    "msg": "add new friend at list"
                }), 200
    def add():
        email = app.get_jwt_identity()["email"]
        date = request.form["date"]
        weight = request.form["weight"]

        user_object = User.objects(email=email).first()
        weight_object = Weight.objects(
            Q(date=date) & Q(user_id=user_object.pk))
        if len(weight_object) == 0:
            Weight(date=date, user_id=user_object.pk, weight=weight).save()
        else:
            weight_object = Weight.objects(
                Q(date=date) & Q(user_id=user_object.pk)).first()
            weight_object.weight = weight
            weight_object.save()

        user_object.now_weight = weight
        user_object.save()

        return jsonify({
            "success": True,
            "msg": "refresh or add your daily weight successfully!!"
        }), 200
    def get():
        email = app.get_jwt_identity()["email"]
        date = request.form["date"]

        user_object = User.objects(email=email).first()
        meal_object = Food.objects(Q(date=date) & Q(user_id=user_object.pk))

        if len(meal_object) == 0:
            return jsonify({
                "success": True,
                "breakfast": [],
                "lunch": [],
                "dinner": []
            }), 200
        else:
            meal_object = Food.objects(
                Q(date=date) & Q(user_id=user_object.pk)).first()

            return jsonify({
                "success": True,
                "breakfast": meal_object.breakfast,
                "lunch": meal_object.lunch,
                "dinner": meal_object.dinner
            }), 200
예제 #19
0
 def get(self):
     '''Get a List of REsources by acertain user'''
     user_id = get_jwt_identity()
     user = UserModel.fetch_by_id(user_id)
     tasks = user.tasks
     return tasks_schema.dump(tasks)
예제 #20
0
    def put(cls):
        """For Hold | Revert | Submit operations of allocated tasks"""
        user = get_jwt_identity()
        body = request.json
        _id = body['_id']
        body.pop('_id')
        if user['role'] in ['bookkeeper', 'accountant']:
            master_data = Task.get_task(_id)
            master_data['time_taken'] = body[
                'time_taken']  ## if model|method modified do changes accordingly
            if master_data != None:
                data = master_data['status_track'][-1]
                data['status_time'] = datetime.datetime.utcnow().isoformat()
                data['note'] = body['note']
                data['from_employ_role'] = user['role']
                data['from_employ'] = user['_id']
                data['to_employ_role'] = ""
                data['to_employ'] = ""
                if user['role'] == 'bookkeeper' and data[
                        'status'] == 'bookkeeper_inreview':
                    if body['submit_flag'] == 'ok':
                        data['status'] = "accountant_pending"
                        data['to_employ_role'] = 'accountant'
                        data['time_taken'] = body['time_taken']
                        c_id = master_data['c_id']
                        c_type = master_data['c_type']
                        p_accountant = Task.preferred(c_id, c_type)
                        if p_accountant:
                            accountant = p_accountant
                        else:
                            accountant = random.choice(Task.auto_allot(
                            ))  ## for auto allocation of accountant
                            data['to_employ'] = accountant['_id']
                    elif body['submit_flag'] == 'hold':
                        data['status'] = "bookkeeper_hold"
                        data['to_employ_role'] = user['role']
                        data['to_employ'] = user['_id']
                        data['time_taken'] = body['time_taken']
                    else:
                        msg = "cannot be reverted"
                        LOG.info('msg: %s', str(_id) + " " + msg)
                        return {"msg": msg}

                elif user['role'] == 'accountant' and data[
                        'status'] == 'accountant_inreview':
                    if body['submit_flag'] == 'ok':
                        data['status'] = "finished"
                    elif body['submit_flag'] == 'hold':
                        data['status'] = "accountant_hold"
                        data['to_employ_role'] = user['role']
                        data['to_employ'] = user['_id']
                    else:
                        data['status'] = "accountant_revert"
                        data1 = master_data['status_track'][0]
                        data['to_employ_role'] = data1['to_employ_role']
                        data['to_employ'] = data1['to_employ']
                else:
                    msg = "Out of scope error"
                    LOG.info('msg: %s', str(_id) + " " + msg)
                    return {"msg": msg}

                if Task.update_status(_id, data):
                    Task.update_timetrack(data, master_data)
                    msg = "Successful"
                    LOG.info('msg: %s', str(_id) + " " + msg)

                    return {"msg": msg}
                else:
                    msg = "server error"
                    LOG.info('msg: %s', str(_id) + " " + msg)
                    return {"msg": msg}
            else:
                msg = "Task doesn't exists"
                LOG.info('msg: %s', str(_id) + " " + msg)
                return {"msg": msg}
        else:
            msg = "unauthorized"
            LOG.info('msg: %s', str(_id) + " " + msg)
            return {"msg": msg}
예제 #21
0
 def get(cls):
     """Show the work status of user after login"""
     user = get_jwt_identity()
     return Task.work_status(user['_id'])
예제 #22
0
 def post(self):
     ''''POst a task to the list of tasks by a certain user'''
     data = api.payload
     task = TaskModel(**data, user_id=get_jwt_identity())
     task.save_to_db()
     return task_schema.dump(task)