Re-order views and serializers
This commit is contained in:
+48
-48
@@ -2,6 +2,14 @@ from rest_framework import serializers
|
|||||||
from webapp.models import *
|
from webapp.models import *
|
||||||
|
|
||||||
|
|
||||||
|
class SavedQuestionsSerializer(serializers.ModelSerializer):
|
||||||
|
questions = serializers.JSONField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = TemplateQuestion
|
||||||
|
fields = ("id", "name", "questions")
|
||||||
|
|
||||||
|
|
||||||
class SignupSerializer(serializers.ModelSerializer):
|
class SignupSerializer(serializers.ModelSerializer):
|
||||||
signupForm_id = serializers.PrimaryKeyRelatedField(
|
signupForm_id = serializers.PrimaryKeyRelatedField(
|
||||||
source="signupForm", queryset=SignupForm.objects.all()
|
source="signupForm", queryset=SignupForm.objects.all()
|
||||||
@@ -68,6 +76,46 @@ class SignupFormSerializer(serializers.ModelSerializer):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TagSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Tag
|
||||||
|
fields = ("id", "slug", "name_fi", "name_en", "icon")
|
||||||
|
|
||||||
|
|
||||||
|
class FeedSerializer(serializers.ModelSerializer):
|
||||||
|
tag_id = serializers.PrimaryKeyRelatedField(
|
||||||
|
many=True, source="tags", queryset=Tag.objects.all()
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Feed
|
||||||
|
fields = (
|
||||||
|
"id",
|
||||||
|
"tags",
|
||||||
|
"tag_id",
|
||||||
|
"visible",
|
||||||
|
"image",
|
||||||
|
"title_fi",
|
||||||
|
"title_en",
|
||||||
|
"description_fi",
|
||||||
|
"description_en",
|
||||||
|
"content_fi",
|
||||||
|
"content_en",
|
||||||
|
"publish_time",
|
||||||
|
"autohide",
|
||||||
|
"autohide_enabled",
|
||||||
|
)
|
||||||
|
depth = 1
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
tags_data = validated_data.pop("tags")
|
||||||
|
feed = Feed.objects.create(**validated_data)
|
||||||
|
for tag in tags_data:
|
||||||
|
feed.tags.add(tag)
|
||||||
|
feed.save()
|
||||||
|
return feed
|
||||||
|
|
||||||
|
|
||||||
class EventSerializer(serializers.ModelSerializer):
|
class EventSerializer(serializers.ModelSerializer):
|
||||||
signupForm = SignupFormSerializer(
|
signupForm = SignupFormSerializer(
|
||||||
source="filtered_signup_forms",
|
source="filtered_signup_forms",
|
||||||
@@ -134,54 +182,6 @@ class EventSerializer(serializers.ModelSerializer):
|
|||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
class SavedQuestionsSerializer(serializers.ModelSerializer):
|
|
||||||
questions = serializers.JSONField()
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = TemplateQuestion
|
|
||||||
fields = ("id", "name", "questions")
|
|
||||||
|
|
||||||
|
|
||||||
class TagSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = Tag
|
|
||||||
fields = ("id", "slug", "name_fi", "name_en", "icon")
|
|
||||||
|
|
||||||
|
|
||||||
class FeedSerializer(serializers.ModelSerializer):
|
|
||||||
tag_id = serializers.PrimaryKeyRelatedField(
|
|
||||||
many=True, source="tags", queryset=Tag.objects.all()
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = Feed
|
|
||||||
fields = (
|
|
||||||
"id",
|
|
||||||
"tags",
|
|
||||||
"tag_id",
|
|
||||||
"visible",
|
|
||||||
"image",
|
|
||||||
"title_fi",
|
|
||||||
"title_en",
|
|
||||||
"description_fi",
|
|
||||||
"description_en",
|
|
||||||
"content_fi",
|
|
||||||
"content_en",
|
|
||||||
"publish_time",
|
|
||||||
"autohide",
|
|
||||||
"autohide_enabled",
|
|
||||||
)
|
|
||||||
depth = 1
|
|
||||||
|
|
||||||
def create(self, validated_data):
|
|
||||||
tags_data = validated_data.pop("tags")
|
|
||||||
feed = Feed.objects.create(**validated_data)
|
|
||||||
for tag in tags_data:
|
|
||||||
feed.tags.add(tag)
|
|
||||||
feed.save()
|
|
||||||
return feed
|
|
||||||
|
|
||||||
|
|
||||||
class JobAdSerializer(serializers.ModelSerializer):
|
class JobAdSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = JobAd
|
model = JobAd
|
||||||
|
|||||||
+82
-82
@@ -46,6 +46,49 @@ class RootView(routers.APIRootView):
|
|||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
|
|
||||||
|
|
||||||
|
class TagsViewSet(ReadOnlyModelViewSet):
|
||||||
|
queryset = Tag.objects.all()
|
||||||
|
serializer_class = TagSerializer
|
||||||
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
|
|
||||||
|
|
||||||
|
class FeedViewSet(ModelViewSet):
|
||||||
|
queryset = Feed.objects.filter(deleted=False)
|
||||||
|
serializer_class = FeedSerializer
|
||||||
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
|
filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
|
||||||
|
filter_fields = ("id", "tags", "visible")
|
||||||
|
search_fields = ("id", "tags", "visible")
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
if self.request.user.is_authenticated:
|
||||||
|
return Feed.objects.filter(deleted=False).order_by("-publish_time")
|
||||||
|
else:
|
||||||
|
objs = Feed.objects.filter(deleted=False, visible=True).order_by(
|
||||||
|
"-publish_time"
|
||||||
|
)
|
||||||
|
|
||||||
|
# TODO: Bad filtering. Rewrite!
|
||||||
|
result_ids = []
|
||||||
|
for obj in objs:
|
||||||
|
if obj.autohide_enabled:
|
||||||
|
if obj.autohide > timezone.now():
|
||||||
|
result_ids.append(obj.id)
|
||||||
|
else:
|
||||||
|
result_ids.append(obj.id)
|
||||||
|
|
||||||
|
return Feed.objects.filter(id__in=result_ids).order_by("-publish_time")
|
||||||
|
|
||||||
|
def destroy(self, request, pk=None, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
post = self.get_object()
|
||||||
|
post.deleted = True
|
||||||
|
post.save()
|
||||||
|
return JsonResponse(status=200, data={"message": "OK"})
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
return JsonResponse(status=404, data={"error": f"Post {pk} not found"})
|
||||||
|
|
||||||
|
|
||||||
class EventViewSet(ModelViewSet):
|
class EventViewSet(ModelViewSet):
|
||||||
queryset = Event.objects.filter(deleted=False)
|
queryset = Event.objects.filter(deleted=False)
|
||||||
ordering = ["start_time"]
|
ordering = ["start_time"]
|
||||||
@@ -122,6 +165,45 @@ class EventViewSet(ModelViewSet):
|
|||||||
return JsonResponse(status=404, data={"error": f"Event {pk} not found"})
|
return JsonResponse(status=404, data={"error": f"Event {pk} not found"})
|
||||||
|
|
||||||
|
|
||||||
|
class JobAdViewSet(ModelViewSet):
|
||||||
|
queryset = JobAd.objects.filter(deleted=False)
|
||||||
|
serializer_class = JobAdSerializer
|
||||||
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
if self.request.user.is_authenticated:
|
||||||
|
return JobAd.objects.filter(deleted=False)
|
||||||
|
return JobAd.objects.filter(
|
||||||
|
deleted=False, visible=True, autohide__gt=timezone.now()
|
||||||
|
)
|
||||||
|
|
||||||
|
def destroy(self, request, pk=None, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
ad = self.get_object()
|
||||||
|
ad.deleted = True
|
||||||
|
ad.save()
|
||||||
|
return JsonResponse(status=200, data={"message": "OK"})
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
return JsonResponse(status=404, data={"error": f"Job Ad {pk} not found"})
|
||||||
|
|
||||||
|
|
||||||
|
class SavedQuestionsViewSet(ModelViewSet):
|
||||||
|
queryset = TemplateQuestion.objects.filter(deleted=False)
|
||||||
|
serializer_class = SavedQuestionsSerializer
|
||||||
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
|
|
||||||
|
def destroy(self, request, pk=None, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
question = self.get_object()
|
||||||
|
question.deleted = True
|
||||||
|
question.save()
|
||||||
|
return JsonResponse(status=200, data={"message": "OK"})
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
return JsonResponse(
|
||||||
|
status=404, data={"error": f"Template question {pk} not found"}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SignupFormViewSet(ModelViewSet):
|
class SignupFormViewSet(ModelViewSet):
|
||||||
queryset = SignupForm.objects.filter(deleted=False)
|
queryset = SignupForm.objects.filter(deleted=False)
|
||||||
ordering = ["start_time"]
|
ordering = ["start_time"]
|
||||||
@@ -264,88 +346,6 @@ class SignupViewSet(ModelViewSet):
|
|||||||
return JsonResponse(status=404, data={"error": f"Signup {pk} not found"})
|
return JsonResponse(status=404, data={"error": f"Signup {pk} not found"})
|
||||||
|
|
||||||
|
|
||||||
class SavedQuestionsViewSet(ModelViewSet):
|
|
||||||
queryset = TemplateQuestion.objects.filter(deleted=False)
|
|
||||||
serializer_class = SavedQuestionsSerializer
|
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
|
||||||
|
|
||||||
def destroy(self, request, pk=None, *args, **kwargs):
|
|
||||||
try:
|
|
||||||
question = self.get_object()
|
|
||||||
question.deleted = True
|
|
||||||
question.save()
|
|
||||||
return JsonResponse(status=200, data={"message": "OK"})
|
|
||||||
except ObjectDoesNotExist:
|
|
||||||
return JsonResponse(
|
|
||||||
status=404, data={"error": f"Template question {pk} not found"}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class FeedViewSet(ModelViewSet):
|
|
||||||
queryset = Feed.objects.filter(deleted=False)
|
|
||||||
serializer_class = FeedSerializer
|
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
|
||||||
filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
|
|
||||||
filter_fields = ("id", "tags", "visible")
|
|
||||||
search_fields = ("id", "tags", "visible")
|
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
if self.request.user.is_authenticated:
|
|
||||||
return Feed.objects.filter(deleted=False).order_by("-publish_time")
|
|
||||||
else:
|
|
||||||
objs = Feed.objects.filter(deleted=False, visible=True).order_by(
|
|
||||||
"-publish_time"
|
|
||||||
)
|
|
||||||
|
|
||||||
# TODO: Bad filtering. Rewrite!
|
|
||||||
result_ids = []
|
|
||||||
for obj in objs:
|
|
||||||
if obj.autohide_enabled:
|
|
||||||
if obj.autohide > timezone.now():
|
|
||||||
result_ids.append(obj.id)
|
|
||||||
else:
|
|
||||||
result_ids.append(obj.id)
|
|
||||||
|
|
||||||
return Feed.objects.filter(id__in=result_ids).order_by("-publish_time")
|
|
||||||
|
|
||||||
def destroy(self, request, pk=None, *args, **kwargs):
|
|
||||||
try:
|
|
||||||
post = self.get_object()
|
|
||||||
post.deleted = True
|
|
||||||
post.save()
|
|
||||||
return JsonResponse(status=200, data={"message": "OK"})
|
|
||||||
except ObjectDoesNotExist:
|
|
||||||
return JsonResponse(status=404, data={"error": f"Post {pk} not found"})
|
|
||||||
|
|
||||||
|
|
||||||
class TagsViewSet(ReadOnlyModelViewSet):
|
|
||||||
queryset = Tag.objects.all()
|
|
||||||
serializer_class = TagSerializer
|
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
|
||||||
|
|
||||||
|
|
||||||
class JobAdViewSet(ModelViewSet):
|
|
||||||
queryset = JobAd.objects.filter(deleted=False)
|
|
||||||
serializer_class = JobAdSerializer
|
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
if self.request.user.is_authenticated:
|
|
||||||
return JobAd.objects.filter(deleted=False)
|
|
||||||
return JobAd.objects.filter(
|
|
||||||
deleted=False, visible=True, autohide__gt=timezone.now()
|
|
||||||
)
|
|
||||||
|
|
||||||
def destroy(self, request, pk=None, *args, **kwargs):
|
|
||||||
try:
|
|
||||||
ad = self.get_object()
|
|
||||||
ad.deleted = True
|
|
||||||
ad.save()
|
|
||||||
return JsonResponse(status=200, data={"message": "OK"})
|
|
||||||
except ObjectDoesNotExist:
|
|
||||||
return JsonResponse(status=404, data={"error": f"Job Ad {pk} not found"})
|
|
||||||
|
|
||||||
|
|
||||||
@require_http_methods(["GET"])
|
@require_http_methods(["GET"])
|
||||||
def nginx_jwt_resp(request, *args, **kwargs):
|
def nginx_jwt_resp(request, *args, **kwargs):
|
||||||
accessKey = request.COOKIES.get("jwt_access", None)
|
accessKey = request.COOKIES.get("jwt_access", None)
|
||||||
|
|||||||
Reference in New Issue
Block a user