BestNotes/bestnotes/views.py

126 lines
4.0 KiB
Python

from django.shortcuts import render
from bestnotes.models import Note, Topic, Subject, StudentProfile
from datetime import date
from .forms import EditorForm
from django.urls import reverse
from django.http import HttpResponse
from django.http import HttpResponseRedirect
def homepage(request):
#return HttpResponse("BestNotes' index will be here.")
return render(request, "homepage.html", {})
def add(request):
form = EditorForm()
return render(request, "add.html", {"form": form})
def subject(request):
return render(request, "subjects.html", {})
def subject_id(request,id):
return render(request, "subject.html", {'id': id})
def note_id(request,id):
all_notes = Note.objects.all()
notes = all_notes.filter(id=id)
if len(notes) > 0:
single_note = Note.objects.get(pk=id) # Get note with given id
context = {
'note': single_note
}
return render(request, "note.html", context)
else:
return HttpResponse("Note not found.")
#Give all notes connected with subject name and pass it to html
def notes_name(request,subject_id):
all_notes = Note.objects.all()
subject_notes = all_notes.filter(topic__subject__id=subject_id) #Get all notes with subject name
context = {
'notes' : subject_notes
}
#Change website here
return render(request, "notes.html", context)
def notes_by_topic_id(request,topic_id):
all_notes = Note.objects.all()
topic_notes = all_notes.filter(topic__id=topic_id) #Get all notes with given topic id
context = {
'notes' : topic_notes
}
#Change website here
return render(request, "notes.html", context)
def topics_by_subject_id(request,subject_id):
all_topics = Topic.objects.all()
topics_under_subject = all_topics.filter(subject__id=subject_id) #get topics under given subject
if len(topics_under_subject) > 0:
subject_name = all_topics[0].subject.name # Get note with given id
context = {
'subject_name': subject_name,
'topics': topics_under_subject
}
return render(request, "topics.html", context)
else:
return HttpResponse("Topics not found.")
def notes_all(request):
all_notes = Note.objects.all()
context = {
'notes' : all_notes
}
return render(request, "test.html", context)
def subjects_all(request):
all_subjects = Subject.objects.all()
student_notes = Note.objects.all().filter(user__user__id=request.user.id)
student_subjects = []
for note in student_notes:
student_subjects.append(note.topic.subject)
context = {
'subjects' : all_subjects,
'student_subjects': set(student_subjects)
}
return render(request, "subjects.html", context)
def create_note(request):
form = EditorForm(request.POST)
if request.method == 'POST':
#Get actual user as Student
student = StudentProfile.objects.get(user=request.user.id)
#Check if subject exist, if not create it
subject = Subject()
print(form.data['subject'])
if Subject.objects.filter(name=form.data['subject']):
subject = Subject.objects.filter(name=form.data['subject'])[0]
else:
subject = Subject(name=form.data['subject'], student=student)
subject.save()
#Now topic, in addition check if exist in subject
topic = Topic()
if Topic.objects.filter(name=form.data['topic'], subject=subject):
topic = Topic.objects.filter(name=form.data['topic'], subject=subject)[0]
else:
topic = Topic(name=form.data['topic'],
subject=subject,
add_date=date.today())
topic.save()
#Create note
note = Note(name=form.data['name'],
content=form.data['content'],
text="Empty",
topic=topic,
user=student,
add_date=date.today())
note.save()
url = reverse('subject')
return HttpResponseRedirect(url)