61 lines
1.6 KiB
Python
61 lines
1.6 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 = 'latest_story_round_list'
|
|
|
|
def get_queryset(self):
|
|
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)
|