You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
from django.views.generic import DetailView
|
|
from django.views.generic.edit import CreateView
|
|
from django.shortcuts import render, redirect, reverse
|
|
|
|
from .models import *
|
|
from .helpers import *
|
|
from .forms import *
|
|
from .data import *
|
|
|
|
|
|
def home(request):
|
|
filter_query = request.COOKIES.get('filter_query', '')
|
|
if len(request.GET.getlist('filterform')) == 0 and filter_query != '':
|
|
return redirect(reverse('mensaviewer:home') + '?' + filter_query)
|
|
|
|
selected_location_ids = request.GET.getlist('location')
|
|
checked_types = request.GET.getlist('type')
|
|
status = request.GET.get('status')
|
|
selected_locations = Location.objects.filter(mensa_id__in=selected_location_ids)
|
|
|
|
context = {
|
|
'types': [(TYPES[type], type) for type in TYPES],
|
|
'checked_types': checked_types,
|
|
'status_values': STATUS_VALUES,
|
|
'status': status,
|
|
'locations': Location.objects.all(),
|
|
'selected_locations': selected_location_ids,
|
|
'menu_data': load_data(selected_locations, checked_types, status),
|
|
}
|
|
|
|
response = render(request, "flensburg.html", context)
|
|
response.set_cookie('filter_query', request.GET.urlencode())
|
|
return response
|
|
|
|
|
|
def like(request, pk):
|
|
if request.method == 'GET':
|
|
menu = Menu.objects.get(pk=pk)
|
|
menu.likes += 1
|
|
menu.save()
|
|
return redirect(reverse('mensaviewer:home') + '?' + request.GET.get('next'))
|
|
|
|
|
|
def dislike(request, pk):
|
|
if request.method == 'GET':
|
|
menu = Menu.objects.get(pk=pk)
|
|
menu.likes -= 1
|
|
menu.save()
|
|
return redirect(reverse('mensaviewer:home') + '?' + request.GET.get('next'))
|
|
|
|
|
|
class MenuDetailView(DetailView):
|
|
model = Menu
|
|
template_name = "menu_detail.html"
|
|
queryset = Menu.objects.all()
|
|
|
|
|
|
class LocationCreateView(CreateView):
|
|
model = Location
|
|
fields = '__all__'
|
|
template_name = "create_location.html"
|
|
success_url = "/"
|
|
|
|
|
|
class CommentCreateView(CreateView):
|
|
model = Comment
|
|
fields = ['username', 'comment']
|
|
template_name = "comment.html"
|
|
success_url = '/menu/{pk}/'
|
|
|
|
def form_valid(self, form):
|
|
self.menu = get_object_or_404(Menu, pk=self.kwargs['pk'])
|
|
form.instance.menu = self.menu
|
|
print(self.menu)
|
|
return super().form_valid(form)
|