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 = [
path('', views.root, name="root"),
path('list', views.EventsListView.as_view(), name="events list"),
path('edit/<int:id>', views.edit, name="edit event"),
path('edit', views.edit, name="edit event"),
path('edit', views.edit, name="edit event")
path('edit/<int:id>', views.EventEditView.as_view(), name="edit event"),
path('edit', views.EventEditView.as_view(), name="edit event"),
]

View File

@@ -1,18 +1,17 @@
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 .models import Event
from .forms import EventForm
from django.http import HttpResponse
from lib.views import BenchcoachListView
from lib.views import BenchcoachListView, BenchcoachEditView
def root(request):
return redirect(reverse('events list'))
class EventsListView(BenchcoachListView):
Model = Event
edit_url = 'edit player'
list_url = 'players list'
page_title = "Players"
edit_url = 'edit event'
list_url = 'events list'
page_title = "Events"
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}"
@@ -27,34 +26,8 @@ class EventsListView(BenchcoachListView):
)
return context
def root(request):
return redirect('/events/schedule')
def edit(request, id=0):
Form = EventForm
class EventEditView(BenchcoachEditView):
Model = Event
call_back = reverse('events list')
# if this is a POST request we need to process the form data
if request.method == 'POST':
# 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'})
edit_url = 'edit event'
list_url = 'events list'
Form = EventForm

View File

@@ -1,13 +1,12 @@
from django.urls import path, include
from .views import PlayerListView
from .views import PlayerListView, PlayerEditView
from . import views
urlpatterns = [
path('', views.root, name="root"),
# path('list', views.list, name="players list"),
path('list', PlayerListView.as_view(), name='players list'),
path('edit/<int:id>', views.edit, name="edit player"),
path('edit', views.edit, name="edit player")
path('edit/<int:id>', PlayerEditView.as_view(), 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 .models import Player
from .forms import PlayerForm
from lib.views import BenchcoachListView
from lib.views import BenchcoachListView, BenchcoachEditView
# Create your views here.
@@ -19,30 +19,8 @@ class PlayerListView(BenchcoachListView):
def root(request):
return redirect('/players/list')
def edit(request, id=0):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
if id:
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'})
class PlayerEditView(BenchcoachEditView):
Form = PlayerForm
Model = Player
edit_url = 'edit player'
list_url = 'players list'

View File

@@ -7,6 +7,6 @@ from . import views
urlpatterns = [
path('', views.root, name="root"),
path('list', views.TeamsListView.as_view(), name="teams list"),
path('edit/<int:id>', views.edit, name="edit team"),
path('edit', views.edit, name="edit team")
path('edit/<int:id>', views.TeamEditView.as_view(), 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 .forms import TeamForm
from .models import Team
from lib.views import BenchcoachListView
from lib.views import BenchcoachListView, BenchcoachEditView
def root(request):
return redirect(reverse('venues list'))
return redirect(reverse('teams list'))
class TeamsListView(BenchcoachListView):
Model = Team
edit_url = 'edit venue'
list_url = 'venues list'
page_title = "Venues"
edit_url = 'edit team'
list_url = 'teams list'
page_title = "Teams"
def edit(request, id=0):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
if id:
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'})
class TeamEditView(BenchcoachEditView):
Model = Team
edit_url = 'edit team'
list_url = 'teams list'
Form = TeamForm

View File

@@ -5,6 +5,6 @@ from . import views
urlpatterns = [
path('', views.root, name="root"),
path('list', views.VenueListView.as_view(), name="venues list"),
path('edit/<int:id>', views.edit, name="edit venue"),
path('edit', views.edit, name="edit venue")
path('edit/<int:id>', views.VenueEditView.as_view(), 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 .models import Venue
from .forms import VenueForm
from lib.views import BenchcoachListView
from lib.views import BenchcoachListView, BenchcoachEditView
def root(request):
return redirect('/venues/list')
@@ -14,30 +14,8 @@ class VenueListView(BenchcoachListView):
list_url = 'venues list'
page_title = "Venues"
def edit(request, id=0):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
if id:
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'})
class VenueEditView(BenchcoachEditView):
Model = Venue
edit_url = 'edit venue'
list_url = 'venues list'
Form = VenueForm