views.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from django.db.models import F
  2. from django.views.generic import DetailView, ListView
  3. from django.views.generic.list import MultipleObjectMixin
  4. from .models import Developer, Game, GameSystem, Genre, Publisher
  5. class RecentGameList(ListView):
  6. model = Game
  7. paginate_by = 20
  8. queryset = Game.objects.order_by("-created")[:20]
  9. class LibraryGameList(ListView):
  10. template_name = "games/game_library_list.html"
  11. model = Game
  12. paginate_by = 200
  13. def get_context_data(self, **kwargs):
  14. game_system_slug = self.request.GET.get("game_system")
  15. object_list = Game.objects.order_by(F("rating").desc(nulls_last=True))
  16. if game_system_slug:
  17. object_list = object_list.filter(
  18. game_system__retropie_slug=game_system_slug
  19. )
  20. context = super(LibraryGameList, self).get_context_data(
  21. object_list=object_list, **kwargs
  22. )
  23. return context
  24. class GameDetail(DetailView):
  25. model = Game
  26. class GamePlayDetail(DetailView):
  27. template_name = "games/game_play_detail.html"
  28. model = Game
  29. class GameSystemDetail(DetailView, MultipleObjectMixin):
  30. model = GameSystem
  31. paginate_by = 20
  32. def get_context_data(self, **kwargs):
  33. object_list = Game.objects.filter(game_system=self.get_object())
  34. context = super(GameSystemDetail, self).get_context_data(
  35. object_list=object_list, **kwargs
  36. )
  37. return context
  38. class GenreDetail(DetailView, MultipleObjectMixin):
  39. model = Genre
  40. paginate_by = 20
  41. def get_context_data(self, **kwargs):
  42. object_list = Game.objects.filter(genre=self.get_object())
  43. context = super(GenreDetail, self).get_context_data(
  44. object_list=object_list, **kwargs
  45. )
  46. return context
  47. class PublisherDetail(DetailView):
  48. model = Publisher
  49. paginate_by = 20
  50. def get_context_data(self, **kwargs):
  51. object_list = Game.objects.filter(publisher=self.get_object())
  52. context = super(PublisherDetail, self).get_context_data(
  53. object_list=object_list, **kwargs
  54. )
  55. return context
  56. class DeveloperDetail(DetailView):
  57. model = Developer
  58. paginate_by = 20
  59. def get_context_data(self, **kwargs):
  60. object_list = Game.objects.filter(developer=self.get_object())
  61. context = super(DeveloperDetail, self).get_context_data(
  62. object_list=object_list, **kwargs
  63. )
  64. return context