Skip to content

Commit

Permalink
autopep8 action fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
yarons authored May 3, 2022
1 parent 181b7c9 commit 08d4a51
Show file tree
Hide file tree
Showing 15 changed files with 157 additions and 71 deletions.
28 changes: 18 additions & 10 deletions src/core/authentication.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
class AuthenticationConfiguration:
def __init__(self) -> None:
self.openid_url = os.environ.get(
'IVT_OPENID_DISCOVERY_URL', 'http://localhost:8081/auth/realms/master/.well-known/openid-configuration')
'IVT_OPENID_DISCOVERY_URL',
'http://localhost:8081/auth/realms/master/.well-known/openid-configuration')

self._get_user_info_endpoint()
self.allowed_paths = ('/docs', '/openapi.json')
Expand All @@ -24,7 +25,9 @@ def _get_user_info_endpoint(self):

@property
def openid_external_url(self):
return os.environ.get('IVT_OPENID_DISCOVERY_EXTERNAL_URL', self.openid_url)
return os.environ.get(
'IVT_OPENID_DISCOVERY_EXTERNAL_URL',
self.openid_url)


configuration = None
Expand Down Expand Up @@ -75,8 +78,9 @@ async def decode_token(request: Request, call_next):
return await call_next(request)
response = None
if request.state.token is not None:
user_response = requests.request(method='GET', url=configuration.userinfo_endpoint,
headers={"Authorization": f"Bearer {request.state.token}"})
user_response = requests.request(
method='GET', url=configuration.userinfo_endpoint, headers={
"Authorization": f"Bearer {request.state.token}"})
if user_response.status_code == 200:
request.state.user = user_response.json()
response = await call_next(request)
Expand All @@ -91,7 +95,8 @@ async def extract_token(request: Request, call_next):
return await call_next(request)
response = None
authorization_header = request.headers.get('Authorization')
if authorization_header is not None and authorization_header.startswith("Bearer"):
if authorization_header is not None and authorization_header.startswith(
"Bearer"):
request.state.token = authorization_header[len("Bearer "):]
else:
request.state.token = None
Expand All @@ -114,14 +119,17 @@ def _get_arguments(self, wrapper, handler):
original_arguments = inspect.signature(handler).parameters.values()
wrapper_arguments = filter(
lambda p: p.kind not in (
inspect.Parameter.VAR_POSITIONAL, inspect.Parameter.VAR_KEYWORD),
inspect.signature(wrapper).parameters.values()
)
inspect.Parameter.VAR_POSITIONAL,
inspect.Parameter.VAR_KEYWORD),
inspect.signature(wrapper).parameters.values())
without_default_values = filter(
lambda x: x.default == inspect._empty, original_arguments)
withdefault_values = filter(
lambda x: x.default != inspect._empty, original_arguments)
return [*without_default_values, *wrapper_arguments, *withdefault_values]
return [
*without_default_values,
*wrapper_arguments,
*withdefault_values]

def fix_signature(self, wrapper, handler):
arguments = self._get_arguments(wrapper, handler)
Expand All @@ -137,7 +145,7 @@ def require_roles(roles: list):
def require_roles_decorator(handler):
from functools import wraps

async def wrapper(request: Request, *args, **kwargs):
async def wrapper(request: Request, *args, **kwargs):
if any(x in roles for x in request.state.user['roles']):
if inspect.iscoroutinefunction(handler):
result = await handler(*args, **kwargs)
Expand Down
4 changes: 3 additions & 1 deletion src/core/utilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@


def create_users_repository(request: Request) -> KeycloakUserRepository:
return KeycloakUserRepository(request.state.token, "http://keycloak:8080/auth")
return KeycloakUserRepository(
request.state.token,
"http://keycloak:8080/auth")


def create_eventlog_repository() -> EventLogRepository:
Expand Down
5 changes: 3 additions & 2 deletions src/database/connection.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from os import getenv
from sqlalchemy.engine.create import create_engine


def create_connection():
connection_string = getenv("IVT_CONNECTION_STRING","")
connection_string = getenv("IVT_CONNECTION_STRING", "")
if not connection_string:
connection_string ="postgresql://invitease:password@db:5432/invitease?client_encoding=utf8"
connection_string = "postgresql://invitease:password@db:5432/invitease?client_encoding=utf8"
engine = create_engine(connection_string)
return engine
1 change: 1 addition & 0 deletions src/database/eventlog_repository.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from database.repository_base import RepositoryBase
from database.models import EventLogEntry


