from django.shortcuts import render from django.views.generic import View from GeoffreyApp.models import * from django.views import generic from django.db.models import Q # Create your views here. class Home(View): def get(self, request): stats = [] stats.append(("Players", Player.objects.count())) stats.append(("Bases", Base.objects.count())) stats.append(("Shops", Shop.objects.count())) stats.append(("Items for Sale", ItemListing.objects.count())) context = { "stat_list": stats, "current_page": "Home", } return render(request, 'GeoffreyApp/home.html', context=context) class SearchList(View): def get(self, request): context = {} query = request.GET.get('search') context["search"] = query context["player_list"] = Player.objects.filter(Q(name__icontains=query)).all() context["loc_list"] = Location.objects.filter(Q(name__icontains=query) | Q(owner__name__icontains=query)).all() return render(request, 'GeoffreyApp/search.html', context=context) class PlayerList(generic.ListView): model = Player def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['current_page'] = "Players" return context class ShopList(generic.ListView): model = Shop def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['current_page'] = "Shops" return context def get_queryset(self): qs = Shop.objects.all() search = self.request.GET.get('q') if search: qs = qs.filter(Q(name__icontains=search) | Q(owner__name__icontains=search)) return qs class BaseList(generic.ListView): model = Base def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['current_page'] = "Bases" return context class TownList(generic.ListView): model = Town def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['current_page'] = "Towns" return context class PublicFarmList(generic.ListView): model = PublicFarm def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['current_page'] = "Public Farms" return context class ItemListingList(generic.ListView): model = ItemListing def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['current_page'] = "Item Listings" return context class PlayerInfo(View): def get(self, request, id): try: player = Player.objects.get(pk=id) loc_list = Location.objects.filter(owner=player).all() context = { "player": player, "loc_list": loc_list } return render(request, 'GeoffreyApp/player.html', context=context) except Player.DoesNotExist: return render(request, 'GeoffreyApp/error.html') class ShopInfo(View): def get(self, request, id): try: shop = Shop.objects.get(pk=id) inventory = ItemListing.objects.filter(shop=shop).all() context = { "loc": shop, "inventory": inventory } return render(request, 'GeoffreyApp/shop.html', context=context) except Player.DoesNotExist: return render(request, 'GeoffreyApp/error.html') class BaseInfo(View): def get(self, request, id): try: base = Base.objects.get(pk=id) context = { "loc": base, } return render(request, 'GeoffreyApp/location.html', context=context) except Player.DoesNotExist: return render(request, 'GeoffreyApp/error.html') class TownInfo(View): def get(self, request, id): try: town = Town.objects.get(pk=id) residents = town.residents.all() context = { "loc": town, "residents": residents } return render(request, 'GeoffreyApp/town.html', context=context) except Player.DoesNotExist: return render(request, 'GeoffreyApp/error.html') class PublicFarmInfo(View): def get(self, request, id): try: public_farm = PublicFarm.objects.get(pk=id) resources = public_farm.resource.all() context = { "loc": public_farm, "resources": resources } return render(request, 'GeoffreyApp/publicfarm.html', context=context) except Player.DoesNotExist: return render(request, 'GeoffreyApp/error.html')