diff --git a/fet2020/fet2020/views.py b/fet2020/fet2020/views.py
index df60d7fe..0086d02e 100644
--- a/fet2020/fet2020/views.py
+++ b/fet2020/fet2020/views.py
@@ -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)})
diff --git a/fet2020/posts/admin.py b/fet2020/posts/admin.py
index 3a528abe..65e08ea2 100644
--- a/fet2020/posts/admin.py
+++ b/fet2020/posts/admin.py
@@ -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)
diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py
index c64efffd..5707e720 100644
--- a/fet2020/posts/models.py
+++ b/fet2020/posts/models.py
@@ -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']
+
diff --git a/fet2020/posts/templatetags/post_helpers.py b/fet2020/posts/templatetags/post_helpers.py
index b1e24cca..2e04c7d2 100644
--- a/fet2020/posts/templatetags/post_helpers.py
+++ b/fet2020/posts/templatetags/post_helpers.py
@@ -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]+)', '#\g<1>', value))
\ No newline at end of file
+ return mark_safe(re.sub(r'\#([\d\w-]+)', '#\g<1>', value))
\ No newline at end of file
diff --git a/fet2020/posts/urls.py b/fet2020/posts/urls.py
index e1e6e07f..1eecf03a 100644
--- a/fet2020/posts/urls.py
+++ b/fet2020/posts/urls.py
@@ -1,6 +1,7 @@
from django.urls import path
from . import views
urlpatterns=[
+ path('t/',views.tags,name='posts.tags'),
path('',views.index,name='posts.index'),
path('',views.show, name='posts.show'),
diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py
index 8049e9f2..9c6e5c34 100644
--- a/fet2020/posts/views.py
+++ b/fet2020/posts/views.py
@@ -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)