Skip to content

logginable deleting bug fix#198

Merged
Temmmmmo merged 18 commits intomainfrom
zimovchik
Oct 22, 2024
Merged

logginable deleting bug fix#198
Temmmmmo merged 18 commits intomainfrom
zimovchik

Conversation

@Zimovchik
Copy link
Copy Markdown
Member

Изменения

#192

Детали реализации

Check-List

  • Вы проверили свой код перед отправкой запроса?
  • Вы написали тесты к реализованным функциям?
  • Вы не забыли применить форматирование black и isort для Back-End или Prettier для Front-End?

@github-actions
Copy link
Copy Markdown

💩 Code linting failed, use black and isort to fix it.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Aug 13, 2024

Code Coverage

Coverage Report
FileStmtsMissCoverMissing
auth_backend
   __main__.py330%1–5
   base.py12467%6–9
   exceptions.py39587%32, 47–49, 54
auth_backend/auth_method
   base.py63494%52, 54, 61, 143
   method_mixins.py32294%27, 50
   oauth.py561770%38, 44, 49–54, 58–69, 95–100
   outer.py1122776%27, 34, 41, 48, 99, 105, 114, 168–173, 186–192, 204–210
   userdata_mixin.py19574%32, 37–40
auth_backend/auth_plugins
   airflow.py331652%26–37, 42–65
   coder.py321650%25–34, 39–52
   email.py2521494%91, 231, 316, 318, 323, 334–340, 387, 428, 479, 489
   github.py1046339%57–116, 127–171, 178, 183, 189–201
   google.py1126443%65–124, 135–163, 170, 176–180, 184–189, 193–202
   keycloak.py1046240%53–115, 122–172, 179, 184, 190–195
   lkmsu.py1379034%59–111, 126–163, 170, 175, 181–195, 199–236, 240–249
   mailu.py341847%25–34, 39–54
   postgres.py432053%29–35, 40–46, 51–63
   telegram.py1116145%56–90, 102–120, 127, 133, 143–163, 167–181
   vk.py1288236%71–123, 134–172, 179, 184, 190–207, 214–240
   yandex.py1278335%58–128, 138–176, 184, 190, 196–222
auth_backend/cli
   group.py13130%1–17
   process.py56560%1–72
   scope.py11110%1–20
   user.py20200%1–40
   user_group.py12120%1–25
auth_backend/kafka
   kafka.py502060%30–33, 42–44, 56–59, 72–82, 85, 93, 103
   kafkameta.py9278%8, 12
auth_backend/models
   base.py83594%79, 100–102, 106
   db.py136398%52, 209, 213
   dynamic_settings.py27774%24–31
auth_backend/routes
   base.py26292%20–21
   exc_handlers.py37586%29, 54, 67, 93, 105
   groups.py84396%85, 135, 137
   scopes.py36392%24, 53–54
   user.py912770%52, 54, 56–65, 71–77, 89–109, 160, 173
   user_session.py84693%76–85, 114, 116, 174, 181
auth_backend/schemas
   models.py98397%148–150
auth_backend/schemas/types
   scopes.py24675%30–32, 37, 40, 42
auth_backend/utils
   security.py43295%36, 61
   smtp.py771877%76–79, 101–120
   string.py7186%12
   user_session_control.py33197%28
TOTAL271888268% 

Summary

Tests Skipped Failures Errors Time
59 6 💤 0 ❌ 0 🔥 10.303s ⏱️

Comment thread auth_backend/auth_method/oauth.py Outdated
@Zimovchik Zimovchik requested a review from Temmmmmo August 14, 2024 08:53
Copy link
Copy Markdown
Member Author

@Zimovchik Zimovchik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И можно не делать такой огромный запрос в базу, а, например, сравнить длину списка ответа на запрос по всем логинейбл аутх методам с длиной списка ответа запроса, который выше(в 74 строке) кидался(это был запрос просто по данному методу)

Получилось даже с одним запросом поидее все сделать. Но возможно это не слишком читаемо очевидно, не знаю как лучше, но так точно быстрее

