Skip to content

Commit

Permalink
Bonus: Editing and Deleting Meetings
Browse files Browse the repository at this point in the history
  • Loading branch information
codesensei-courses committed Apr 19, 2020
1 parent bcf76bc commit b1f6e22
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 1 deletion.
14 changes: 14 additions & 0 deletions meeting_planner/meetings/templates/meetings/confirm_delete.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{% extends "base.html" %}

{% block title %}Delete Meeting: {{meeting.title}}{% endblock %}

{% block content %}
<h1>Delete {{meeting.title}}</h1>
<form method="post">
{% csrf_token %}
<p>Are you sure?</p>

<button type="submit">Yes</button>
<a href="{% url 'detail' meeting.id %}">No, take me back</a>
</form>
{% endblock %}
2 changes: 2 additions & 0 deletions meeting_planner/meetings/templates/meetings/detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ <h1>{{meeting.title}}</h1>
{{meeting.start_time}} in <strong>{{meeting.room}}</strong>.
</p>

<a href="{% url 'edit' meeting.id %}">Change this meeting</a> <br>
<a href="{% url 'delete' meeting.id %}">Delete this meeting</a> <br>
<a href="{% url 'welcome' %}">Home</a>
{% endblock %}
14 changes: 14 additions & 0 deletions meeting_planner/meetings/templates/meetings/edit.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{% extends "base.html" %}

{% block title %}Change Meeting: {{ meeting.title }}{% endblock %}

{% block content %}
<h1>Change meeting</h1>
<form method="post">
<table>
{{ form }}
</table>
{% csrf_token %}
<button type="submit">Update</button>
</form>
{% endblock %}
4 changes: 3 additions & 1 deletion meeting_planner/meetings/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@
urlpatterns = [
path('<int:id>', views.detail, name="detail"),
path('rooms', views.rooms_list, name="rooms"),
path('new', views.new, name="new")
path('new', views.new, name="new"),
path('edit/<int:id>', views.edit, name="edit"),
path('delete/<int:id>', views.delete, name="delete")
]
33 changes: 33 additions & 0 deletions meeting_planner/meetings/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,36 @@ def new(request):
else:
form = MeetingForm()
return render(request, "meetings/new.html", {"form": form})


# As a bonus, here are example implementations
# Of an edit and delete form
# See also urls.py and templates

def edit(request, id):
# First, get the meeting to edit from the database
meeting = get_object_or_404(Meeting, pk=id)
if request.method == "POST":
# After editing: get data from form
# Note the second argument: the meeting we are editing
form = MeetingForm(request.POST, instance=meeting)
if form.is_valid():
form.save()
# redirect back to detail page after save
return redirect("detail", id)
else:
# Pre-fill the form with data from existing meeting
form = MeetingForm(instance=meeting)
return render(request, "meetings/edit.html", {"form": form})


# Delete is different: the form is only shown to ask for confirmation
# When we get a POST, we know we can go ahead and delete
def delete(request, id):
# First, get the meeting to edit from the database
meeting = get_object_or_404(Meeting, pk=id)
if request.method == "POST":
meeting.delete()
return redirect("welcome")
else:
return render(request, "meetings/confirm_delete.html", {"meeting": meeting})

0 comments on commit b1f6e22

Please sign in to comment.