Skip to content

Commit

Permalink
Fix up and format
Browse files Browse the repository at this point in the history
  • Loading branch information
jonasdeluna committed Feb 23, 2024
1 parent a9b41a7 commit 0e7bd26
Show file tree
Hide file tree
Showing 11 changed files with 47 additions and 57 deletions.
3 changes: 1 addition & 2 deletions lego/api/urls.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
from django.conf import settings
from django.conf.urls import include
from .v1 import urlpatterns as v1_urlpatterns
from django.http import Http404, HttpResponseRedirect
from django.urls import re_path, resolve
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import RedirectView

from .v1 import router as v1
from .v1 import urlpatterns as v1_urlpatterns


@csrf_exempt
Expand Down
9 changes: 5 additions & 4 deletions lego/api/v1.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from rest_framework import routers
from django.urls import include, path
from rest_framework import routers

from lego.apps.articles.views import ArticlesViewSet
from lego.apps.comments.views import CommentViewSet
from lego.apps.companies.views import (
Expand Down Expand Up @@ -33,8 +34,8 @@
FollowEventViewSet,
FollowUserViewSet,
)
from lego.apps.forums.views import ForumsViewSet, ThreadViewSet
from lego.apps.forums.urls import urlpatterns as forums_urls
from lego.apps.forums.views import ForumsViewSet, ThreadViewSet
from lego.apps.frontpage.views import FrontpageViewSet
from lego.apps.gallery.views import GalleryPictureViewSet, GalleryViewSet
from lego.apps.ical.viewsets import ICalTokenViewset, ICalViewset
Expand Down Expand Up @@ -207,6 +208,6 @@
router.register(r"webhooks-stripe", StripeWebhook, basename="webhooks-stripe")

urlpatterns = [
path('', include(router.urls)),
path('forums/', include((forums_urls, 'forums'))),
path("", include(router.urls)),
path("forums/", include((forums_urls, "forums"))),
]
3 changes: 0 additions & 3 deletions lego/apps/forums/admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
from django.contrib import admin

# Register your models here.
18 changes: 0 additions & 18 deletions lego/apps/forums/migrations/0003_thread_sticky.py

This file was deleted.

5 changes: 1 addition & 4 deletions lego/apps/forums/models.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
from django.conf import settings
from django.db.models import CASCADE, ForeignKey, PositiveIntegerField
from django.db.models import CASCADE, ForeignKey

from lego.apps.content.models import Content
from lego.apps.forums.permissions import ForumPermissionHandler, ThreadPermissionHandler
from lego.apps.permissions.models import ObjectPermissionsModel
from lego.apps.users.models import User
from lego.utils.models import BasisModel


Expand All @@ -16,7 +14,6 @@ class Meta:

class Thread(Content, BasisModel, ObjectPermissionsModel):
forum = ForeignKey(Forum, on_delete=CASCADE, related_name="threads")
sticky = PositiveIntegerField(default=0, blank=True)

class Meta:
abstract = False
Expand Down
6 changes: 1 addition & 5 deletions lego/apps/forums/permissions.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
from django.db.models import Q

from lego.apps.permissions.constants import CREATE, DELETE, EDIT, LIST, VIEW
from lego.apps.permissions.permissions import PermissionHandler
from lego.apps.permissions.utils import get_permission_handler


class ForumPermissionHandler(PermissionHandler):
Expand All @@ -20,10 +17,9 @@ def has_perm(
check_keyword_permissions=True,
**kwargs
):

if perm == LIST:
return True

if not user.is_authenticated:
return False

Expand Down
19 changes: 11 additions & 8 deletions lego/apps/forums/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,7 @@

