feat(api): vault support
This commit is contained in:
parent
2fba643b7c
commit
f7002ab2a0
3 changed files with 104 additions and 1 deletions
1
ee/api/.gitignore
vendored
1
ee/api/.gitignore
vendored
|
|
@ -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
|
||||
|
|
|
|||
74
ee/api/chalicelib/core/sessions_favorite_viewed.py
Normal file
74
ee/api/chalicelib/core/sessions_favorite_viewed.py
Normal 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
|
||||
30
ee/api/chalicelib/utils/s3_extra.py
Normal file
30
ee/api/chalicelib/utils/s3_extra.py
Normal 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
|
||||
# )
|
||||
Loading…
Add table
Reference in a new issue