This commit is contained in:
2020-05-15 19:57:22 +00:00
parent 26db8429e7
commit 2ade6d765b
6 changed files with 34 additions and 16 deletions

View File

@@ -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)})

View File

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

View File

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

View File

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

View File

@@ -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'),

View File

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