4a2a5f9d76
Add API for tags so events can get the related field.
150 lines
4.3 KiB
Python
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)
|