diff --git a/amadeus/static/css/themes/green.css b/amadeus/static/css/themes/green.css
index 256ca06..f7d7d1f 100644
--- a/amadeus/static/css/themes/green.css
+++ b/amadeus/static/css/themes/green.css
@@ -575,6 +575,10 @@ a.add-row {
background: #FFFFFF;
}
+.mural-category {
+ background: #EEE;
+}
+
.btn:not(.btn-raised):not(.btn-link):focus, .btn:not(.btn-raised):not(.btn-link):hover, .input-group-btn .btn:not(.btn-raised):not(.btn-link):focus, .input-group-btn .btn:not(.btn-raised):not(.btn-link):hover {
background-color: initial;
}
diff --git a/amadeus/templatetags/permissions_tags.py b/amadeus/templatetags/permissions_tags.py
index 005bf06..ab9d2ca 100644
--- a/amadeus/templatetags/permissions_tags.py
+++ b/amadeus/templatetags/permissions_tags.py
@@ -5,6 +5,10 @@ from amadeus import permissions
register = template.Library()
@register.assignment_tag
+def category_permissions(user, category):
+ return permissions.has_category_permissions(user, category)
+
+@register.assignment_tag
def subject_permissions(user, subject):
return permissions.has_subject_permissions(user, subject)
diff --git a/mural/templates/mural/list.html b/mural/templates/mural/list.html
index d6eeb2e..260eedd 100644
--- a/mural/templates/mural/list.html
+++ b/mural/templates/mural/list.html
@@ -8,14 +8,14 @@
{% trans 'Mural: General' as general %}
- {% breadcrumb general 'mural:manage_general' %}
+ {% breadcrumb general 'mural:manage_general' %}
{% endblock %}
{% block content %}
+ {% if categories.count > 0 %}
+
+ {% for category in categories %}
+ {% category_permissions request.user category as has_category_permissions %}
+
+ {% if category.visible %}
+
+
+ {% elif has_category_permissions %}
+
+
+
+
+
+
+
+
+

+
+
+
+
{% trans 'Wish to make a new post?' %}
+
+
+
+
+
+
+
+
+
+
{% trans 'Filter' %}
+
+
+
+
+
+
+ {% endfor %}
+
+ {% pagination request paginator page_obj %}
+
+ {% endif %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/mural/templatetags/mural_filters.py b/mural/templatetags/mural_filters.py
index bc5288d..70e2f12 100644
--- a/mural/templatetags/mural_filters.py
+++ b/mural/templatetags/mural_filters.py
@@ -1,7 +1,7 @@
from django import template
from django.utils.translation import ugettext_lazy as _
-from mural.models import MuralFavorites
+from mural.models import MuralFavorites, MuralVisualizations
register = template.Library()
@@ -42,4 +42,10 @@ def fav_class(post, user):
if MuralFavorites.objects.filter(post = post, user = user).exists():
return "btn_unfav"
- return "btn_fav"
\ No newline at end of file
+ return "btn_fav"
+
+@register.filter(name = 'unviewed')
+def unviewed(category, user):
+ count = MuralVisualizations.objects.filter(user = user, viewed = False, post__categorypost__space = category).count()
+
+ return count
\ No newline at end of file
diff --git a/mural/urls.py b/mural/urls.py
index b505c1f..b3b744a 100644
--- a/mural/urls.py
+++ b/mural/urls.py
@@ -3,6 +3,7 @@ from . import views
urlpatterns = [
url(r'^$', views.GeneralIndex.as_view(), name='manage_general'),
+ url(r'^categories/$', views.CategoryIndex.as_view(), name='manage_category'),
url(r'^create_gen/$', views.GeneralCreate.as_view(), name='create_general'),
url(r'^update_gen/(?P
[\w_-]+)/$', views.GeneralUpdate.as_view(), name='update_general'),
url(r'^delete_gen/(?P[\w_-]+)/$', views.GeneralDelete.as_view(), name='delete_general'),
diff --git a/mural/views.py b/mural/views.py
index 39b26e0..1b54364 100644
--- a/mural/views.py
+++ b/mural/views.py
@@ -14,11 +14,16 @@ from django.db.models import Q, Count
from channels import Group
import json
+from categories.models import Category
+from subjects.models import Subject
from users.models import User
from .models import Mural, GeneralPost, CategoryPost, SubjectPost, MuralVisualizations, MuralFavorites, Comment
from .forms import GeneralPostForm, CommentForm
+"""
+ Section for GeneralPost classes
+"""
class GeneralIndex(LoginRequiredMixin, generic.ListView):
login_url = reverse_lazy("users:login")
redirect_field_name = 'next'
@@ -201,7 +206,45 @@ class GeneralDelete(LoginRequiredMixin, generic.DeleteView):
for user in users:
Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete", "pathname": pathname, "post_id": self.object.id})})
- return reverse_lazy('mural:deleted_post')
+ return reverse_lazy('mural:deleted_post')
+
+"""
+ Section for CategoryPost classes
+"""
+class CategoryIndex(LoginRequiredMixin, generic.ListView):
+ login_url = reverse_lazy("users:login")
+ redirect_field_name = 'next'
+
+ template_name = 'mural/list_category.html'
+ context_object_name = "categories"
+ paginate_by = 10
+
+ totals = {}
+
+ def get_queryset(self):
+ user = self.request.user
+
+ if user.is_staff:
+ categories = Category.objects.all()
+ else:
+ categories = Category.objects.filter(Q(coordinators__pk = user.pk) | Q(subject_category__professor__pk = user.pk) | Q(subject_category__students__pk = user.pk, visible = True)).distinct()
+
+ self.totals['general'] = MuralVisualizations.objects.filter(Q(user = user) & Q(viewed = False) & (Q(post__generalpost__isnull = False) | Q(comment__post__generalpost__isnull = False))).distinct().count()
+ self.totals['category'] = MuralVisualizations.objects.filter(Q(user = user) & Q(viewed = False) & (Q(post__categorypost__space__coordinators = user) | Q(comment__post__categorypost__space__coordinators = user) | Q(post__categorypost__space__subject_category__professor = user) | Q(post__categorypost__space__subject_category__students = user) | Q(comment__post__categorypost__space__subject_category__professor = user) | Q(comment__post__categorypost__space__subject_category__students = user))).distinct().count()
+ self.totals['subject'] = MuralVisualizations.objects.filter(Q(user = user) & Q(viewed = False) & (Q(post__subjectpost__space__professor = user) | Q(comment__post__subjectpost__space__professor = user) | Q(post__subjectpost__space__students = user) | Q(comment__post__subjectpost__space__students = user))).distinct().count()
+
+ print(categories)
+
+ return categories
+
+ def get_context_data(self, **kwargs):
+ context = super(CategoryIndex, self).get_context_data(**kwargs)
+
+ context['title'] = _('Mural - Per Category')
+ context['totals'] = self.totals
+ context['mural_menu_active'] = 'subjects_menu_active'
+
+ return context
def render_gen_post(request, post, msg):
post = get_object_or_404(GeneralPost, id = post)
--
libgit2 0.21.2