from lego.apps.comments.serializers import CommentSerializer
from lego.apps.content.fields import ContentSerializerField
from lego.apps.files.fields import ImageField
from lego.apps.forums.models import Forum, Thread
from lego.apps.polls.serializers import DetailedPollSerializer
from lego.apps.tags.serializers import TagSerializerMixin
from lego.apps.users.fields import PublicUserField
from lego.apps.users.models import User
from lego.apps.users.serializers.users import PublicUserSerializer
from lego.utils.serializers import (
BasisModelSerializer,
Expand All @@ -23,6 +18,7 @@ class DetailedThreadSerializer(BasisModelSerializer):
content_target = CharField(read_only=True)
content = ContentSerializerField(source="text", required=True)
sticky = serializers.IntegerField(default=0, required=False)

class Meta:
model = Thread
fields = (
Expand All @@ -34,7 +30,7 @@ class Meta:
"forum",
"created_by",
"content_target",
"sticky"
"sticky",
)


Expand Down Expand Up @@ -65,7 +61,15 @@ class DetailedForumSerializer(BasisModelSerializer):

class Meta:
model = Forum
fields = ("id", "title", "description", "created_at", "threads", "created_by", "content_target")
fields = (
"id",
"title",
"description",
"created_at",
"threads",
"created_by",
"content_target",
)


class DetailedAdminForumSerializer(
Expand All @@ -80,7 +84,6 @@ class Meta:


class PublicForumSerializer(BasisModelSerializer):

class Meta:
model = Forum
fields = (
Expand Down
5 changes: 0 additions & 5 deletions lego/apps/forums/tests.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import uuid

from django.urls import reverse
from rest_framework import status

Expand Down Expand Up @@ -168,6 +166,3 @@ def test_post_comment_authenticated_user(self):
}
response = self.client.post(get_comment_list_url(), comment_data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)


# Further tests for specific user roles, permissions on actions like editing or deleting threads/comments, etc., would follow a similar pattern.
22 changes: 19 additions & 3 deletions lego/apps/forums/urls.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,25 @@
# forums/urls.py

from django.urls import path
from .views import ThreadViewSet, ForumsViewSet

from .views import ThreadViewSet

urlpatterns = [
path('<int:forum_id>/threads/', ThreadViewSet.as_view({'get': 'list', 'post': 'create'}), name='forum-threads-list'),
path('<int:forum_id>/threads/<int:pk>/', ThreadViewSet.as_view({'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy'}), name='forum-thread-detail'),
path(
"<int:forum_id>/threads/",
ThreadViewSet.as_view({"get": "list", "post": "create"}),
name="forum-threads-list",
),
path(
"<int:forum_id>/threads/<int:pk>/",
ThreadViewSet.as_view(
{
"get": "retrieve",
"put": "update",
"patch": "partial_update",
"delete": "destroy",
}
),
name="forum-thread-detail",
),
]
6 changes: 2 additions & 4 deletions lego/apps/forums/views.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
from django.http import Http404
from django.shortcuts import get_object_or_404
from rest_framework import status, viewsets
from rest_framework import viewsets
from rest_framework.exceptions import NotAuthenticated, PermissionDenied
from rest_framework.response import Response

from lego.apps.forums.models import Forum, Thread
from lego.apps.forums.serializers import (
Expand All @@ -21,7 +20,6 @@ class ForumsViewSet(AllowedPermissionsMixin, viewsets.ModelViewSet):
queryset = Forum.objects.all()
ordering = "-created_at"
serializer_class = DetailedForumSerializer


def get_serializer_class(self):
if self.action == "list":
Expand Down Expand Up @@ -54,7 +52,7 @@ class ThreadViewSet(AllowedPermissionsMixin, viewsets.ModelViewSet):

def get_queryset(self):
queryset = super().get_queryset().select_related("created_by")
forum_id = self.kwargs.get('forum_id', None)
forum_id = self.kwargs.get("forum_id", None)
if forum_id:
queryset = queryset.filter(forum_id=forum_id)

Expand Down
8 changes: 7 additions & 1 deletion lego/utils/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,13 @@ def list(self, request):
site_meta = settings.SITE

# Allow non-logged in users to see these as well:
allow_anonymous_entities = ["events", "articles", "joblistings", "galleries", "forums"]
allow_anonymous_entities = [
"events",
"articles",
"joblistings",
"galleries",
"forums",
]

# Whereas these require that a user has keyword permissions:
permission_entities = {
Expand Down

0 comments on commit 0e7bd26

Please sign in to comment.