Skip to content
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

Повторяющиеся ачивки #163

Merged
merged 14 commits into from
Apr 4, 2024

Conversation

holohup
Copy link
Collaborator

@holohup holohup commented Apr 2, 2024

Добавил поле повторяющихся ачивок
Подправил фикстуры
Исправил некоторые опечатки
Пофиксил баг в логах
Добавил тесты
Сделал константы в utils для констант, надо туда потихоньку мигрировать
В валидаторы теперь передается история
Сделал логику обновления ачивок
Наколдовал вроде query для формирования кверисета для проверки ачивок
Ну и замкнул чтобы возвращались новые ачивки во вьюхе
Вроде, все, наверное что-то забыл

backend/utils/achievements.py Outdated Show resolved Hide resolved
backend/running/admin.py Outdated Show resolved Hide resolved
# при условии, что по этому ключу будет список с id-шнниками новых иос-ачивок. Если будут названия, надо написать сравнение с названиями из query
self._new_achievements.extend(ios_achievements)
if self._new_ios_achievements is not None:
self._new_achievements.extend(self._new_ios_achievements)

def _query_unfinished_achievements(self):
Copy link
Collaborator

Choose a reason for hiding this comment

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

Ничего не понял. Почему просто не исключить одним запросом полученные ачивки и ачивки iOS?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Ничего не понял. Почему просто не исключить одним запросом полученные ачивки и ачивки iOS?

Потому что полученные могут быть повторяемыми, и тогда их нельзя исплючать.

id__in=UserAchievement.objects.filter(user_id=self._user.id).values("achievement_id")
)
self._unfinished_achievements = unfinished_non_ios.union(recurring_non_ios)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Тут любопытно, unfinished_non_ios.union(recurring_non_ios) меняет unfinished_non_ios, мы правда больше негде не используем её, но мне видится что лучше было бы так unfinished_non_ios | recurring_non_ios

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Прикольно. А по сути это то же самое, объединение множеств (кверисетов) ?

Copy link
Collaborator

@NECROshizo NECROshizo Apr 3, 2024

Choose a reason for hiding this comment

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

Не совсем в 1 случае меняем объект unfinished_non_ios а потом даем ссылку на него в self._unfinished_achievements(то есть unfinished_non_ios и self._unfinished_achievements ссылаются на 1 объект), а в unfinished_non_ios | recurring_non_ios создается новый объект на который ссылается только self._unfinished_achievements, не знаю как это можно использовать и что лучше. Хотя я подумал что не факт что qweryset имеет все методы set... и я зря это пишу.

@holohup holohup merged commit a239d3a into develop Apr 4, 2024
0 of 2 checks passed
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