Skip to content

Commit

Permalink
After Module 7: Adding User Interaction with ModelForms
Browse files Browse the repository at this point in the history
  • Loading branch information
codesensei-courses committed Apr 19, 2020
1 parent 21577ae commit bcf76bc
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 2 deletions.
23 changes: 23 additions & 0 deletions meeting_planner/meetings/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from datetime import date

from django.forms import ModelForm, DateInput, TimeInput, TextInput, IntegerField
from django.core.exceptions import ValidationError

from .models import Meeting


class MeetingForm(ModelForm):
class Meta:
model = Meeting
fields = '__all__'
widgets = {
'date': DateInput(attrs={"type": "date"}),
'start': TimeInput(attrs={"type": "time"}),
'duration': TextInput(attrs={"type": "number","min":"1", "max":"4"})
}

def clean_date(self):
d = self.cleaned_data.get("date")
if d < date.today():
raise ValidationError("Meetings cannot be in the past")
return d
14 changes: 14 additions & 0 deletions meeting_planner/meetings/templates/meetings/new.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{% extends "base.html" %}

{% block title %}New Meeting{% endblock %}

{% block content %}
<h1>Plan a new meeting</h1>
<form method="post">
<table>
{{ form }}
</table>
{% csrf_token %}
<button type="submit">Create</button>
</form>
{% endblock %}
3 changes: 2 additions & 1 deletion meeting_planner/meetings/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@

urlpatterns = [
path('<int:id>', views.detail, name="detail"),
path('rooms', views.rooms_list, name="rooms")
path('rooms', views.rooms_list, name="rooms"),
path('new', views.new, name="new")
]
13 changes: 12 additions & 1 deletion meeting_planner/meetings/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.shortcuts import render, get_object_or_404
from django.shortcuts import render, get_object_or_404, redirect

from .models import Meeting, Room
from .forms import MeetingForm


def detail(request, id):
Expand All @@ -12,3 +13,13 @@ def rooms_list(request):
return render(request, "meetings/rooms_list.html",
{"rooms": Room.objects.all()})


def new(request):
if request.method == "POST":
form = MeetingForm(request.POST)
if form.is_valid():
form.save()
return redirect("welcome")
else:
form = MeetingForm()
return render(request, "meetings/new.html", {"form": form})

0 comments on commit bcf76bc

Please sign in to comment.