class EventLogRepository(RepositoryBase):
def __init__(self, connection) -> None:
super().__init__(connection, EventLogEntry, EventLogEntry.event_id)
3 changes: 2 additions & 1 deletion src/database/events_repository.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from database.repository_base import RepositoryBase
from database.models import EventLogEntry


class EventsLogRepository(RepositoryBase):
def __init__(self, connection) -> None:
super().__init__(connection, EventLogEntry, EventLogEntry.event_id)
super().__init__(connection, EventLogEntry, EventLogEntry.event_id)
9 changes: 6 additions & 3 deletions src/database/invitation_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,13 @@ def get_pending_invitations(self):
today = datetime.today().strftime("%Y-%m-%d")
tomorrow: datetime = datetime.today() + timedelta(days=2)
tomorrow_formatted = tomorrow.strftime("%Y-%m-%d")
time_limit = (datetime.utcnow() - timedelta(hours=2)).strftime("%Y-%m-%dT%H:%M")
time_limit = (
datetime.utcnow() -
timedelta(
hours=2)).strftime("%Y-%m-%dT%H:%M")

return self.query(lambda x: x.filter(
or_(Invitation.is_active == True, Invitation.modify_timestamp >= time_limit),
or_(Invitation.is_active, Invitation.modify_timestamp >= time_limit),
Invitation.invitees_arrival_timestamp >= today,
Invitation.invitees_arrival_timestamp <= tomorrow_formatted))

Expand All @@ -25,5 +28,5 @@ def get_user_relevant_invitations(self, user_id: str):

return self.query(lambda x: x.filter(
Invitation.user_id == user_id,
Invitation.is_active == True,
Invitation.is_active,
Invitation.invitees_arrival_timestamp >= today))
21 changes: 17 additions & 4 deletions src/database/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,27 @@ class Invitation(Base):
__tablename__ = 'invitations'

invitation_id = Column(
UUID(as_uuid=True), primary_key=True, nullable=False, server_default='uuid_generate_v4()')
UUID(
as_uuid=True),
primary_key=True,
nullable=False,
server_default='uuid_generate_v4()')
user_id = Column(UUID(as_uuid=True))
invitees_amount = Column(Integer, nullable=False)
invitees_admitted = Column(Integer, nullable=False, server_default="0")
invitees_arrival_timestamp = Column(DateTime(timezone=True), nullable=False)
invitees_arrival_timestamp = Column(
DateTime(timezone=True), nullable=False)
is_active = Column(Boolean, nullable=False, default=True)
creation_timestamp = Column(DateTime(timezone=True), nullable=False, server_default='NOW()')
modify_timestamp = Column(DateTime(timezone=True), nullable=False, server_default='NOW()')
creation_timestamp = Column(
DateTime(
timezone=True),
nullable=False,
server_default='NOW()')
modify_timestamp = Column(
DateTime(
timezone=True),
nullable=False,
server_default='NOW()')
comment_for_guard = Column(String)


Expand Down
2 changes: 1 addition & 1 deletion src/database/repository_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ def update_item(self, item_id, update_data: dict):
def delete_item(self, item):
with Session(bind=self.connection) as session:
session.delete(item)
session.commit()
session.commit()
2 changes: 1 addition & 1 deletion src/keycloak/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from keycloak.users_repository import KeycloakUserRepository
from keycloak.users_repository import KeycloakUserRepository
3 changes: 2 additions & 1 deletion src/keycloak/convertions.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ def json_to_user(user_data: dict) -> User:
result.is_active = user_data.get('enabled')
attributes = user_data.get('attributes')
if attributes is not None:
result.cellular_number = next(iter(attributes.get('cellularNumber')), None)
result.cellular_number = next(
iter(attributes.get('cellularNumber')), None)
return result
37 changes: 26 additions & 11 deletions src/keycloak/users_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,15 @@
class RoleMap(object):
def __init__(self) -> None:
self._role_map = {
"admin": environ.get('IVT_ADMIN_ROLE', "28b683b8-8bdd-4645-9639-368ac2077f48"),
"guard": environ.get('IVT_GUARD_ROLE', "c48603e7-46f2-4adb-9546-699aa2b54933"),
"user": environ.get('IVT_USER_ROLE', "166127d5-f6b3-4113-b6db-18eefd6bc95d")
}
"admin": environ.get(
'IVT_ADMIN_ROLE',
"28b683b8-8bdd-4645-9639-368ac2077f48"),
"guard": environ.get(
'IVT_GUARD_ROLE',
"c48603e7-46f2-4adb-9546-699aa2b54933"),
"user": environ.get(
'IVT_USER_ROLE',
"166127d5-f6b3-4113-b6db-18eefd6bc95d")}

