Skip to content

Commit

Permalink
update repo with configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
Maxcutex committed Feb 2, 2021
1 parent a5e7083 commit 8350b5a
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 8 deletions.
33 changes: 31 additions & 2 deletions app/controllers/user_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from app.controllers.base_controller import BaseController
from app.repositories import UserRoleRepo, RoleRepo, UserRepo, PermissionRepo
from app.models import Role, User
from app.repositories.location_repo import LocationRepo
from app.services.aws_s3_service import AwsS3Service
from app.utils.auth import Auth
from werkzeug.security import check_password_hash, generate_password_hash
Expand All @@ -29,6 +30,7 @@ def __init__(self, request):
self.user_role_repo = UserRoleRepo()
self.role_repo = RoleRepo()
self.user_repo = UserRepo()
self.location_repo = LocationRepo()
self.perm_repo = PermissionRepo()

def list_admin_users(self, admin_role_id: int = 1) -> list:
Expand Down Expand Up @@ -96,14 +98,38 @@ def check_email(self, email):
def list_all_users(self):

params = self.get_params_dict()
print(params)
page = params.get("page")
per_page = params.get("per_page")
search_type = params.get("search_type")
search_value = params.get("search_value")

users = self.user_repo.paginate(error_out=False, page=page, per_page=per_page)
user_list = []
if search_type is None:
users = self.user_repo.paginate(
error_out=False, page=page, per_page=per_page
)
elif search_type == "Simple":
users = self.user_repo.get_simple_search_paginated_options(
search=search_value, page=page, per_page=per_page
)
print("users are ", users)
elif search_type == "Advanced":
experience = params.get("experience")
skills_list = params.get("skills_list")
location_id = params.get("location_id")
users = self.user_repo.get_advanced_search_paginated_options(
experience=experience,
skills_list=skills_list,
location_id=location_id,
page=page,
per_page=per_page,
)

if users.items:
for user in users.items:
user_item = user.serialize()
user_item["location"] = user.location.serialize()
if user.employment_date is not None:
user_item["employment_date"] = user.employment_date.strftime(
"%b %d, %Y"
Expand All @@ -119,11 +145,14 @@ def list_all_users(self):
role_objects = Role.query.filter(Role.id.in_(associated_roles)).all()
roles = [{"id": role.id, "name": role.name} for role in role_objects]
user["user_roles"] = roles

del user["password"]
return self.handle_response(
"OK", payload={"users": user_list, "meta": self.pagination_meta(users)}
)
return self.handle_response("No users found", status_code=404)
return self.handle_response(
"No users found", payload={"users": user_list}, status_code=200
)

def delete_user(self, id):
user = self.user_repo.get(id)
Expand Down
14 changes: 9 additions & 5 deletions app/controllers/user_skill_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,15 @@ def create_user_skill(self):
)
# import pdb
# pdb.set_trace()
return self.handle_response(
"OK",
payload={"user_skill": user_skill.serialize()},
status_code=201,
)
if user_skill.id is not None:

return self.handle_response(
"OK",
payload={"user_skill": user_skill.serialize()},
status_code=201,
)
else:
return self.handle_response("Error - User Not Added ", status_code=400)
except Exception as e:
return self.handle_response("Error processing: " + str(e), status_code=400)

Expand Down
3 changes: 2 additions & 1 deletion app/repositories/base_repo.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ def paginate(self, page=None, per_page=None, error_out=False):
)
except ValueError as err:
raise BaseModelValidationError(str(err))

print("page =>", page)
print("per page =>", per_page)
offset = (page - 1) * per_page

all_items = self._model.query.filter_by(is_deleted=False)
Expand Down
29 changes: 29 additions & 0 deletions app/repositories/user_repo.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import datetime

from sqlalchemy import or_
from werkzeug.security import generate_password_hash

from app.models import Skill, UserSkill
from app.repositories.base_repo import BaseRepo
from app.models.user import User

Expand Down Expand Up @@ -42,3 +44,30 @@ def new_user(self, *args, **kwargs):
)
user.save()
return user

def get_simple_search_paginated_options(self, search, page, per_page):
return (
User.query.filter(
or_(
User.first_name.like(f"%{search}%"),
User.last_name.like(f"%{search}%"),
User.email.like(f"%{search}%"),
)
)
.order_by(User.first_name.desc())
.paginate(page=page, per_page=per_page, error_out=False)
)

def get_advanced_search_paginated_options(
self, experience, skills_list, location_id, page, per_page
):
return (
User.query.join(UserSkill, User.id == UserSkill.user_id)
.filter(
UserSkill.skill_id.in_(skills_list),
location_id=location_id,
experience_years=experience,
)
.order_by(User.first_name.desc())
.paginate(page=page, per_page=per_page, error_out=False)
)
3 changes: 3 additions & 0 deletions app/utils/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@ def decode_token(token):
decoded = jwt.decode(
token,
public_key,
# audience="webspoons.com",
# issuer="accounts.webspoons.com",
# options={"verify_exp": True},
)
return decoded
except jwt.ExpiredSignature:
Expand Down

0 comments on commit 8350b5a

Please sign in to comment.