diff --git a/events/urls.py b/events/urls.py index 4a3b454..d9b9f92 100644 --- a/events/urls.py +++ b/events/urls.py @@ -7,7 +7,6 @@ from . import views urlpatterns = [ path('', views.root, name="root"), path('list', views.EventsListView.as_view(), name="events list"), - path('edit/', views.edit, name="edit event"), - path('edit', views.edit, name="edit event"), - path('edit', views.edit, name="edit event") + path('edit/', views.EventEditView.as_view(), name="edit event"), + path('edit', views.EventEditView.as_view(), name="edit event"), ] \ No newline at end of file diff --git a/events/views.py b/events/views.py index 6e9a580..fde2543 100644 --- a/events/views.py +++ b/events/views.py @@ -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'}) \ No newline at end of file + edit_url = 'edit event' + list_url = 'events list' + Form = EventForm \ No newline at end of file diff --git a/players/urls.py b/players/urls.py index fd9b055..621b262 100644 --- a/players/urls.py +++ b/players/urls.py @@ -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/', views.edit, name="edit player"), - path('edit', views.edit, name="edit player") + path('edit/', PlayerEditView.as_view(), name="edit player"), + path('edit', PlayerEditView.as_view(), name="edit player") ] \ No newline at end of file diff --git a/players/views.py b/players/views.py index 8b8e3ab..afc7a7d 100644 --- a/players/views.py +++ b/players/views.py @@ -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'}) \ No newline at end of file +class PlayerEditView(BenchcoachEditView): + Form = PlayerForm + Model = Player + edit_url = 'edit player' + list_url = 'players list' \ No newline at end of file diff --git a/teams/urls.py b/teams/urls.py index b286168..f0d37f9 100644 --- a/teams/urls.py +++ b/teams/urls.py @@ -7,6 +7,6 @@ from . import views urlpatterns = [ path('', views.root, name="root"), path('list', views.TeamsListView.as_view(), name="teams list"), - path('edit/', views.edit, name="edit team"), - path('edit', views.edit, name="edit team") + path('edit/', views.TeamEditView.as_view(), name="edit team"), + path('edit', views.TeamEditView.as_view(), name="edit team") ] \ No newline at end of file diff --git a/teams/views.py b/teams/views.py index 7bdb34f..6a19dd4 100644 --- a/teams/views.py +++ b/teams/views.py @@ -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'}) \ No newline at end of file +class TeamEditView(BenchcoachEditView): + Model = Team + edit_url = 'edit team' + list_url = 'teams list' + Form = TeamForm \ No newline at end of file diff --git a/venues/urls.py b/venues/urls.py index 59122ab..7bd12b0 100644 --- a/venues/urls.py +++ b/venues/urls.py @@ -5,6 +5,6 @@ from . import views urlpatterns = [ path('', views.root, name="root"), path('list', views.VenueListView.as_view(), name="venues list"), - path('edit/', views.edit, name="edit venue"), - path('edit', views.edit, name="edit venue") + path('edit/', views.VenueEditView.as_view(), name="edit venue"), + path('edit', views.VenueEditView.as_view(), name="edit venue") ] \ No newline at end of file diff --git a/venues/views.py b/venues/views.py index d8c9177..7890dd5 100644 --- a/venues/views.py +++ b/venues/views.py @@ -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'}) \ No newline at end of file +class VenueEditView(BenchcoachEditView): + Model = Venue + edit_url = 'edit venue' + list_url = 'venues list' + Form = VenueForm \ No newline at end of file