def __getitem__(self, key):
return self._role_map[key]
Expand All @@ -31,19 +36,28 @@ def __init__(self, access_token: str, base_url: str) -> None:
def build_url(self, *args) -> str:
return '/'.join(s.strip('/') for s in [self.base_url, *args])

def _post(self, url: str, body: any = None) -> Response:
return self._send(method='POST', url=url, body=body, headers={"Content-Type": "application/json"})
def _post(self, url: str, body: any = None) -> Response:
return self._send(
method='POST', url=url, body=body, headers={
"Content-Type": "application/json"})

def _put(self, url: str, body: any = None) -> Response:
return self._send(method='PUT', url=url, body=body, headers={"Content-Type": "application/json"})
def _put(self, url: str, body: any = None) -> Response:
return self._send(
method='PUT', url=url, body=body, headers={
"Content-Type": "application/json"})

def _get(self, url: str) -> Response:
return self._send(method='GET', url=url)

def _delete(self, url: str) -> Response:
return self._send(method='DELETE', url=url)

def _send(self, url: str, method: str, body: any = None, headers: dict = {}) -> Response:
def _send(
self,
url: str,
method: str,
body: any = None,
headers: dict = {}) -> Response:
headers = headers.copy()
headers["Authorization"] = f'Bearer {self.access_token}'
response = request(method, url, headers=headers, json=body)
Expand Down Expand Up @@ -86,9 +100,10 @@ def set_user_role(self, user_id: str, user_role: str) -> None:
current_roles = self.get_user_roles(user_id)
if any([x for x in current_roles if x['name'] == user_role]):
return

roles_to_delete = [
x['id'] for x in current_roles if KeycloakUserRepository.role_map.id_exists(x['id'])]
x['id'] for x in current_roles if KeycloakUserRepository.role_map.id_exists(
x['id'])]

for role in roles_to_delete:
self._remove_role(user_id, role)
Expand Down
19 changes: 13 additions & 6 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,18 @@
# @app.get('/db/table/')
# def form_post(request: Request):
# result = 'Choose a table'
# return templates.TemplateResponse('view_tables.html', context={'request': request, 'result': result})
# return templates.TemplateResponse('view_tables.html',
# context={'request': request, 'result': result})

# @app.post("/db/table/")
# def form_post(request: Request,table_name: str = Form(...)):
# cur.execute(f"SELECT * FROM {table_name};")

# result = cur.fetchall()

# return templates.TemplateResponse('view_tables.html', context={'request': request, 'result': result, 'table_name': table_name})
# return templates.TemplateResponse('view_tables.html',
# context={'request': request, 'result': result, 'table_name':
# table_name})

# # return {"{table} table": cur.fetchall()}

Expand All @@ -85,7 +88,8 @@
# @app.get('/db/add_guard')
# def form_post(request: Request):
# result = 'Add a guard'
# return templates.TemplateResponse('add_guard.html', context={'request': request, 'result': result})
# return templates.TemplateResponse('add_guard.html', context={'request':
# request, 'result': result})


# @app.post('/db/add_guard')
Expand All @@ -99,12 +103,14 @@
# # cur.execute(f"INSERT INTO guards (guard_name) VALUES ('{guard_name}');")
# # con.commit()
# result = f'{guard_name} has been added as a guard'
# return templates.TemplateResponse('add_guard.html', context={'request': request, 'result': result, 'guard_name': guard_name})
# return templates.TemplateResponse('add_guard.html', context={'request':
# request, 'result': result, 'guard_name': guard_name})

# @app.get('/db/invite_guests')
# def form_post(request: Request):
# result = 'Invite a guest'
# return templates.TemplateResponse('invite_guests.html', context={'request': request, 'result': result})
# return templates.TemplateResponse('invite_guests.html',
# context={'request': request, 'result': result})


# @app.post('/db/invite_guests')
Expand All @@ -119,4 +125,5 @@
# # cur.execute(f"INSERT INTO guards (guard_name) VALUES ('{guard_name}');")
# # con.commit()
# result = f'You have invited {invitees_amount} guests. Welcome!'
# return templates.TemplateResponse('add_guard.html', context={'request': request, 'result': result, 'invitees_amount': invitees_amount})
# return templates.TemplateResponse('add_guard.html', context={'request':
# request, 'result': result, 'invitees_amount': invitees_amount})
Loading

0 comments on commit 08d4a51

Please sign in to comment.