Skip to content

Commit

Permalink
added filter for minute
Browse files Browse the repository at this point in the history
  • Loading branch information
MadsNyl committed Apr 8, 2024
1 parent 0118de2 commit f3af566
Show file tree
Hide file tree
Showing 10 changed files with 80 additions and 5 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@

## Neste versjon

## Versjon 2023.04.08
-**Codex** Index brukere kan nå opprette dokumenter og møtereferater i Codex.

## Versjon 2023.03.11
- 🦟 **Vipps** Brukere som kommer fra venteliste vil nå få en payment countdown startet, slik at de blir kastet ut hvis de ikke betaler.
-**Venteliste** Brukere vil nå se sin reelle ventelisteplass som tar hensyn til prioriteringer.
Expand Down
1 change: 0 additions & 1 deletion app/content/admin/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
admin.site.register(models.ShortLink)
admin.site.register(models.Toddel)
admin.site.register(models.QRCode)
admin.site.register(models.Minute)


@admin.register(models.Strike)
Expand Down
5 changes: 5 additions & 0 deletions app/content/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,8 @@ class CategoryEnum(ChoiceEnum):
KURS = "Kurs"
ANNET = "Annet"
FADDERUKA = "Fadderuka"


class MinuteTagEnum(models.TextChoices):
MINUTE = "Møtereferat"
DOCUMENT = "Dokument"
1 change: 1 addition & 0 deletions app/content/filters/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from app.content.filters.cheatsheet import CheatsheetFilter
from app.content.filters.event import EventFilter
from app.content.filters.user import UserFilter
from app.content.filters.minute import MinuteFilter
15 changes: 15 additions & 0 deletions app/content/filters/minute.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from django_filters.rest_framework import FilterSet, OrderingFilter

from app.content.models import Minute


class MinuteFilter(FilterSet):
"""Filters minutes"""

ordering = OrderingFilter(
fields=("created_at", "updated_at", "title", "author", "tag")
)

class Meta:
model = Minute
fields = ["author", "title", "tag"]
22 changes: 22 additions & 0 deletions app/content/migrations/0060_minute_tag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 4.2.5 on 2024-04-08 19:44

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("content", "0059_minute"),
]

operations = [
migrations.AddField(
model_name="minute",
name="tag",
field=models.CharField(
choices=[("Møtereferat", "Minute"), ("Dokument", "Document")],
default="Møtereferat",
max_length=50,
),
),
]
4 changes: 4 additions & 0 deletions app/content/models/minute.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from app.common.enums import AdminGroup
from app.common.permissions import BasePermissionModel
from app.content.enums import MinuteTagEnum
from app.content.models.user import User
from app.util.models import BaseModel

Expand All @@ -12,6 +13,9 @@ class Minute(BaseModel, BasePermissionModel):

title = models.CharField(max_length=200)
content = models.TextField(default="", blank=True)
tag = models.CharField(
max_length=50, choices=MinuteTagEnum.choices, default=MinuteTagEnum.MINUTE
)
author = models.ForeignKey(
User,
blank=True,
Expand Down
1 change: 1 addition & 0 deletions app/content/serializers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,5 @@
MinuteCreateSerializer,
MinuteSerializer,
MinuteUpdateSerializer,
MinuteListSerializer,
)
14 changes: 11 additions & 3 deletions app/content/serializers/minute.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class Meta:
class MinuteCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Minute
fields = ("title", "content")
fields = ("title", "content", "tag")

def create(self, validated_data):
author = self.context["request"].user
Expand All @@ -25,13 +25,21 @@ class MinuteSerializer(serializers.ModelSerializer):

class Meta:
model = Minute
fields = ("id", "title", "content", "author", "created_at", "updated_at")
fields = ("id", "title", "content", "author", "created_at", "updated_at", "tag")


class MinuteUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Minute
fields = ("id", "title", "content")
fields = ("id", "title", "content", "tag")

def update(self, instance, validated_data):
return super().update(instance, validated_data)


class MinuteListSerializer(serializers.ModelSerializer):
author = SimpleUserSerializer(read_only=True)

class Meta:
model = Minute
fields = ("id", "title", "author", "created_at", "updated_at", "tag")
19 changes: 18 additions & 1 deletion app/content/views/minute.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
from rest_framework import status
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters, status
from rest_framework.response import Response

from app.common.pagination import BasePagination
from app.common.permissions import BasicViewPermission
from app.common.viewsets import BaseViewSet
from app.content.filters import MinuteFilter
from app.content.models import Minute
from app.content.serializers import (
MinuteCreateSerializer,
MinuteListSerializer,
MinuteSerializer,
MinuteUpdateSerializer,
)
Expand All @@ -18,6 +21,20 @@ class MinuteViewSet(BaseViewSet):
pagination_class = BasePagination
queryset = Minute.objects.all()

filter_backends = [DjangoFilterBackend, filters.SearchFilter]
filterset_class = MinuteFilter
search_fields = [
"title",
"author__first_name",
"author__last_name",
"author__user_id",
]

def get_serializer_class(self):
if hasattr(self, "action") and self.action == "list":
return MinuteListSerializer
return super().get_serializer_class()

def create(self, request, *args, **kwargs):
data = request.data
serializer = MinuteCreateSerializer(data=data, context={"request": request})
Expand Down

0 comments on commit f3af566

Please sign in to comment.