Consolidated Edit View

This commit is contained in:
2021-11-14 17:41:30 -06:00
parent b4c2428752
commit d390c13b14
8 changed files with 42 additions and 136 deletions

View File

@@ -7,7 +7,6 @@ from . import views
urlpatterns = [ urlpatterns = [
path('', views.root, name="root"), path('', views.root, name="root"),
path('list', views.EventsListView.as_view(), name="events list"), path('list', views.EventsListView.as_view(), name="events list"),
path('edit/<int:id>', views.edit, name="edit event"), path('edit/<int:id>', views.EventEditView.as_view(), name="edit event"),
path('edit', views.edit, name="edit event"), path('edit', views.EventEditView.as_view(), name="edit event"),
path('edit', views.edit, name="edit event")
] ]

View File

@@ -1,18 +1,17 @@
from django.shortcuts import render, redirect, get_object_or_404 from django.shortcuts import render, redirect, get_object_or_404
from django.views import View
from django.db import models
from django.http import HttpResponse
from django.urls import reverse from django.urls import reverse
from .models import Event from .models import Event
from .forms import EventForm from .forms import EventForm
from django.http import HttpResponse from lib.views import BenchcoachListView, BenchcoachEditView
from lib.views import BenchcoachListView
def root(request):
return redirect(reverse('events list'))
class EventsListView(BenchcoachListView): class EventsListView(BenchcoachListView):
Model = Event Model = Event
edit_url = 'edit player' edit_url = 'edit event'
list_url = 'players list' list_url = 'events list'
page_title = "Players" page_title = "Events"
title_strf = '{item.away_team.name} vs. {item.home_team.name}' title_strf = '{item.away_team.name} vs. {item.home_team.name}'
body_strf = "{item.start:%a, %b %-d, %-I:%M %p},\n{item.venue.name}" body_strf = "{item.start:%a, %b %-d, %-I:%M %p},\n{item.venue.name}"
@@ -27,34 +26,8 @@ class EventsListView(BenchcoachListView):
) )
return context return context
def root(request): class EventEditView(BenchcoachEditView):
return redirect('/events/schedule')
def edit(request, id=0):
Form = EventForm
Model = Event Model = Event
call_back = reverse('events list') edit_url = 'edit event'
# if this is a POST request we need to process the form data list_url = 'events list'
if request.method == 'POST': Form = EventForm
# create a form instance and populate it with data from the request:
if id:
instance = get_object_or_404(Model, id=id)
form = Form(request.POST or None, instance=instance)
else:
form = Form(request.POST or None)
if form.is_valid():
if id == 0: id = None
new_item, did_create = Model.objects.update_or_create(pk=id, defaults=form.cleaned_data)
return render(request, 'success.html', {'call_back':call_back,'id':new_item.id}, status=201 if did_create else 200)
else:
return HttpResponse(status=400)
# if a GET (or any other method) we'll create a blank form
else:
if id:
instance = get_object_or_404(Event, id=id)
form = Form(request.POST or None, instance=instance)
else:
form = Form
return render(request, 'edit.html', {'form': form, 'id': id, 'call_back': 'edit event'})

View File

@@ -1,13 +1,12 @@
from django.urls import path, include from django.urls import path, include
from .views import PlayerListView from .views import PlayerListView, PlayerEditView
from . import views from . import views
urlpatterns = [ urlpatterns = [
path('', views.root, name="root"), path('', views.root, name="root"),
# path('list', views.list, name="players list"),
path('list', PlayerListView.as_view(), name='players list'), path('list', PlayerListView.as_view(), name='players list'),
path('edit/<int:id>', views.edit, name="edit player"), path('edit/<int:id>', PlayerEditView.as_view(), name="edit player"),
path('edit', views.edit, name="edit player") path('edit', PlayerEditView.as_view(), name="edit player")
] ]

View File

@@ -4,7 +4,7 @@ from django.http import HttpResponse
from django.urls import reverse from django.urls import reverse
from .models import Player from .models import Player
from .forms import PlayerForm from .forms import PlayerForm
from lib.views import BenchcoachListView from lib.views import BenchcoachListView, BenchcoachEditView
# Create your views here. # Create your views here.
@@ -19,30 +19,8 @@ class PlayerListView(BenchcoachListView):
def root(request): def root(request):
return redirect('/players/list') return redirect('/players/list')
def edit(request, id=0): class PlayerEditView(BenchcoachEditView):
# if this is a POST request we need to process the form data Form = PlayerForm
if request.method == 'POST': Model = Player
# create a form instance and populate it with data from the request: edit_url = 'edit player'
if id: list_url = 'players list'
instance = get_object_or_404(Player, id=id)
form = PlayerForm(request.POST or None, instance=instance)
else:
form = PlayerForm(request.POST or None)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
if id == 0: id = None
new_player, did_create = Player.objects.update_or_create(pk=id, defaults=form.cleaned_data)
return render(request, 'success.html', {'call_back':reverse('players list'),'id':new_player.id}, status=201 if did_create else 200)
else:
return HttpResponse(status=400)
# if a GET (or any other method) we'll create a blank form
else:
if id:
instance = get_object_or_404(Player, id=id)
form = PlayerForm(request.POST or None, instance=instance)
else:
form = PlayerForm
return render(request, 'edit.html', {'form': form, 'id': id, 'call_back':'edit player'})

