Skip to content

Commit

Permalink
Change author from one to many
Browse files Browse the repository at this point in the history
  • Loading branch information
jonasdeluna committed Mar 16, 2023
1 parent efff81b commit 56d7da9
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 5 deletions.
20 changes: 20 additions & 0 deletions lego/apps/articles/migrations/0011_article_authors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 4.0.9 on 2023-03-16 09:08

from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("articles", "0010_alter_article_can_edit_groups_and_more"),
]

operations = [
migrations.AddField(
model_name="article",
name="authors",
field=models.ManyToManyField(to=settings.AUTH_USER_MODEL),
),
]
4 changes: 3 additions & 1 deletion lego/apps/articles/models.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from django.conf import settings
from django.db.models import CharField
from django.db.models import CharField, ManyToManyField

from lego.apps.content.models import Content
from lego.apps.files.models import FileField
from lego.apps.permissions.models import ObjectPermissionsModel
from lego.apps.users.models import User
from lego.utils.models import BasisModel
from lego.utils.youtube_validator import youtube_validator

Expand All @@ -13,6 +14,7 @@ class Article(Content, BasisModel, ObjectPermissionsModel):
youtube_url = CharField(
max_length=200, default="", validators=[youtube_validator], blank=True
)
authors = ManyToManyField(User)

def save(self, *args, **kwargs):
if self.pinned:
Expand Down
12 changes: 8 additions & 4 deletions lego/apps/articles/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
from lego.apps.content.fields import ContentSerializerField
from lego.apps.files.fields import ImageField
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 @@ -14,7 +16,6 @@


class DetailedArticleSerializer(TagSerializerMixin, BasisModelSerializer):
author = PublicUserSerializer(read_only=True, source="created_by")
comments = CommentSerializer(read_only=True, many=True)
cover = ImageField(required=False, options={"height": 500})
cover_placeholder = ImageField(
Expand All @@ -23,6 +24,9 @@ class DetailedArticleSerializer(TagSerializerMixin, BasisModelSerializer):
content_target = CharField(read_only=True)
content = ContentSerializerField(source="text")
reactions_grouped = serializers.SerializerMethodField()
authors = PublicUserField(
queryset=User.objects.all(), allow_null=False, required=False, many=True
)

def get_reactions_grouped(self, obj):
user = self.context["request"].user
Expand All @@ -35,7 +39,7 @@ class Meta:
"title",
"cover",
"cover_placeholder",
"author",
"authors",
"description",
"comments",
"content_target",
Expand Down Expand Up @@ -82,7 +86,7 @@ class PublicArticleSerializer(TagSerializerMixin, BasisModelSerializer):
cover_placeholder = ImageField(
source="cover", required=False, options={"height": 30, "filters": ["blur(20)"]}
)
author = PublicUserSerializer(read_only=True, source="created_by")
authors = PublicUserSerializer(many=True)

class Meta:
model = Article
Expand All @@ -91,7 +95,7 @@ class Meta:
"title",
"cover",
"cover_placeholder",
"author",
"authors",
"description",
"tags",
"created_at",
Expand Down

0 comments on commit 56d7da9

Please sign in to comment.