From 08dd2754ad4b5ab4e8c8b10a73c1ad29b114f5c3 Mon Sep 17 00:00:00 2001 From: Patrick Date: Wed, 13 Jan 2021 12:48:58 +0000 Subject: [PATCH 1/6] The text 'fachschaft info' can be changed in a post --- fet2020/members/views.py | 8 ++++++++ fet2020/templates/members/index.html | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fet2020/members/views.py b/fet2020/members/views.py index bff13896..fff08eff 100644 --- a/fet2020/members/views.py +++ b/fet2020/members/views.py @@ -7,6 +7,8 @@ from django_filters.rest_framework import DjangoFilterBackend from .models import Member, JobMember, JobGroup, Job from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, JobMemberSerializer +from posts.models import Post + from rest_framework import viewsets #from rest_framework import permissions @@ -45,10 +47,13 @@ def index(request): pinned_job_groups, unpinned_job_groups = __get_job_groups() members = deque(Member.all_members.all()) + fs_info = Post.objects.filter(slug='fachschaft-info').first() + context = { "pinned_job_groups": pinned_job_groups, "unpinned_job_groups": unpinned_job_groups, "members": members, + "fs_info": fs_info, } return render(request, 'members/index.html', context) @@ -84,10 +89,13 @@ def members_view(request, filter=None): logger.info("Wrong member role '{}'".format(filter)) raise Http404("no member role") + fs_info = Post.objects.filter(slug='fachschaft-info').first() + context = { "pinned_job_groups": pinned_job_groups, "unpinned_job_groups": unpinned_job_groups, "members": members, + "fs_info": fs_info, } return render(request, 'members/index.html', context) diff --git a/fet2020/templates/members/index.html b/fet2020/templates/members/index.html index 5826e49a..e29c4803 100644 --- a/fet2020/templates/members/index.html +++ b/fet2020/templates/members/index.html @@ -62,7 +62,9 @@ {% if members %}
- Die Fachschaft Elektrotechnik (kurz: FET), ist die offizielle Vertretung aller Studierenden auf der Fakultät für Elektrotechnik und Informationstechnik. Ehrenamtliche engagierte Studierende unterstützen dich in Anliegen und Fragen zum und rund ums Studium. Wir vertreten eure Interessen in den offiziellen Gremien der Universität und arbeiten an Studienplänen mit. Außerdem bieten wir ein Rahmenprogramm zum Studium in Form von Veranstaltungen und Festln. Wir freuen uns über Feedback und Anregungen, insbesondere von jenen, die gleich Nägel mit Köpfen machen und unser Team verstärken wollen oder ihre Themen und Meinungen in eine unserer Sitzungen einbringen möchten. + {% if fs_info %} + {{ fs_info.body|safe }} + {% endif %}
From 7454ed5b53c70c6d3b366c5cd89d8a2f5d30f01d Mon Sep 17 00:00:00 2001 From: Patrick Date: Wed, 13 Jan 2021 13:25:03 +0000 Subject: [PATCH 2/6] relocate viewset methods --- fet2020/fet2020/urls.py | 4 +-- fet2020/members/views.py | 55 ------------------------------------- fet2020/members/viewsets.py | 55 +++++++++++++++++++++++++++++++++++++ fet2020/posts/views.py | 21 ++------------ fet2020/posts/viewsets.py | 21 ++++++++++++++ 5 files changed, 80 insertions(+), 76 deletions(-) create mode 100644 fet2020/members/viewsets.py create mode 100644 fet2020/posts/viewsets.py diff --git a/fet2020/fet2020/urls.py b/fet2020/fet2020/urls.py index 81de07ee..b7701ef2 100644 --- a/fet2020/fet2020/urls.py +++ b/fet2020/fet2020/urls.py @@ -4,9 +4,9 @@ from django.conf.urls.static import static from django.conf import settings from django.views.generic import RedirectView from . import views -from posts.views import PostViewSet +from posts.viewsets import PostViewSet from members.urls import member_urlpatterns, jobs_urlpatterns -from members.views import MemberViewSet, JobViewSet, JobGroupViewSet, JobMemberViewSet +from members.viewsets import MemberViewSet, JobViewSet, JobGroupViewSet, JobMemberViewSet from rest_framework import routers router = routers.DefaultRouter() diff --git a/fet2020/members/views.py b/fet2020/members/views.py index fff08eff..5381cca7 100644 --- a/fet2020/members/views.py +++ b/fet2020/members/views.py @@ -2,16 +2,10 @@ from django.http import Http404 from django.shortcuts import render from collections import deque -from django_filters.rest_framework import DjangoFilterBackend from .models import Member, JobMember, JobGroup, Job -from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, JobMemberSerializer - from posts.models import Post -from rest_framework import viewsets -#from rest_framework import permissions - import logging logger = logging.getLogger(__name__) @@ -119,52 +113,3 @@ def profile_view(request, member_id=None): } return render(request, 'members/member.html', context) - - -class MemberViewSet(viewsets.ModelViewSet): - """ - API endpoint that allows users to be viewed or edited. - """ - queryset = Member.all_members.order_by('nickname') - serializer_class = MemberSerializer - - #permission_classes = [permissions.IsAuthenticated] - filter_backends = [DjangoFilterBackend] - filterset_fields = ['nickname','mailaccount'] -# lookup_field = 'name' - - def pre_save(self, obj): - obj.image = self.request.FILES.get('image') - - -class JobGroupViewSet(viewsets.ModelViewSet): - """ - API endpoint that allows users to be viewed or edited. - """ - queryset = JobGroup.all_jobgroups.all() - serializer_class = JobGroupSerializer - - filter_backends = [DjangoFilterBackend] - filterset_fields = ['name','slug'] - #lookup_field = 'name' -# lookup_field = 'name' - -class JobViewSet(viewsets.ModelViewSet): - """ - API endpoint that allows users to be viewed or edited. - """ - queryset = Job.objects.all() - serializer_class = JobSerializer - filter_backends = [DjangoFilterBackend] - filterset_fields = ['name','slug'] - #lookup_field = 'slug' - -class JobMemberViewSet(viewsets.ModelViewSet): - """ - API endpoint that allows users to be viewed or edited. - """ - queryset = JobMember.objects.all() - serializer_class = JobMemberSerializer - filter_backends = [DjangoFilterBackend] - filterset_fields = ['member','job','job_role','job_start'] - #lookup_field = 'nickname' \ No newline at end of file diff --git a/fet2020/members/viewsets.py b/fet2020/members/viewsets.py new file mode 100644 index 00000000..27c1683f --- /dev/null +++ b/fet2020/members/viewsets.py @@ -0,0 +1,55 @@ +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import viewsets + +from .models import Member, JobMember, JobGroup, Job +from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, JobMemberSerializer + + +class MemberViewSet(viewsets.ModelViewSet): + """ + API endpoint that allows users to be viewed or edited. + """ + queryset = Member.all_members.order_by('nickname') + serializer_class = MemberSerializer + + #permission_classes = [permissions.IsAuthenticated] + filter_backends = [DjangoFilterBackend] + filterset_fields = ['nickname','mailaccount'] + #lookup_field = 'name' + + def pre_save(self, obj): + obj.image = self.request.FILES.get('image') + + +class JobGroupViewSet(viewsets.ModelViewSet): + """ + API endpoint that allows users to be viewed or edited. + """ + queryset = JobGroup.all_jobgroups.all() + serializer_class = JobGroupSerializer + + filter_backends = [DjangoFilterBackend] + filterset_fields = ['name','slug'] + #lookup_field = 'name' + + +class JobViewSet(viewsets.ModelViewSet): + """ + API endpoint that allows users to be viewed or edited. + """ + queryset = Job.objects.all() + serializer_class = JobSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['name','slug'] + #lookup_field = 'slug' + + +class JobMemberViewSet(viewsets.ModelViewSet): + """ + API endpoint that allows users to be viewed or edited. + """ + queryset = JobMember.objects.all() + serializer_class = JobMemberSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['member','job','job_role','job_start'] + #lookup_field = 'nickname' diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index 2481bf09..5b6c4f27 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -1,13 +1,11 @@ from collections import deque import logging -from rest_framework import viewsets from taggit.models import Tag from django.shortcuts import render from django.http import HttpResponse, JsonResponse, HttpResponseServerError from django.utils.text import slugify from django.utils import timezone -from django_filters.rest_framework import DjangoFilterBackend from documents.api import get_pad_link from documents.etherpadlib import add_ep_cookie @@ -15,7 +13,8 @@ from members.models import Member, JobMember from .models import Post, FetMeeting -from .serializers import PostSerializer + + logger = logging.getLogger(__name__) @@ -196,19 +195,3 @@ def get_next_dict(post=None): break return d - - -class PostViewSet(viewsets.ModelViewSet): - """ - API endpoint that allows users to be viewed or edited. - """ - - queryset = Post.objects.all().order_by("-public_date") - serializer_class = PostSerializer - # permission_classes = [permissions.IsAuthenticated] - filter_backends = [DjangoFilterBackend] - filterset_fields = ["legacy_id", "slug", "legacy_rubrik_id"] - lookup_field = "slug" - - def pre_save(self, obj): - obj.image = self.request.FILES.get("image") diff --git a/fet2020/posts/viewsets.py b/fet2020/posts/viewsets.py new file mode 100644 index 00000000..90a87ea2 --- /dev/null +++ b/fet2020/posts/viewsets.py @@ -0,0 +1,21 @@ +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import viewsets + +from .models import Post, FetMeeting +from .serializers import PostSerializer + + +class PostViewSet(viewsets.ModelViewSet): + """ + API endpoint that allows users to be viewed or edited. + """ + + queryset = Post.objects.all().order_by("-public_date") + serializer_class = PostSerializer + # permission_classes = [permissions.IsAuthenticated] + filter_backends = [DjangoFilterBackend] + filterset_fields = ["legacy_id", "slug", "legacy_rubrik_id"] + lookup_field = "slug" + + def pre_save(self, obj): + obj.image = self.request.FILES.get("image") From 7b650a1c7fd867a994d2bd2aea108e68bc2441b7 Mon Sep 17 00:00:00 2001 From: Patrick Date: Wed, 13 Jan 2021 13:34:26 +0000 Subject: [PATCH 3/6] update requirements --- fet2020/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fet2020/requirements.txt b/fet2020/requirements.txt index c3e5fcb5..b00d74f9 100644 --- a/fet2020/requirements.txt +++ b/fet2020/requirements.txt @@ -1,4 +1,4 @@ -django==3.1.4 +django==3.1.5 django-ckeditor==6.0.0 django-crontab==0.7.1 django-environ==0.4.5 From 9ac9cd7b4f9c11518073747d8ba436d4108b426f Mon Sep 17 00:00:00 2001 From: Patrick Date: Thu, 14 Jan 2021 11:32:20 +0000 Subject: [PATCH 4/6] fix spelling --- fet2020/templates/home.html | 2 +- fet2020/templates/posts/fet_calendar.ics | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fet2020/templates/home.html b/fet2020/templates/home.html index 9661e9d3..951b2834 100644 --- a/fet2020/templates/home.html +++ b/fet2020/templates/home.html @@ -58,7 +58,7 @@ {% for post in events %} {% include 'posts/partials/_date_box.html' %} {% endfor %} - ICS Kalendar + FET-Ka­len­der abonnieren: ICS Ka­len­der diff --git a/fet2020/templates/posts/fet_calendar.ics b/fet2020/templates/posts/fet_calendar.ics index 4c4f71cf..792b19c2 100644 --- a/fet2020/templates/posts/fet_calendar.ics +++ b/fet2020/templates/posts/fet_calendar.ics @@ -25,7 +25,7 @@ UID:{{event.id}} ORGANIZER;CN="Fachschaft Elektrotechnik":MAILTO:service@fet.at LOCATION:Vienna SUMMARY:{{ event.title }} -DESCRIPTION: {{ request.scheme }}://{{ request.get_host }}{{ event.url }} {{ even.title }} +DESCRIPTION:{{ request.scheme }}://{{ request.get_host }}{{ event.url }} {{ even.title }} CLASS:PUBLIC DTSTART;TZID=Europe/Vienna:{{ event.event_start|date:'Ymd' }}T{{ event.event_start|time:'His' }} DTEND;TZID=Europe/Vienna:{{ event.event_end|date:'Ymd' }}T{{ event.event_end|time:'His' }} From 2e2bf603b8ce063e638e0552d5c76dc8838c04cb Mon Sep 17 00:00:00 2001 From: Patrick Date: Thu, 14 Jan 2021 11:55:57 +0000 Subject: [PATCH 5/6] add redirect to current page after login --- fet2020/authentications/views.py | 6 +++++- fet2020/templates/layout.html | 10 +++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/fet2020/authentications/views.py b/fet2020/authentications/views.py index bbf8b0a3..2c9cc80e 100644 --- a/fet2020/authentications/views.py +++ b/fet2020/authentications/views.py @@ -25,7 +25,11 @@ def loginPage(request): user = User.objects.create_user(auth_user.lower()) login(request, user) - return redirect('home') + + try: + return redirect(request.GET.get('next')) + except: + return redirect('home') else: messages.info(request, 'username or password is incorrect') diff --git a/fet2020/templates/layout.html b/fet2020/templates/layout.html index c82f2b55..57f941b5 100644 --- a/fet2020/templates/layout.html +++ b/fet2020/templates/layout.html @@ -50,19 +50,19 @@ footer {
From bdd36c08f8610c2849f6bf44c46246883c081bc3 Mon Sep 17 00:00:00 2001 From: Patrick Date: Thu, 14 Jan 2021 16:22:06 +0000 Subject: [PATCH 6/6] cleanups --- fet2020/fet2020/middleware.py | 22 ---------------------- fet2020/fet2020/settings.py | 2 -- 2 files changed, 24 deletions(-) diff --git a/fet2020/fet2020/middleware.py b/fet2020/fet2020/middleware.py index 4a638721..e69de29b 100644 --- a/fet2020/fet2020/middleware.py +++ b/fet2020/fet2020/middleware.py @@ -1,22 +0,0 @@ -# from django.contrib.auth.models import User -from django.contrib.auth.middleware import RemoteUserMiddleware -# import django -# import logging -# logger=logging.getLogger("django.request") - - -class FETHeaderMiddleware(RemoteUserMiddleware): - header = "Remote-User" - - def process_request(self, request): - request.META[self.header] = request.META.get( - self.header, - request.headers.get(self.header, None) - ) - # logger = logging.getLogger(__name__) - super().process_request(request) - # logger.info('User: ' + str(request.user)) - if request.user.is_authenticated: - request.user.is_admin = True - request.user.is_superuser = True - request.user.is_staff = True diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index 4b834e78..3dc57c3b 100644 --- a/fet2020/fet2020/settings.py +++ b/fet2020/fet2020/settings.py @@ -89,7 +89,6 @@ MIDDLEWARE = [ 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'fet2020.middleware.FETHeaderMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] @@ -141,7 +140,6 @@ else: AUTHENTICATION_BACKENDS = [ - # 'django.contrib.auth.backends.RemoteUserBackend', 'django.contrib.auth.backends.ModelBackend', ]