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

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