diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index db7aea4a..5aefc40f 100644 --- a/fet2020/fet2020/settings.py +++ b/fet2020/fet2020/settings.py @@ -42,7 +42,8 @@ INSTALLED_APPS = [ 'taggit', 'ckeditor', 'ckeditor_uploader', - 'rest_framework' + 'rest_framework', + 'django_filters' ] MIDDLEWARE = [ @@ -139,4 +140,22 @@ MEDIA_URL='/files/' -TAGGIT_FORCE_LOWERCASE = True \ No newline at end of file +TAGGIT_FORCE_LOWERCASE = True + +CKEDITOR_CONFIGS = { + 'default': { + 'stylesSet': [ + { + "name": 'Überschrift 2', + "element": 'h2', + "attributes": {}, + }, + { + "name": 'Code', + "element": 'code', + "attributes": {"class": "code-block"}, + }, + ], + } + +} \ No newline at end of file diff --git a/fet2020/fet2020/views.py b/fet2020/fet2020/views.py index cb9b6527..df60d7fe 100644 --- a/fet2020/fet2020/views.py +++ b/fet2020/fet2020/views.py @@ -5,7 +5,7 @@ from posts.models import Post def index(request): - posts=deque(Post.objects.all()) + posts=deque(Post.news_objects.all()) l=len(posts) if l>=1: diff --git a/fet2020/posts/admin.py b/fet2020/posts/admin.py index bd0b2727..3a528abe 100644 --- a/fet2020/posts/admin.py +++ b/fet2020/posts/admin.py @@ -6,5 +6,8 @@ from .forms import MyPostForm class MyPostAdmin(admin.ModelAdmin): form = MyPostForm model = Post - + + def save_model(self, request, obj, form, change): + obj.author = request.user + super().save_model(request, obj, form, change) admin.site.register(Post,MyPostAdmin) \ No newline at end of file diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 9e218acf..c64efffd 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -9,6 +9,14 @@ import django import uuid import re from rest_framework import serializers +from django.db.models import Q + +class PostManager(models.Manager): + def get_queryset(self): + return super().get_queryset() +class NewsPostManager(models.Manager): + def get_queryset(self): + return super().get_queryset().filter(~Q(is_fetsitzung=True)) # Create your models here. class Post(models.Model): @@ -20,7 +28,7 @@ class Post(models.Model): slug=models.SlugField(unique=True,null=True,blank=True) # Slug = Text Basierter url bestandteil zb Fetsitzung 22.1.2020 --> fetsitzung_22_1_2020 für Url body=models.TextField(null=True, blank=True) # Body Text Artikel Text soll später mit WYSIWG Editor bearbeitet werden image=models.ImageField(null=True,blank=True) # Ein Haupt Bild für den Post - author=models.ForeignKey(User,on_delete=models.SET_NULL, null=True) # Wer hat das geschrieben + author=models.ForeignKey(User,on_delete=models.SET_NULL, null=True,blank=True) # Wer hat das geschrieben tags=TaggableManager(blank=True) # Tags public_date=models.DateField('date published',null=True,blank=True, default=django.utils.timezone.now) # Datum ab dem etwas öffentlich sein soll @@ -37,19 +45,21 @@ class Post(models.Model): # Dokumente v.a. fuer Sitzungen has_protocol = models.BooleanField(default=False) has_agenda = models.BooleanField(default=False)# - protocol_key=models.CharField(max_length=200, null=True,blank=True) - agenda_key=models.CharField(max_length=200, null=True,blank=True) + protocol_key = models.CharField(max_length=200, null=True,blank=True) + agenda_key = models.CharField(max_length=200, null=True,blank=True) # TimeStamps date_modified=models.DateTimeField(auto_now=True) date_created=models.DateTimeField(auto_now_add=True) - + objects=PostManager() + news_objects=NewsPostManager() - def get_tags(self): + """Returns assigned tags as a comma seperated list.""" return ",".join(self.tags.names()) def imageurl(self): + """ returns the url to the image""" if self.image: return self.image.url else: @@ -57,24 +67,28 @@ class Post(models.Model): def key(self): return self.slug or self.id + @property def url(self): return reverse('posts.show', kwargs={"id":self.slug}) + def save(self, *args, **kwargs): if self.id is None and (self.slug is None or self.slug ==""): - self.slug=slugify(self.title) - + self.slug=slugify(self.public_date.date())+"-"+slugify(self.title) super().save(*args, **kwargs) self.tags.set(*re.findall(r'\#([\d\w]+)', str(self.subtitle)),*re.findall(r'\#([\d\w]+)', str(self.title))) - + + def __str__(self): + return "Post (%s, %s): %s " %(self.slug, self.public_date.strftime("%d.%m.%Y"), self.title) + class PostSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Post - fields = ['slug','title', 'body','url', 'legacy_id'] + fields = ['slug','title', 'body','url', 'legacy_id','image', 'event_start','event_end','is_fetsitzung'] diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index 69cc1e7c..8049e9f2 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -7,6 +7,8 @@ from taggit.models import Tag from rest_framework import viewsets from rest_framework import permissions +from django_filters.rest_framework import DjangoFilterBackend + # Create your views here. def index(request): posts=deque(Post.objects.all()) @@ -28,5 +30,9 @@ class PostViewSet(viewsets.ModelViewSet): """ queryset = Post.objects.all().order_by('-public_date') serializer_class = PostSerializer - permission_classes = [permissions.IsAuthenticated] - lookup_field='slug' \ No newline at end of file + #permission_classes = [permissions.IsAuthenticated] + filter_backends = [DjangoFilterBackend] + filterset_fields = ['legacy_id', 'slug','legacy_rubrik_id'] + lookup_field='slug' + def pre_save(self, obj): + obj.image = self.request.FILES.get('image') \ No newline at end of file