tag list
This commit is contained in:
@@ -7,8 +7,14 @@ from posts.models import Post
|
|||||||
def index(request):
|
def index(request):
|
||||||
posts=deque(Post.news_objects.all())
|
posts=deque(Post.news_objects.all())
|
||||||
l=len(posts)
|
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:
|
if l>=1:
|
||||||
featured_post=posts.popleft()
|
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):
|
class MyPostAdmin(admin.ModelAdmin):
|
||||||
form = MyPostForm
|
form = MyPostForm
|
||||||
model = Post
|
model = Post
|
||||||
|
list_filter=['is_event']
|
||||||
|
list_display=['title','subtitle','slug','public_date']
|
||||||
def save_model(self, request, obj, form, change):
|
def save_model(self, request, obj, form, change):
|
||||||
obj.author = request.user
|
obj.author = request.user
|
||||||
super().save_model(request, obj, form, change)
|
super().save_model(request, obj, form, change)
|
||||||
|
|||||||
@@ -73,12 +73,14 @@ class Post(models.Model):
|
|||||||
return reverse('posts.show', kwargs={"id":self.slug})
|
return reverse('posts.show', kwargs={"id":self.slug})
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
"save the post with some defaults"
|
||||||
if self.id is None and (self.slug is None or self.slug ==""):
|
if self.id is None and (self.slug is None or self.slug ==""):
|
||||||
self.slug=slugify(self.public_date.date())+"-"+slugify(self.title)
|
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)
|
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):
|
def __str__(self):
|
||||||
return "Post (%s, %s): %s " %(self.slug, self.public_date.strftime("%d.%m.%Y"), self.title)
|
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 PostSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Post
|
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
|
@stringfilter
|
||||||
def tags_to_url(value):
|
def tags_to_url(value):
|
||||||
#return "Tag to url: %s" % 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 django.urls import path
|
||||||
from . import views
|
from . import views
|
||||||
urlpatterns=[
|
urlpatterns=[
|
||||||
|
path('t/<str:tag>',views.tags,name='posts.tags'),
|
||||||
path('',views.index,name='posts.index'),
|
path('',views.index,name='posts.index'),
|
||||||
path('<str:id>',views.show, name='posts.show'),
|
path('<str:id>',views.show, name='posts.show'),
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,14 @@ from django_filters.rest_framework import DjangoFilterBackend
|
|||||||
# Create your views here.
|
# Create your views here.
|
||||||
def index(request):
|
def index(request):
|
||||||
posts=deque(Post.objects.all())
|
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):
|
def show(request,id=None):
|
||||||
print("id: %s" % id)
|
print("id: %s" % id)
|
||||||
|
|||||||
Reference in New Issue
Block a user