from django.shortcuts import render from django.http import HttpResponse, Http404, HttpResponseBadRequest, HttpResponseRedirect from postings.models import * from postings.forms import * # Create your views here. # The view for the homepage, or index.html # There is an optional 'search_query GET parameter, which, if provided, gives the template a 'results' variable. def index(request): search_query = request.GET.get('search_query', None) results = None if search_query: results = RateableEntity.objects.filter(name__icontains=search_query) return render(request, 'postings/index.html', {'results': results}) # The view for a listing of universities. def universities(request): universities_list = University.objects.all() context = {'entities': universities_list} return render(request, 'postings/collections/universities.html', context) # The view for /universities/ Displays one university entity. def university_entity(request, university_id): try: university = University.objects.get(pk=university_id) university.average_rating = university.getAverageRating() except University.DoesNotExist: raise Http404("University does not exist") return render(request, 'postings/entity_pages/university.html', {'entity': university}) # The view for a listing of courses. def courses(request): courses_list = Course.objects.all() context = {'entities': courses_list} return render(request, 'postings/collections/courses.html', context) # The view for a specific course entity. def course_entity(request, course_id): try: course = Course.objects.get(pk=course_id) except Course.DoesNotExist: raise Http404("Course does not exist") return render(request, 'postings/entity_pages/course.html', {'entity': course}) # The view for receiving POST requests for new reviews. def post_review(request): if request.method == 'POST': form = EntityReviewForm(request.POST) if form.is_valid(): # Only if the request is a POST and the form is valid do we do anything. rating = form.cleaned_data['rating'] title = form.cleaned_data['title'] content = form.cleaned_data['content'] entity_id = form.cleaned_data['entity_id'] entity = RateableEntity.objects.get(pk=entity_id) # Creates the new Review object from the posted data. review = Review.objects.create( rating=rating, title=title, content=content, rateable_entity=entity ) # Send the user back to the entity they were viewing. redirect_path = '/' if entity.entity_type == RateableEntity.UNIVERSITY: redirect_path = '/universities/' + str(entity_id) elif entity.entity_type == RateableEntity.COURSE: redirect_path = '/courses/' + str(entity_id) return HttpResponseRedirect(redirect_path) return HttpResponseBadRequest("Bad Request")