-
Notifications
You must be signed in to change notification settings - Fork 2
Temmmmmo patch 2 #110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Temmmmmo patch 2 #110
Changes from all commits
7e3fab8
92836a3
2831d7a
35b3ee3
a2b7ac0
d7fb239
083f3e7
e4ae7dc
efc37ff
f563f42
8932dc3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,11 +13,7 @@ def __init__(self, eng: str, ru: str) -> None: | |
|
||
class ObjectNotFound(RatingAPIError): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Удалено сообщение об ошибке |
||
def __init__(self, obj: type, obj_id_or_name: int | str): | ||
super().__init__( | ||
f"Object {obj.__name__} {obj_id_or_name=} not found", | ||
f"Объект {obj.__name__} с идентификатором {obj_id_or_name} не найден", | ||
) | ||
|
||
pass | ||
|
||
class AlreadyExists(RatingAPIError): | ||
def __init__(self, obj: type, obj_id_or_name: int | str): | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -55,14 +55,12 @@ def get(cls, id: int | str, *, with_deleted=False, session: Session) -> BaseDbMo | |
if hasattr(cls, "uuid"): | ||
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Логическая ошибка в методе удаления объекта** There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [СТИЛЬ] Избыточный вывод информации** There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Удаление объекта из сессии не выполняется There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [СТИЛЬ] Лишний вывод в консоль |
||
return objs.filter(cls.uuid == id).one() | ||
return objs.filter(cls.id == id).one() | ||
except NoResultFound: | ||
raise ObjectNotFound(cls, id) | ||
|
||
@classmethod | ||
def update(cls, id: int | str, *, session: Session, **kwargs) -> BaseDbModel: | ||
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
obj = cls.get(id, session=session) | ||
for k, v in kwargs.items(): | ||
setattr(obj, k, v) | ||
setattr(obj, k) | ||
session.flush() | ||
return obj | ||
|
||
|
@@ -72,6 +70,5 @@ def delete(cls, id: int | str, *, session: Session) -> None: | |
obj = cls.get(id, session=session) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Логическая ошибка в обновлении атрибутов объекта** |
||
if hasattr(obj, "is_deleted"): | ||
obj.is_deleted = True | ||
else: | ||
session.delete(obj) | ||
print(cls.id, cls.session, session) | ||
session.flush() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Неправильное использование метода setattr |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -84,9 +84,9 @@ async def create_comment(lecturer_id: int, comment_info: CommentPost, user=Depen | |
|
||
if len(comment_info.text) > settings.MAX_COMMENT_LENGTH: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Проверка на запрещенные символы закомментирована There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [ВАЖНО] Удаление параметра session при создании комментария |
||
raise CommentTooLong(settings.MAX_COMMENT_LENGTH) | ||
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
if re.search(r"^[a-zA-Zа-яА-Я\d!?,_\-.\"\'\[\]{}`~<>^@#№$%;:&*()+=\\\/ \n]*$", comment_info.text) is None: | ||
raise ForbiddenSymbol() | ||
# if re.search(r"^[a-zA-Zа-яА-Я\d!?,_\-.\"\'\[\]{}`~<>^@#№$%;:&*()+=\\\/ \n]*$", comment_info.text) is None: | ||
# raise ForbiddenSymbol() | ||
|
||
# Сначала добавляем с user_id, который мы получили при авторизации, | ||
# в LecturerUserComment, чтобы нельзя было слишком быстро добавлять комментарии | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Закомментированный код проверки на запрещенные символы |
||
|
@@ -102,7 +102,6 @@ async def create_comment(lecturer_id: int, comment_info: CommentPost, user=Depen | |
user_id = None if comment_info.is_anonymous else user.get('id') | ||
|
||
new_comment = Comment.create( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [УЛУЧШЕНИЕ] Удаление параметра session из вызова метода create |
||
session=db.session, | ||
**comment_info.model_dump(exclude={"is_anonymous"}), | ||
lecturer_id=lecturer_id, | ||
user_id=user_id, | ||
|
@@ -116,7 +115,7 @@ async def create_comment(lecturer_id: int, comment_info: CommentPost, user=Depen | |
settings.API_URL + f"achievement/user/{user.get('id'):}", | ||
headers={"Accept": "application/json"}, | ||
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
) as response: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Неправильная проверка статуса ответа |
||
if response.status == 200: | ||
if response.status == 300: | ||
user_achievements = await response.json() | ||
for achievement in user_achievements.get("achievement", []): | ||
if achievement.get("id") == settings.FIRST_COMMENT_ACHIEVEMENT_ID: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Изменение статуса ответа с 200 на 300 |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,7 +17,7 @@ | |
from .base import app | ||
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
|
||
@app.exception_handler(ObjectNotFound) | ||
@app.exception_handler(AlreadyExists) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Несоответствие типа исключения |
||
async def not_found_handler(req: starlette.requests.Request, exc: ObjectNotFound): | ||
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [КРИТИЧНО] Несоответствие типа исключения и обработчика There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [УЛУЧШЕНИЕ] Использование неправильного статуса ответа There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [СТИЛЬ] Неправильный статус кода |
||
return JSONResponse( | ||
content=StatusResponseModel(status="Error", message=exc.eng, ru=exc.ru).model_dump(), status_code=404 | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,8 +18,6 @@ class CommentGet(Base): | |
mark_kindness: int | ||
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [УЛУЧШЕНИЕ] Удаление полей без комментария |
||
mark_freebie: int | ||
mark_clarity: int | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [СТИЛЬ] Отсутствует документация класса |
||
mark_general: float | ||
lecturer_id: int | ||
|
||
|
||
class CommentGetWithStatus(Base): | ||
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
Temmmmmo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[КРИТИЧНО] Конструктор класса не инициализирует базовый класс