save, news filter

This commit is contained in:
2020-05-15 08:24:02 +00:00
parent bc81aec476
commit 26db8429e7
5 changed files with 57 additions and 15 deletions

View File

@@ -42,7 +42,8 @@ INSTALLED_APPS = [
'taggit',
'ckeditor',
'ckeditor_uploader',
'rest_framework'
'rest_framework',
'django_filters'
]
MIDDLEWARE = [
@@ -140,3 +141,21 @@ MEDIA_URL='/files/'
TAGGIT_FORCE_LOWERCASE = True
CKEDITOR_CONFIGS = {
'default': {
'stylesSet': [
{
"name": 'Überschrift 2',
"element": 'h2',
"attributes": {},
},
{
"name": 'Code',
"element": 'code',
"attributes": {"class": "code-block"},
},
],
}
}

View File

@@ -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:

View File

@@ -7,4 +7,7 @@ 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)

View File

@@ -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
@@ -43,13 +51,15 @@ class Post(models.Model):
# 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']

View File

@@ -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]
#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')