Files
web2.0-backend/webapp/views.py
Aarni Halinen 4a2a5f9d76 Bugfix #117: API Event tags
Add API for tags so events can get the related field.
2018-10-23 14:45:08 +03:00

150 lines
4.3 KiB
Python

"""Webapp views."""
# from django.db.models import Count
from django.shortcuts import render, redirect
from django.contrib.auth import login, logout, authenticate
from django.views.decorators.http import require_http_methods
# from django.views.decorators.csrf import ensure_csrf_cookie
# from django.http import HttpResponse, HttpResponseRedirect
# from django.contrib.auth.decorators import permission_required, login_required
# from django.conf import settings
# from django.utils import timezone
from rest_framework import viewsets, routers
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from rest_framework.response import Response
from rest_framework.reverse import reverse
# import logging
# import requests
from dealer.git import git
from webapp.models import Event, SignupForm, Signup, TemplateQuestion, Feed,\
Committee, Official, Tag
from webapp.serializers import *
from members.views.utils import *
# -- REST API -- #
class RootView(routers.APIRootView):
permission_classes = [IsAuthenticatedOrReadOnly]
class EventViewSet(viewsets.ModelViewSet):
queryset = Event.objects.all()
serializer_class = EventSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
class SignupFormViewSet(viewsets.ModelViewSet):
queryset = SignupForm.objects.all()
serializer_class = SignupFormSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
class SignupViewSet(viewsets.ModelViewSet):
queryset = Signup.objects.all()
serializer_class = SignupSerializer
permission_classes = []
class SavedQuestionsViewSet(viewsets.ModelViewSet):
queryset = TemplateQuestion.objects.all()
serializer_class = SavedQuestionsSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
class FeedViewSet(viewsets.ModelViewSet):
queryset = Feed.objects.all()
serializer_class = FeedSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
class ContactsViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Official.objects.all()
serializer_class = ContactsSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
class TagsViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Tag.objects.all()
serializer_class = ContactsSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
# -- OLD CODEBASE -- #
@require_http_methods(["GET"])
def main_index(request, *args, **kwargs):
"""Render main page."""
return render(request, "index.html", {})
@require_http_methods(["GET"])
def about_view(request, *args, **kwargs):
"""Render about page."""
latest_commit = "Not found"
latest_date = "Not found"
latest_tag = "Not found"
try:
repo = git.init_repo()
latest_commit = repo.git("rev-parse HEAD").decode('utf-8')
latest_date = repo.git("show -s --format=%ci " + latest_commit).decode('utf-8')
latest_tag = repo.git("describe --tags " + repo.git("rev-list --tags --max-count=1").decode('utf-8')).decode('utf-8')
except Exception:
pass
context = {
'commit': latest_commit,
'date': latest_date,
'tag': latest_tag
}
return render(request, "about.html", context)
@require_http_methods(["GET"])
def guild_view(request, *args, **kwargs):
"""Render "Guild" page."""
return render(request, "guild.html", {})
@require_http_methods(["GET"])
def freshmen_view(request, *args, **kwargs):
"""Render "Freshmen" page."""
return render(request, "freshmen.html", {})
@require_http_methods(["GET"])
def jobs_view(request, *args, **kwargs):
"""Render "Jobs" page."""
return render(request, "jobs.html", {})
@require_http_methods(["GET"])
def event_calendar_view(request, *args, **kwargs):
"""Render "Event calendar" page."""
return render(request, "event_calendar.html", {})
@require_http_methods(["GET"])
def international_view(request, *args, **kwargs):
"""Render "International" page."""
return render(request, "international.html", {})
@require_http_methods(["GET"])
def sosso_view(request, *args, **kwargs):
"""Render "Sössö" page."""
return render(request, "sosso.html", {})
@require_http_methods(["GET"])
def contact_view(request, *args, **kwargs):
"""Render "Contact" page."""
committees = Committee.objects.order_by('name')
context = {
"committees": committees
}
return render(request, "contact.html", context)