Comment thread auth_backend/auth_method/base.py Outdated
Comment thread auth_backend/auth_method/oauth.py Outdated
.filter(
AuthMethod.user_id == user.id,
AuthMethod.auth_method.in_(
[cls.get_name()] + [method.get_name() for method in AUTH_METHODS.values() if method.loginable]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не совсем понимаю, что ты хотел этой строчкой сделать
сложно читаемо, в любом случае

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну такой запрос тут сделан он сам по себе довольно абстрактен, там ниже в проверке его просто использую, но я и написал, что возможно это ге очень читаемо, и стоит сделать 2 запроса, но код будет более читаем

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я не совсем понимаю, что ты хочешь этим запросом получить

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хотя, вроде понял, а зачем туда добавлять cls.get_name() его разве там не будет в запросе?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хотя, вроде понял, а зачем туда добавлять cls.get_name() его разве там не будет в запросе?

Потому что я хочу чтобы там удаляемый метод даже если он не loginable, а такое возможно

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Типа ситуация, когда это последний метод и он не логинейбл? Ну со стороны пользователя мы такое никогда не увидим, так как доступа к удалению последнего логинейбл нет
Тут просто тогда может возникнуть проблема, когда это будет логинейбл, и тогда длина списка будет на 1 больше, и, возможно, получится удалить. Я так вижу

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Теоретически ты прав я думаю да, не подумал об этом, сейчас потестим

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Типа ситуация, когда это последний метод и он не логинейбл? Ну со стороны пользователя мы такое никогда не увидим, так как доступа к удалению последнего логинейбл нет Тут просто тогда может возникнуть проблема, когда это будет логинейбл, и тогда длина списка будет на 1 больше, и, возможно, получится удалить. Я так вижу

Ты был прав ничего не меняется, перемудрил)

@Zimovchik Zimovchik requested a review from Temmmmmo August 14, 2024 21:00
Comment thread auth_backend/auth_method/oauth.py Outdated
.filter(
AuthMethod.user_id == user.id,
AuthMethod.auth_method == cls.get_name(),
AuthMethod.auth_method.in_([method.get_name() for method in AUTH_METHODS.values() if method.loginable]),
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

так зачем ты старую реализацию поменял, теперь нельзя будет удалить не логинейбл

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

так, давай еще раз разберемся
допустим у меня 3 метода, из которых 1 логинейбл, а один не логинейбл
Я пытаюсь удалить логинейбл. Тогда нужно получить все логинейбл методы мои, увидеть там список из 1 объекта, а затем сравнить со списком, который просто прокидывается через поиск по cls.get_name() в данный момент.

@grigoriev-semyon
Copy link
Copy Markdown
Member

grigoriev-semyon commented Aug 21, 2024

@Zimovchik

➜  ~ python3.11
Python 3.11.9 (main, Apr  2 2024, 08:25:04) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> class X:
...     pass
... 
>>> class Y:
...     pass
... 
>>> class Z(X, Y):
...     pass
... 
>>> issubclass(Z, X)
True
>>> issubclass(Z, Y)
True

@Zimovchik
Copy link
Copy Markdown
Member Author

Zimovchik commented Aug 26, 2024

@Zimovchik

➜  ~ python3.11
Python 3.11.9 (main, Apr  2 2024, 08:25:04) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> class X:
...     pass
... 
>>> class Y:
...     pass
... 
>>> class Z(X, Y):
...     pass
... 
>>> issubclass(Z, X)
True
>>> issubclass(Z, Y)
True

@grigoriev-semyon я знаю что так можно делать, но не очень понимаю к чему этот тут

@Zimovchik
Copy link
Copy Markdown
Member Author

@Temmmmmo я поменял вообще немного логику чека, да теперь мы делаем 2 query запроса, но зато код как по мне теперь намного более читаемый и прозрачный

@Zimovchik Zimovchik requested a review from Temmmmmo August 26, 2024 18:23
@grigoriev-semyon
Copy link
Copy Markdown
Member

@Zimovchik

➜ ~ python3.11

Python 3.11.9 (main, Apr 2 2024, 08:25:04) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

class X:

... pass

...

class Y:

... pass

...

class Z(X, Y):

... pass

...

issubclass(Z, X)

True

issubclass(Z, Y)

True

@grigoriev-semyon я знаю что так можно делать, но не очень понимаю к чему этот тут

issubclass(cls, LoginableMixin)

Вот так это делается, определить можно в абстрактном классе каком нибудь

@Temmmmmo

This comment has been minimized.

@Zimovchik
Copy link
Copy Markdown
Member Author

@grigoriev-semyon
Ты хочешь определить отдельный класс для логинейблов, от которых их наследовать?

@Temmmmmo Я посмотрел, там уже есть такой класс, так что да нет смысла добавлять эту переменную в классы, перепишу сегодня

@Temmmmmo Temmmmmo removed their request for review September 16, 2024 20:11
@profcomff profcomff deleted a comment from github-actions Bot Oct 3, 2024
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Oct 3, 2024

💩 Code linting failed, use black and isort to fix it.

Comment thread auth_backend/auth_method/oauth.py
Comment thread auth_backend/auth_method/outer.py Outdated
Comment thread auth_backend/auth_plugins/email.py Outdated
Comment thread auth_backend/auth_plugins/github.py Outdated
Comment thread auth_backend/auth_plugins/google.py Outdated
Comment thread auth_backend/auth_plugins/physics.py Outdated
Comment thread auth_backend/auth_plugins/telegram.py Outdated
Comment thread auth_backend/auth_plugins/vk.py Outdated
Comment thread auth_backend/auth_plugins/yandex.py Outdated
Comment thread auth_backend/auth_method/oauth.py Outdated
@Temmmmmo Temmmmmo merged commit a7cc0db into main Oct 22, 2024
@Temmmmmo Temmmmmo deleted the zimovchik branch October 22, 2024 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Запрет на отвязывание последнего аутх метода

4 participants