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 *
|
||||
|
||||
|
||||
class SavedQuestionsSerializer(serializers.ModelSerializer):
|
||||
questions = serializers.JSONField()
|
||||
|
||||
class Meta:
|
||||
model = TemplateQuestion
|
||||
fields = ("id", "name", "questions")
|
||||
|
||||
|
||||
class SignupSerializer(serializers.ModelSerializer):
|
||||
signupForm_id = serializers.PrimaryKeyRelatedField(
|
||||
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):
|
||||
signupForm = SignupFormSerializer(
|
||||
source="filtered_signup_forms",
|
||||
@@ -134,54 +182,6 @@ class EventSerializer(serializers.ModelSerializer):
|
||||
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 Meta:
|
||||
model = JobAd
|
||||
|
||||
+82
-82
@@ -46,6 +46,49 @@ class RootView(routers.APIRootView):
|
||||
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):
|
||||
queryset = Event.objects.filter(deleted=False)
|
||||
ordering = ["start_time"]
|
||||
@@ -122,6 +165,45 @@ class EventViewSet(ModelViewSet):
|
||||
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):
|
||||
queryset = SignupForm.objects.filter(deleted=False)
|
||||
ordering = ["start_time"]
|
||||
@@ -264,88 +346,6 @@ class SignupViewSet(ModelViewSet):
|
||||
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"])
|
||||
def nginx_jwt_resp(request, *args, **kwargs):
|
||||
accessKey = request.COOKIES.get("jwt_access", None)
|
||||
|
||||
Reference in New Issue
Block a user