geschichten/stories/writingtogether/views.py

62 lines
1.7 KiB
Python

from django import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render
# Create your views here.
from django.views import generic
from django.views.generic import CreateView, UpdateView
from writingtogether.models import Story, StoryPart, StoryRound, Participant
class IndexView(generic.ListView):
template_name = 'writingtogether/index.html'
context_object_name = 'open_story_round_list'
def get_queryset(self):
# TODO: show open & finished rounds
return StoryRound.objects.order_by('-created')[:5]
class DetailView(generic.DetailView):
model = StoryRound
template_name = 'writingtogether/detail.html'
class StoryRoundCreate(CreateView):
model = StoryRound
fields = ['name', 'participants', 'number_of_rounds']
def form_valid(self, form):
self.object = form.save()
for user in form.cleaned_data['participants']:
participant = Participant.objects.create(
user=user,
order_by=1, # TODO: get order by from form
story_round=self.object
)
Story.objects.create(
part_of_round=self.object,
started_by=participant
)
return HttpResponseRedirect(self.get_success_url())
class StoryUpdate(UpdateView):
model = Story
fields = ['name']
class StoryPartCreate(CreateView):
model = StoryPart
fields = ['text']
def form_valid(self, form):
form.instance.created_by = self.request.user
form.instance.previous_part_id = self.kwargs['previous']
form.instance.part_of_id = self.kwargs['pk']
return super().form_valid(form)