From 60ba34e905c7c0ba77e4eaccfac5cea2a2c93a03 Mon Sep 17 00:00:00 2001 From: Timur Enikeev Date: Fri, 24 Jan 2025 17:07:54 -0500 Subject: [PATCH 1/6] Achievement for com --- rating_api/routes/comment.py | 24 ++++++++++++++++++++++++ rating_api/routes/lecturer.py | 4 +++- rating_api/settings.py | 6 ++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/rating_api/routes/comment.py b/rating_api/routes/comment.py index 3afbc74..ee58be5 100644 --- a/rating_api/routes/comment.py +++ b/rating_api/routes/comment.py @@ -2,6 +2,7 @@ from typing import Literal from uuid import UUID +import aiohttp from auth_lib.fastapi import UnionAuth from fastapi import APIRouter, Depends, Query from fastapi_sqlalchemy import db @@ -94,6 +95,29 @@ async def create_comment(lecturer_id: int, comment_info: CommentPost, user=Depen user_id=user_id, review_status=ReviewStatus.PENDING, ) + + # Выдача аччивки юзеру за первый комментарий + async with aiohttp.ClientSession() as session: + give_achievement = True + async with session.get( + settings.API_URL + f"achievement/user/{user.get('id'):}", + headers={"Accept": "application/json"}, + ) as response: + if response.status == 200: + user_achievements = await response.json() + for achievement in user_achievements.get("achievement", []): + if achievement.get("id") == settings.FIRST_COMMENT_ACHIEVEMENT_ID: + give_achievement = False + break + else: + give_achievement = False + if give_achievement: + session.post( + settings.API_URL + + f"achievement/achievement/{settings.FIRST_COMMENT_ACHIEVEMENT_ID}/reciever/{user.get('id'):}", + headers={"Accept": "application/json", "Authorization": settings.ACHIEVEMENT_GIVE_TOKEN}, + ) + return CommentGet.model_validate(new_comment) diff --git a/rating_api/routes/lecturer.py b/rating_api/routes/lecturer.py index c81e165..e7c0e4d 100644 --- a/rating_api/routes/lecturer.py +++ b/rating_api/routes/lecturer.py @@ -135,7 +135,9 @@ async def get_lecturers( if comment.review_status is ReviewStatus.APPROVED ] if "comments" in info and approved_comments: - lecturer_to_result.comments = sorted(approved_comments, key=lambda comment: comment.create_ts, reverse=True) + lecturer_to_result.comments = sorted( + approved_comments, key=lambda comment: comment.create_ts, reverse=True + ) if "mark" in info and approved_comments: lecturer_to_result.mark_freebie = sum([comment.mark_freebie for comment in approved_comments]) / len( approved_comments diff --git a/rating_api/settings.py b/rating_api/settings.py index 1f7612c..79d5670 100644 --- a/rating_api/settings.py +++ b/rating_api/settings.py @@ -19,6 +19,12 @@ class Settings(BaseSettings): CORS_ALLOW_METHODS: list[str] = ['*'] CORS_ALLOW_HEADERS: list[str] = ['*'] + '''Temp settings''' + + API_URL: str = "https://api.test.profcomff.com/" + FIRST_COMMENT_ACHIEVEMENT_ID: int = 1 + ACHIEVEMENT_GIVE_TOKEN: str = "" + model_config = ConfigDict(case_sensitive=True, env_file=".env", extra="ignore") From 748f8da3eef2744d86881f134edb0b6d1780ee4e Mon Sep 17 00:00:00 2001 From: Timur Enikeev Date: Fri, 24 Jan 2025 17:14:28 -0500 Subject: [PATCH 2/6] Add req --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 1b6d4e1..ed9f291 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ alembic auth-lib-profcomff[fastapi] +aiohttp fastapi fastapi-sqlalchemy gunicorn From 452a49d0cceba848232c5ba6efc9a7475962959b Mon Sep 17 00:00:00 2001 From: Timur Enikeev Date: Sat, 25 Jan 2025 12:44:39 -0500 Subject: [PATCH 3/6] Fix workflow --- .github/workflows/checks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index adbafe2..d6ecea3 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -11,6 +11,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Set up docker + run: touch /etc/docker/daemon.json uses: docker-practice/actions-setup-docker@master - name: Run postgres run: | From e5aaa8123d2931feff140f053e477b9f9950e95d Mon Sep 17 00:00:00 2001 From: Timur Enikeev Date: Sat, 25 Jan 2025 12:48:51 -0500 Subject: [PATCH 4/6] Fix workflow --- .github/workflows/checks.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index d6ecea3..c6aba5b 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -10,8 +10,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Set up docker + - name: Init daemon.json run: touch /etc/docker/daemon.json + - name: Set up docker uses: docker-practice/actions-setup-docker@master - name: Run postgres run: | From e9fbb062c39a5ca44b768e6534dd3ebd4ced36fd Mon Sep 17 00:00:00 2001 From: Timur Enikeev Date: Sat, 25 Jan 2025 12:49:34 -0500 Subject: [PATCH 5/6] Fix workflow --- .github/workflows/checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index c6aba5b..233ac3c 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -11,7 +11,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Init daemon.json - run: touch /etc/docker/daemon.json + run: sudo touch /etc/docker/daemon.json - name: Set up docker uses: docker-practice/actions-setup-docker@master - name: Run postgres From 6d81f2d0e36117da73ad2a6c720f3bd8a7c2dc5d Mon Sep 17 00:00:00 2001 From: Mark Arzangulyan <15670678+Arzangulyan@users.noreply.github.com> Date: Sun, 26 Jan 2025 18:02:39 +0300 Subject: [PATCH 6/6] Update settings.py --- rating_api/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rating_api/settings.py b/rating_api/settings.py index 79d5670..89eade2 100644 --- a/rating_api/settings.py +++ b/rating_api/settings.py @@ -22,7 +22,7 @@ class Settings(BaseSettings): '''Temp settings''' API_URL: str = "https://api.test.profcomff.com/" - FIRST_COMMENT_ACHIEVEMENT_ID: int = 1 + FIRST_COMMENT_ACHIEVEMENT_ID: int = 12 ACHIEVEMENT_GIVE_TOKEN: str = "" model_config = ConfigDict(case_sensitive=True, env_file=".env", extra="ignore")