Added update course 🎉

master
Corentin LEMAIRE 6 months ago
parent 4fe615e661
commit 0a32fb4a8e

@ -23,6 +23,7 @@
{% if person %} {% if person %}
{% if person.role == "Teacher" %} {% if person.role == "Teacher" %}
<a href="{% url 'delete_course' course.id %}">Delete</a> <a href="{% url 'delete_course' course.id %}">Delete</a>
<a href="{% url 'update_course' course.id %}">Update</a>
{% endif %} {% endif %}
{% endif %} {% endif %}
</body> </body>

@ -0,0 +1,42 @@
<html>
<body>
<form action="{% url 'update_course_form' course.id %}" method="POST">
{% csrf_token %}
<fieldset>
<legend><h1>Update a course</h1></legend>
{% if error_message %}
{{ error_message }}
{% endif %}
<label for="title">Course Title</label><br>
<input type="text" name="title" id="title" value="{{ course.title }}" required><br/>
<label for="summary">Course Summary</label><br>
<textarea name="summary" id="summary" required>{{ course.summary }}</textarea><br/>
<label for="level">Course Level</label><br>
<select name="level" id="level" required>
{% if course.level == 'Beginner' %}
<option value="Beginner" selected>Beginner</option>
<option value="Intermediate">Intermediate</option>
<option value="Advanced">Advanced</option>
{% elif course.level == 'Intermediate' %}
<option value="Beginner">Beginner</option>
<option value="Intermediate" selected>Intermediate</option>
<option value="Advanced">Advanced</option>
{% else %}
<option value="Beginner">Beginner</option>
<option value="Intermediate">Intermediate</option>
<option value="Advanced" selected>Advanced</option>
{% endif %}
</select><br/>
<label for="places">Number of Places</label><br>
<input type="number" name="places" id="places" value="{{ course.places }}" min="1" required><br/>
</fieldset>
<input type="submit" value="Update Course">
</form>
</body>
</html>

@ -13,6 +13,8 @@ urlpatterns = [
path('logout', views.logout, name='logout'), path('logout', views.logout, name='logout'),
path('create_course', views.create_course_view, name='create_course'), path('create_course', views.create_course_view, name='create_course'),
path('create_course_form', views.create_course_form, name='create_course_form'), path('create_course_form', views.create_course_form, name='create_course_form'),
path('<str:course_id>', views.details, name='details'), path('update_course/<str:course_id>', views.update_course_view, name='update_course'),
path('update_course_form/<str:course_id>', views.update_course_form, name='update_course_form'),
path('delete/<str:course_id>', views.delete_course_view, name='delete_course'), path('delete/<str:course_id>', views.delete_course_view, name='delete_course'),
path('<str:course_id>', views.details, name='details'),
] ]

@ -207,10 +207,31 @@ def create_course(course_title, course_summary, course_level, course_places, cou
}) })
redis_connection.expire(f"course:{course_id}", DEFAULT_EXPIRE_TIME) redis_connection.expire(f"course:{course_id}", DEFAULT_EXPIRE_TIME)
def update_course(course_id, course_title, course_summary, course_level, course_places, course_teacher):
redis_connection.hset(f"course:{course_id}", mapping={
"title": course_title,
"summary": course_summary,
"level": course_level,
"places": course_places,
"teacher": course_teacher
})
redis_connection.expire(f"course:{course_id}", DEFAULT_EXPIRE_TIME)
def create_course_view(request): def create_course_view(request):
global personLoggedIn global personLoggedIn
return render(request, 'create.html', {'person': personLoggedIn}) return render(request, 'create.html', {'person': personLoggedIn})
def update_course_view(request, course_id):
global personLoggedIn
course = redis_connection.hgetall(f"course:{course_id}")
if not course:
raise Http404("Course does not exist")
course_id = getCourseId2(course['title'], course['teacher'])
if course_id == False:
raise Http404("Course does not exist")
course['id'] = course_id.split(":")[1]
return render(request, 'update.html', {'person': personLoggedIn, 'course': course})
def create_course_form(request): def create_course_form(request):
global personLoggedIn global personLoggedIn
global redis_connection global redis_connection
@ -224,18 +245,29 @@ def create_course_form(request):
course_level = request.POST.get('level') course_level = request.POST.get('level')
course_places = request.POST.get('places') course_places = request.POST.get('places')
course_teacher = getPersonId(personLoggedIn.get('name'), personLoggedIn.get('role')).split(":")[1] course_teacher = getPersonId(personLoggedIn.get('name'), personLoggedIn.get('role')).split(":")[1]
course_key = f"course:{uuid.uuid4()}" create_course(course_title, course_summary, course_level, course_places, course_teacher)
redis_connection.hset(course_key, mapping={
'title': course_title,
'summary': course_summary,
'level': course_level,
'places': course_places,
'teacher': course_teacher
})
return courses(request) return courses(request)
return render(request, 'create.html', {'person': personLoggedIn, "error_message": "The form has been wrongly filled!"}) return render(request, 'create.html', {'person': personLoggedIn, "error_message": "The form has been wrongly filled!"})
def update_course_form(request, course_id):
global personLoggedIn
global redis_connection
global cancel
cancel = True
if personLoggedIn == '':
return render(request, 'login.html', {'person': Person(name="", role=""), "error_message": "You must login!"})
if request.method == 'POST':
course_title = request.POST.get('title')
course_summary = request.POST.get('summary')
course_level = request.POST.get('level')
course_places = request.POST.get('places')
course_teacher = getPersonId(personLoggedIn.get('name'), personLoggedIn.get('role')).split(":")[1]
update_course(course_id, course_title, course_summary, course_level, course_places, course_teacher)
return courses(request)
return render(request, 'update.html', {'person': personLoggedIn, "error_message": "The form has been wrongly filled!"})
def course_register(course_id, person_id): def course_register(course_id, person_id):
course = redis_connection.hgetall(f"course:{course_id}") course = redis_connection.hgetall(f"course:{course_id}")
person = redis_connection.hgetall(f"person:{person_id}") person = redis_connection.hgetall(f"person:{person_id}")

Loading…
Cancel
Save