|
|
@ -39,10 +39,11 @@ def getCourseId(course):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def home(request, person=''):
|
|
|
|
def home(request):
|
|
|
|
global cancel
|
|
|
|
global cancel
|
|
|
|
|
|
|
|
global personLoggedIn
|
|
|
|
cancel = True
|
|
|
|
cancel = True
|
|
|
|
return render(request, 'home.html', {'person': person})
|
|
|
|
return render(request, 'home.html', {'person': personLoggedIn})
|
|
|
|
|
|
|
|
|
|
|
|
def details(request, course_id):
|
|
|
|
def details(request, course_id):
|
|
|
|
global redis_connection
|
|
|
|
global redis_connection
|
|
|
@ -52,10 +53,11 @@ def details(request, course_id):
|
|
|
|
course = redis_connection.hgetall(f"course:{course_id}")
|
|
|
|
course = redis_connection.hgetall(f"course:{course_id}")
|
|
|
|
if not course:
|
|
|
|
if not course:
|
|
|
|
raise Http404("Course does not exist")
|
|
|
|
raise Http404("Course does not exist")
|
|
|
|
course_id = getCourseId2(course['title'], course['teacher'])
|
|
|
|
course['id'] = course_id
|
|
|
|
if course_id == False:
|
|
|
|
teacher = redis_connection.hgetall(f"person:{course['teacher']}")
|
|
|
|
raise Http404("Course does not exist")
|
|
|
|
if not teacher:
|
|
|
|
course['id'] = course_id.split(":")[1]
|
|
|
|
raise Http404("Teacher does not exist")
|
|
|
|
|
|
|
|
course['teacher_name'] = teacher.get('name')
|
|
|
|
return render(request, 'details.html', {'course': course, 'person': personLoggedIn})
|
|
|
|
return render(request, 'details.html', {'course': course, 'person': personLoggedIn})
|
|
|
|
|
|
|
|
|
|
|
|
# Handle error messages.
|
|
|
|
# Handle error messages.
|
|
|
@ -78,7 +80,7 @@ def register(request):
|
|
|
|
'role': person_role
|
|
|
|
'role': person_role
|
|
|
|
})
|
|
|
|
})
|
|
|
|
personLoggedIn = redis_connection.hgetall(person_key)
|
|
|
|
personLoggedIn = redis_connection.hgetall(person_key)
|
|
|
|
return home(request, personLoggedIn)
|
|
|
|
return home(request)
|
|
|
|
|
|
|
|
|
|
|
|
return render(request, 'register.html', {'person': Person(name="", role=""), "error_message": "The form has been wrongly filled!"})
|
|
|
|
return render(request, 'register.html', {'person': Person(name="", role=""), "error_message": "The form has been wrongly filled!"})
|
|
|
|
|
|
|
|
|
|
|
@ -96,7 +98,7 @@ def login(request):
|
|
|
|
if results[0] > 0:
|
|
|
|
if results[0] > 0:
|
|
|
|
person_key = results[1]
|
|
|
|
person_key = results[1]
|
|
|
|
personLoggedIn = redis_connection.hgetall(person_key)
|
|
|
|
personLoggedIn = redis_connection.hgetall(person_key)
|
|
|
|
return home(request, personLoggedIn)
|
|
|
|
return home(request)
|
|
|
|
return render(request, 'login.html', {'person': Person(name="", role=""), "error_message": "No user found!"})
|
|
|
|
return render(request, 'login.html', {'person': Person(name="", role=""), "error_message": "No user found!"})
|
|
|
|
|
|
|
|
|
|
|
|
return login_form(request)
|
|
|
|
return login_form(request)
|
|
|
@ -334,4 +336,50 @@ def subscribe(courses_id):
|
|
|
|
def send_new_course_notification(message):
|
|
|
|
def send_new_course_notification(message):
|
|
|
|
print(message)
|
|
|
|
print(message)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def search(keywords):
|
|
|
|
|
|
|
|
courses = []
|
|
|
|
|
|
|
|
for keyword in keywords.split(' '):
|
|
|
|
|
|
|
|
if not keyword: # When the users end his keywords with a ' '
|
|
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
title_query = f"@title:{keyword}"
|
|
|
|
|
|
|
|
summary_query = f"@summary:{keyword}"
|
|
|
|
|
|
|
|
level_query = f"@level:{keyword}"
|
|
|
|
|
|
|
|
teacher_query = f"@teacher:{keyword}"
|
|
|
|
|
|
|
|
title_results = redis_connection.execute_command('FT.SEARCH', 'idx:courses', title_query)
|
|
|
|
|
|
|
|
summary_results = redis_connection.execute_command('FT.SEARCH', 'idx:courses', summary_query)
|
|
|
|
|
|
|
|
level_results = redis_connection.execute_command('FT.SEARCH', 'idx:courses', level_query)
|
|
|
|
|
|
|
|
teacher_results = redis_connection.execute_command('FT.SEARCH', 'idx:courses', teacher_query)
|
|
|
|
|
|
|
|
for i in range(1, len(title_results), 2):
|
|
|
|
|
|
|
|
courses.append(title_results[i])
|
|
|
|
|
|
|
|
for i in range(1, len(summary_results), 2):
|
|
|
|
|
|
|
|
courses.append(summary_results[i])
|
|
|
|
|
|
|
|
for i in range(1, len(level_results), 2):
|
|
|
|
|
|
|
|
courses.append(level_results[i])
|
|
|
|
|
|
|
|
for i in range(1, len(teacher_results), 2):
|
|
|
|
|
|
|
|
courses.append(teacher_results[i])
|
|
|
|
|
|
|
|
return courses
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def search_view(request):
|
|
|
|
|
|
|
|
global personLoggedIn
|
|
|
|
|
|
|
|
return render(request, 'search.html', {'person': personLoggedIn})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def search_form(request):
|
|
|
|
|
|
|
|
global personLoggedIn
|
|
|
|
|
|
|
|
global redis_connection
|
|
|
|
|
|
|
|
global cancel
|
|
|
|
|
|
|
|
cancel = True
|
|
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
|
|
|
keywords = request.POST.get('keywords')
|
|
|
|
|
|
|
|
courses = []
|
|
|
|
|
|
|
|
courses_id = search(keywords)
|
|
|
|
|
|
|
|
for course_id in courses_id:
|
|
|
|
|
|
|
|
course = redis_connection.hgetall(course_id)
|
|
|
|
|
|
|
|
if not course:
|
|
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
course['id'] = course_id.split(":")[1]
|
|
|
|
|
|
|
|
courses.append(course)
|
|
|
|
|
|
|
|
return render(request, 'search.html', {'person': personLoggedIn, 'courses': courses})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return render(request, 'search.html', {'person': personLoggedIn, "error_message": "The form has been wrongly filled!"})
|
|
|
|
|
|
|
|
|
|
|
|
# Every id is only the number, not the course:number or person:number
|
|
|
|
# Every id is only the number, not the course:number or person:number
|