tag list
This commit is contained in:
@@ -7,8 +7,14 @@ from posts.models import Post
|
||||
def index(request):
|
||||
posts=deque(Post.news_objects.all())
|
||||
l=len(posts)
|
||||
def get_tags(lst):
|
||||
for p in lst:
|
||||
for t in list(p.tags.names()):
|
||||
yield "#"+ t
|
||||
|
||||
|
||||
t=set( t for t in get_tags(posts))
|
||||
if l>=1:
|
||||
featured_post=posts.popleft()
|
||||
|
||||
return render(request, 'home.html',{'posts':posts, 'featured_post':featured_post})
|
||||
return render(request, 'home.html',{'posts':posts, 'featured_post':featured_post, "tags_list": ", ".join(t)})
|
||||
|
||||
@@ -6,7 +6,8 @@ from .forms import MyPostForm
|
||||
class MyPostAdmin(admin.ModelAdmin):
|
||||
form = MyPostForm
|
||||
model = Post
|
||||
|
||||
list_filter=['is_event']
|
||||
list_display=['title','subtitle','slug','public_date']
|
||||
def save_model(self, request, obj, form, change):
|
||||
obj.author = request.user
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
@@ -22,15 +22,15 @@ class NewsPostManager(models.Manager):
|
||||
class Post(models.Model):
|
||||
# id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
legacy_id=models.IntegerField(null=True)
|
||||
legacy_rubrik_id=models.IntegerField(null=True)
|
||||
title=models.CharField(max_length=200) # Titel des Posts
|
||||
subtitle=models.CharField(max_length=500, null=True, blank=True) # subtitle
|
||||
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,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
|
||||
legacy_rubrik_id = models.IntegerField(null=True)
|
||||
title =models.CharField(max_length=200) # Titel des Posts
|
||||
subtitle = models.CharField(max_length=500, null=True, blank=True) # subtitle
|
||||
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,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
|
||||
|
||||
imported_from = models.CharField(max_length=200, null=True, blank=True) # Titel des Posts
|
||||
|
||||
@@ -73,12 +73,14 @@ class Post(models.Model):
|
||||
return reverse('posts.show', kwargs={"id":self.slug})
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
"save the post with some defaults"
|
||||
if self.id is None and (self.slug is None or self.slug ==""):
|
||||
self.slug=slugify(self.public_date.date())+"-"+slugify(self.title)
|
||||
|
||||
if not self.event_start is None:
|
||||
self.is_event=True
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
self.tags.set(*re.findall(r'\#([\d\w]+)', str(self.subtitle)),*re.findall(r'\#([\d\w]+)', str(self.title)))
|
||||
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)
|
||||
@@ -88,7 +90,8 @@ class Post(models.Model):
|
||||
class PostSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = Post
|
||||
fields = ['slug','title', 'body','url', 'legacy_id','image', 'event_start','event_end','is_fetsitzung']
|
||||
fields = ['slug','title','subtitle', 'body','url','public_date', 'legacy_id','image', 'event_start','event_end','is_fetsitzung']
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -10,4 +10,4 @@ register = template.Library()
|
||||
@stringfilter
|
||||
def tags_to_url(value):
|
||||
#return "Tag to url: %s" % value
|
||||
return mark_safe(re.sub(r'\#([\d\w]+)', '<a href="#\g<1>">#\g<1></a>', value))
|
||||
return mark_safe(re.sub(r'\#([\d\w-]+)', '<a href="/posts/t/\g<1>">#\g<1></a>', value))
|
||||
@@ -1,6 +1,7 @@
|
||||
from django.urls import path
|
||||
from . import views
|
||||
urlpatterns=[
|
||||
path('t/<str:tag>',views.tags,name='posts.tags'),
|
||||
path('',views.index,name='posts.index'),
|
||||
path('<str:id>',views.show, name='posts.show'),
|
||||
|
||||
|
||||
@@ -12,7 +12,14 @@ from django_filters.rest_framework import DjangoFilterBackend
|
||||
# Create your views here.
|
||||
def index(request):
|
||||
posts=deque(Post.objects.all())
|
||||
return render(request, 'posts/index.html', {"posts": posts})
|
||||
f=lambda p: p.tags
|
||||
t=map(f, posts)
|
||||
|
||||
return render(request, 'posts/index.html', {"posts": posts, "tags_list": t })
|
||||
|
||||
def tags(request,tag=""):
|
||||
posts=deque(Post.objects.filter(tags__name=tag))
|
||||
return render(request, 'posts/index.html', {"posts": posts, "tags_list":None })
|
||||
|
||||
def show(request,id=None):
|
||||
print("id: %s" % id)
|
||||
|
||||
Reference in New Issue
Block a user