Source

indie-community / gamedb / views.py

Full commit
from django.views.generic.detail import DetailView
from gamedb.models import Game, Writer, Artist, Composer
from django.views.generic.list import ListView
from gamedb.forms import FilterForm, GameForm
from django.views.generic.edit import CreateView
from django.shortcuts import redirect

class ViewGame(DetailView):
    model = Game

class GameList(ListView):
    model = Game
    def get_context_data(self, **kwargs):
        ctx = super(GameList, self).get_context_data(**kwargs)
        ctx.update({'filter_form':self.filter_form})
        return ctx
    def get_queryset(self):
        qs = super(GameList, self).get_queryset()
        self.filter_form = FilterForm(self.request.GET)
        if self.filter_form.is_valid():
            if 'game_type' in self.request.GET:
                qs=qs.filter(game_type=self.filter_form.cleaned_data['game_type'])
            if 'genre' in self.request.GET:
                qs=qs.filter(genre=self.filter_form.cleaned_data['genre'])
            if 'style' in self.request.GET:
                qs=qs.filter(style=self.filter_form.cleaned_data['style'])
        return qs

class ViewWriter(DetailView):
    model = Writer

class ViewArtist(DetailView):
    model = Artist

class ViewComposer(DetailView):
    model = Composer

class AddGame(CreateView):
    model = Game
    form_class = GameForm
    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.owner = self.request.user
        self.object.save()
        return redirect(self.object)