View File

@@ -7,6 +7,6 @@ from . import views
urlpatterns = [ urlpatterns = [
path('', views.root, name="root"), path('', views.root, name="root"),
path('list', views.TeamsListView.as_view(), name="teams list"), path('list', views.TeamsListView.as_view(), name="teams list"),
path('edit/<int:id>', views.edit, name="edit team"), path('edit/<int:id>', views.TeamEditView.as_view(), name="edit team"),
path('edit', views.edit, name="edit team") path('edit', views.TeamEditView.as_view(), name="edit team")
] ]

View File

@@ -3,40 +3,19 @@ from django.http import HttpResponse
from django.urls import reverse from django.urls import reverse
from .forms import TeamForm from .forms import TeamForm
from .models import Team from .models import Team
from lib.views import BenchcoachListView from lib.views import BenchcoachListView, BenchcoachEditView
def root(request): def root(request):
return redirect(reverse('venues list')) return redirect(reverse('teams list'))
class TeamsListView(BenchcoachListView): class TeamsListView(BenchcoachListView):
Model = Team Model = Team
edit_url = 'edit venue' edit_url = 'edit team'
list_url = 'venues list' list_url = 'teams list'
page_title = "Venues" page_title = "Teams"
def edit(request, id=0): class TeamEditView(BenchcoachEditView):
# if this is a POST request we need to process the form data Model = Team
if request.method == 'POST': edit_url = 'edit team'
# create a form instance and populate it with data from the request: list_url = 'teams list'
if id: Form = TeamForm
instance = get_object_or_404(Team, id=id)
form = TeamForm(request.POST or None, instance=instance)
else:
form = TeamForm(request.POST or None)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
# ...
# redirect to a new URL:
new_team, did_create = Team.objects.update_or_create(pk=id, defaults=form.cleaned_data)
return render(request, 'success.html', {'call_back_url':reverse('teams list'), 'id':new_team.id},status=201 if did_create else 200)
# if a GET (or any other method) we'll create a blank form
else:
if id:
instance = get_object_or_404(Team, id=id)
form = TeamForm(request.POST or None, instance=instance)
else:
form = TeamForm
return render(request, 'edit.html', {'form': form, 'id': id, 'call_back':'edit team'})

View File

@@ -5,6 +5,6 @@ from . import views
urlpatterns = [ urlpatterns = [
path('', views.root, name="root"), path('', views.root, name="root"),
path('list', views.VenueListView.as_view(), name="venues list"), path('list', views.VenueListView.as_view(), name="venues list"),
path('edit/<int:id>', views.edit, name="edit venue"), path('edit/<int:id>', views.VenueEditView.as_view(), name="edit venue"),
path('edit', views.edit, name="edit venue") path('edit', views.VenueEditView.as_view(), name="edit venue")
] ]

View File

@@ -3,7 +3,7 @@ from django.http import HttpResponse, HttpResponseBadRequest
from django.urls import reverse from django.urls import reverse
from .models import Venue from .models import Venue
from .forms import VenueForm from .forms import VenueForm
from lib.views import BenchcoachListView from lib.views import BenchcoachListView, BenchcoachEditView
def root(request): def root(request):
return redirect('/venues/list') return redirect('/venues/list')
@@ -14,30 +14,8 @@ class VenueListView(BenchcoachListView):
list_url = 'venues list' list_url = 'venues list'
page_title = "Venues" page_title = "Venues"
def edit(request, id=0): class VenueEditView(BenchcoachEditView):
# if this is a POST request we need to process the form data Model = Venue
if request.method == 'POST': edit_url = 'edit venue'
# create a form instance and populate it with data from the request: list_url = 'venues list'
if id: Form = VenueForm
instance = get_object_or_404(Venue, id=id)
form = VenueForm(request.POST or None, instance=instance)
else:
form = VenueForm(request.POST or None)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
# ...
# redirect to a new URL:
new_venue, did_create = Venue.objects.update_or_create(pk=id, defaults=form.cleaned_data)
return render(request, 'success.html', {'call_back_url':reverse('venues list'), 'id':new_venue.id}, status=201 if did_create else 200)
return HttpResponseBadRequest()
# if a GET (or any other method) we'll create a blank form
else:
if id:
instance = get_object_or_404(Venue, id=id)
form = VenueForm(request.POST or None, instance=instance)
else:
form = VenueForm
return render(request, 'edit.html', {'form': form, 'id': id, 'call_back': 'edit venue'})