feat(api): vault support

This commit is contained in:
Taha Yassine Kraiem 2022-05-06 18:30:59 +02:00
parent 2fba643b7c
commit f7002ab2a0
3 changed files with 104 additions and 1 deletions

1
ee/api/.gitignore vendored
View file

@ -207,7 +207,6 @@ Pipfile
/chalicelib/core/mobile.py
/chalicelib/core/sessions.py
/chalicelib/core/sessions_assignments.py
/chalicelib/core/sessions_favorite_viewed.py
/chalicelib/core/sessions_metas.py
/chalicelib/core/sessions_mobs.py
/chalicelib/core/significance.py

View file

@ -0,0 +1,74 @@
from chalicelib.core import sessions
from chalicelib.utils import pg_client, s3_extra
from decouple import config
def add_favorite_session(project_id, user_id, session_id):
with pg_client.PostgresClient() as cur:
cur.execute(
cur.mogrify(f"""\
INSERT INTO public.user_favorite_sessions
(user_id, session_id)
VALUES
(%(userId)s,%(sessionId)s);""",
{"userId": user_id, "sessionId": session_id})
)
return sessions.get_by_id2_pg(project_id=project_id, session_id=session_id, user_id=user_id, full_data=False,
include_fav_viewed=True)
def remove_favorite_session(project_id, user_id, session_id):
with pg_client.PostgresClient() as cur:
cur.execute(
cur.mogrify(f"""\
DELETE FROM public.user_favorite_sessions
WHERE
user_id = %(userId)s
AND session_id = %(sessionId)s;""",
{"userId": user_id, "sessionId": session_id})
)
return sessions.get_by_id2_pg(project_id=project_id, session_id=session_id, user_id=user_id, full_data=False,
include_fav_viewed=True)
def add_viewed_session(project_id, user_id, session_id):
with pg_client.PostgresClient() as cur:
cur.execute(
cur.mogrify("""\
INSERT INTO public.user_viewed_sessions
(user_id, session_id)
VALUES
(%(userId)s,%(sessionId)s)
ON CONFLICT DO NOTHING;""",
{"userId": user_id, "sessionId": session_id})
)
def favorite_session(project_id, user_id, session_id):
if favorite_session_exists(user_id=user_id, session_id=session_id):
s3_extra.tag_file(session_id=str(session_id), tag_value=config('RETENTION_D_VALUE', default='default'))
s3_extra.tag_file(session_id=str(session_id) + "e", tag_value=config('RETENTION_D_VALUE', default='default'))
return remove_favorite_session(project_id=project_id, user_id=user_id, session_id=session_id)
s3_extra.tag_file(session_id=str(session_id), tag_value=config('RETENTION_L_VALUE', default='vault'))
s3_extra.tag_file(session_id=str(session_id) + "e", tag_value=config('RETENTION_L_VALUE', default='vault'))
return add_favorite_session(project_id=project_id, user_id=user_id, session_id=session_id)
def view_session(project_id, user_id, session_id):
return add_viewed_session(project_id=project_id, user_id=user_id, session_id=session_id)
def favorite_session_exists(user_id, session_id):
with pg_client.PostgresClient() as cur:
cur.execute(
cur.mogrify(
"""SELECT
session_id
FROM public.user_favorite_sessions
WHERE
user_id = %(userId)s
AND session_id = %(sessionId)s""",
{"userId": user_id, "sessionId": session_id})
)
r = cur.fetchone()
return r is not None

View file

@ -0,0 +1,30 @@
from chalicelib.utils.s3 import client
from decouple import config
def tag_file( session_id, tag_key='retention', tag_value='vault'):
return client.put_object_tagging(
Bucket=config("sessions_bucket"),
Key=session_id,
# VersionId='string',
# ContentMD5='string',
# ChecksumAlgorithm='CRC32'|'CRC32C'|'SHA1'|'SHA256',
Tagging={
'TagSet': [
{
'Key': tag_key,
'Value': tag_value
},
]
},
# ExpectedBucketOwner='string',
# RequestPayer='requester'
)
# generate_presigned_url(
# 'put_object',
# Params={
# 'Bucket': bucket,
# 'Key': key
# },
# ExpiresIn=expires_in
# )