From 0a32fb4a8e64c76212b99e176ee6df37f7b20ae1 Mon Sep 17 00:00:00 2001 From: Corentin Date: Sun, 27 Oct 2024 12:14:27 +0100 Subject: [PATCH] Added update course :tada: --- redis_app/templates/details.html | 1 + redis_app/templates/update.html | 42 ++++++++++++++++++++++++++++ redis_app/urls.py | 4 ++- redis_app/views.py | 48 ++++++++++++++++++++++++++------ 4 files changed, 86 insertions(+), 9 deletions(-) create mode 100644 redis_app/templates/update.html diff --git a/redis_app/templates/details.html b/redis_app/templates/details.html index b07de7e..6924bb6 100644 --- a/redis_app/templates/details.html +++ b/redis_app/templates/details.html @@ -23,6 +23,7 @@ {% if person %} {% if person.role == "Teacher" %} Delete + Update {% endif %} {% endif %} diff --git a/redis_app/templates/update.html b/redis_app/templates/update.html new file mode 100644 index 0000000..a346203 --- /dev/null +++ b/redis_app/templates/update.html @@ -0,0 +1,42 @@ + + +
+ {% csrf_token %} +
+

Update a course

+ + {% if error_message %} + {{ error_message }} + {% endif %} + +
+
+ +
+
+ +
+
+ +
+
+
+ + +
+ + diff --git a/redis_app/urls.py b/redis_app/urls.py index 1a4abfb..125b41a 100644 --- a/redis_app/urls.py +++ b/redis_app/urls.py @@ -13,6 +13,8 @@ urlpatterns = [ path('logout', views.logout, name='logout'), path('create_course', views.create_course_view, name='create_course'), path('create_course_form', views.create_course_form, name='create_course_form'), - path('', views.details, name='details'), + path('update_course/', views.update_course_view, name='update_course'), + path('update_course_form/', views.update_course_form, name='update_course_form'), path('delete/', views.delete_course_view, name='delete_course'), + path('', views.details, name='details'), ] \ No newline at end of file diff --git a/redis_app/views.py b/redis_app/views.py index 19c286e..0c1312e 100644 --- a/redis_app/views.py +++ b/redis_app/views.py @@ -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) +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): global 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): global personLoggedIn global redis_connection @@ -224,18 +245,29 @@ def create_course_form(request): course_level = request.POST.get('level') course_places = request.POST.get('places') course_teacher = getPersonId(personLoggedIn.get('name'), personLoggedIn.get('role')).split(":")[1] - course_key = f"course:{uuid.uuid4()}" - redis_connection.hset(course_key, mapping={ - 'title': course_title, - 'summary': course_summary, - 'level': course_level, - 'places': course_places, - 'teacher': course_teacher - }) + create_course(course_title, course_summary, course_level, course_places, course_teacher) return courses(request) 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): course = redis_connection.hgetall(f"course:{course_id}") person = redis_connection.hgetall(f"person:{person_id}")