diff --git a/events/templates/events/schedule.html b/events/templates/events/schedule.html index cbaf9a7..f71dd16 100644 --- a/events/templates/events/schedule.html +++ b/events/templates/events/schedule.html @@ -12,7 +12,7 @@ {{ event.away_team.name }} vs. {{ event.home_team.name }}
{{ event.start|date:"l, F j, Y g:i A" }}
{{ event.venue.name }}
- Edit Event Details + Edit Event Details Edit Lineup {% endfor %} diff --git a/events/urls.py b/events/urls.py index 972687c..c8f863a 100644 --- a/events/urls.py +++ b/events/urls.py @@ -6,5 +6,8 @@ from . import views urlpatterns = [ path('', views.root, name="root"), - path('schedule', views.schedule, name="schedule") + path('schedule', views.schedule, name="schedule"), + path('edit/', views.edit, name="edit event"), + path('edit', views.edit, name="edit event"), + path('edit', views.edit, name="edit event") ] \ No newline at end of file diff --git a/events/views.py b/events/views.py index dfc2e6e..f10f598 100644 --- a/events/views.py +++ b/events/views.py @@ -1,9 +1,38 @@ -from django.shortcuts import render, redirect +from django.shortcuts import render, redirect, get_object_or_404 from .models import Event +from .forms import EventForm +from django.http import HttpResponse def root(request): return redirect('/events/schedule') def schedule(request): events = Event.objects.all() - return render(request, 'events/schedule.html', {'title':'Schedule', 'events': events}) \ No newline at end of file + return render(request, 'events/schedule.html', {'title':'Schedule', 'events': events}) + +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(Event, id=id) + form = EventForm(request.POST or None, instance=instance) + else: + form = EventForm(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_event, did_create = Event.objects.update_or_create(pk=id, defaults=form.cleaned_data) + return render(request, 'success.html', {'call_back':'players list'}) + + # 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 = EventForm(request.POST or None, instance=instance) + else: + form = EventForm + + return render(request, 'edit.html', {'form': form, 'id': id, 'call_back': 'edit event'}) \ No newline at end of file diff --git a/players/forms.py b/players/forms.py index 9a056b7..eb8c611 100644 --- a/players/forms.py +++ b/players/forms.py @@ -4,4 +4,4 @@ from .models import Player class PlayerForm(forms.ModelForm): class Meta: model = Player - fields = ['first_name', 'last_name', 'jersey_number'] \ No newline at end of file + fields = ['first_name', 'last_name', 'jersey_number', 'team'] \ No newline at end of file diff --git a/players/urls.py b/players/urls.py index 59d7feb..6618794 100644 --- a/players/urls.py +++ b/players/urls.py @@ -5,5 +5,6 @@ from . import views urlpatterns = [ path('', views.root, name="root"), path('list', views.list, name="players list"), - path('edit/', views.edit, name="edit player") + path('edit/', views.edit, name="edit player"), + path('edit', views.edit, name="edit player") ] \ No newline at end of file diff --git a/players/views.py b/players/views.py index ccf515a..6dd0e0f 100644 --- a/players/views.py +++ b/players/views.py @@ -13,17 +13,22 @@ def list(request): 'items': [(player.id, f"{player.first_name} {player.last_name}") for player in players], 'edit_url_name': 'edit player'}) -def edit(request, id=None): +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: - form = PlayerForm(request.POST) + 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 # ... # redirect to a new URL: - return HttpResponse(str(form.cleaned_data)) + new_player, did_create = Player.objects.update_or_create(pk=id, defaults=form.cleaned_data) + return render(request, 'success.html', {'call_back':'players list'}) # if a GET (or any other method) we'll create a blank form else: @@ -33,4 +38,4 @@ def edit(request, id=None): else: form = PlayerForm - return render(request, 'players/edit.html', {'form': form, 'id': id}) \ No newline at end of file + return render(request, 'edit.html', {'form': form, 'id': id, 'call_back':'edit player'}) \ No newline at end of file diff --git a/teams/urls.py b/teams/urls.py index c8b5b83..16c4438 100644 --- a/teams/urls.py +++ b/teams/urls.py @@ -7,5 +7,6 @@ from . import views urlpatterns = [ path('', views.root, name="root"), path('list', views.list, name="teams list"), - path('edit/', views.edit, name="edit team") + path('edit/', views.edit, name="edit team"), + path('edit', views.edit, name="edit team") ] \ No newline at end of file diff --git a/teams/views.py b/teams/views.py index c3d544b..c114ebf 100644 --- a/teams/views.py +++ b/teams/views.py @@ -10,17 +10,22 @@ def list(request): teams = Team.objects.all() return render(request, 'list.html', {'title': "Teams", 'items': [(team.id, f"{team.name}") for team in teams], 'edit_url_name':'edit team'}) -def edit(request, id=None): +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: - form = TeamForm(request.POST) + 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: - return HttpResponse(str(form.cleaned_data)) + new_team, did_create = Team.objects.update_or_create(pk=id, defaults=form.cleaned_data) + return render(request, 'success.html', {'call_back':'teams list'}) # if a GET (or any other method) we'll create a blank form else: @@ -30,4 +35,4 @@ def edit(request, id=None): else: form = TeamForm - return render(request, 'venues/edit.html', {'form': form, 'id':id}) \ No newline at end of file + return render(request, 'edit.html', {'form': form, 'id': id, 'call_back':'edit team'}) \ No newline at end of file diff --git a/templates/success.html b/templates/success.html new file mode 100644 index 0000000..84c76cd --- /dev/null +++ b/templates/success.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} +{% block title %} {{ title }}{% endblock %} + +{% block content %} + + + + + +Success! Redirecting... + +{% endblock %} \ No newline at end of file diff --git a/venues/urls.py b/venues/urls.py index b67b468..39fa35b 100644 --- a/venues/urls.py +++ b/venues/urls.py @@ -5,5 +5,6 @@ from . import views urlpatterns = [ path('', views.root, name="root"), path('list', views.list, name="venues list"), - path('edit/', views.edit, name="edit venue") + path('edit/', views.edit, name="edit venue"), + path('edit', views.edit, name="edit venue") ] \ No newline at end of file diff --git a/venues/views.py b/venues/views.py index b5d9193..9e09cb6 100644 --- a/venues/views.py +++ b/venues/views.py @@ -1,6 +1,7 @@ from django.shortcuts import render, redirect, get_object_or_404 from django.http import HttpResponse from .models import Venue +from .forms import VenueForm def root(request): return redirect('/venues/list') @@ -9,18 +10,23 @@ def list(request): venues = Venue.objects.all() return render(request, 'list.html', {'title': "Venues", 'items': [(venue.id, f"{venue.name}") for venue in venues], 'edit_url_name': 'edit venue'}) -from .forms import VenueForm -def edit(request, id=None): + +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: - form = VenueForm(request.POST) + 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: - return HttpResponse(str(form.cleaned_data)) + new_venue, did_create = Venue.objects.update_or_create(pk=id, defaults=form.cleaned_data) + return render(request, 'success.html', {'call_back':'players list'}) # if a GET (or any other method) we'll create a blank form else: @@ -30,4 +36,4 @@ def edit(request, id=None): else: form = VenueForm - return render(request, 'venues/edit.html', {'form': form, 'id':id}) \ No newline at end of file + return render(request, 'edit.html', {'form': form, 'id': id, 'call_back': 'edit venue'}) \ No newline at end of file