Commit 7fdb91790eca99487abc5d5e528f240275c9b14d
1 parent
83e20f1d
Exists in
master
and in
3 other branches
Adding mural filter
Showing
7 changed files
with
82 additions
and
8 deletions
Show diff stats
amadeus/settings.py
amadeus/static/css/base/amadeus.css
| ... | ... | @@ -964,6 +964,10 @@ li.item .notify_badge { |
| 964 | 964 | margin: 7px 0 0 0 !important; |
| 965 | 965 | } |
| 966 | 966 | |
| 967 | +.mural .mural-list { | |
| 968 | + padding-left: 0; | |
| 969 | +} | |
| 970 | + | |
| 967 | 971 | .mural .post_make { |
| 968 | 972 | padding: 10px; |
| 969 | 973 | margin-bottom: 10px; |
| ... | ... | @@ -1075,6 +1079,11 @@ li.item .notify_badge { |
| 1075 | 1079 | cursor: text; |
| 1076 | 1080 | } |
| 1077 | 1081 | |
| 1082 | +.post-filter h4 { | |
| 1083 | + font-weight: 700; | |
| 1084 | + margin-bottom: 15px; | |
| 1085 | +} | |
| 1086 | + | |
| 1078 | 1087 | .btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus { |
| 1079 | 1088 | outline: none; |
| 1080 | 1089 | } |
| 1081 | 1090 | \ No newline at end of file | ... | ... |
amadeus/static/css/themes/green.css
| ... | ... | @@ -542,6 +542,22 @@ a.add-row { |
| 542 | 542 | color: #BBBBBB !important; |
| 543 | 543 | } |
| 544 | 544 | |
| 545 | +.post-filter { | |
| 546 | + background: #DDDDDD; | |
| 547 | +} | |
| 548 | + | |
| 549 | +.post-filter h4 { | |
| 550 | + color: #4caf50; | |
| 551 | +} | |
| 552 | + | |
| 553 | +.post-filter label { | |
| 554 | + color: #333333; | |
| 555 | +} | |
| 556 | + | |
| 557 | +.post-filter i { | |
| 558 | + color: #FF0000; | |
| 559 | +} | |
| 560 | + | |
| 545 | 561 | .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 { |
| 546 | 562 | background-color: initial; |
| 547 | 563 | } | ... | ... |
mural/templates/mural/_view.html
| 1 | 1 | {% load i18n mural_filters %} |
| 2 | 2 | |
| 3 | -<div id="post-{{ post.id }}" class="row panel panel-default"> | |
| 3 | +<div id="post-{{ post.id }}" class="panel panel-default"> | |
| 4 | 4 | <div class="panel-body post"> |
| 5 | 5 | <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 post-img"> |
| 6 | 6 | <img src="{{ post.user.image_url }}" class="img-responsive" /> | ... | ... |
mural/templates/mural/list.html
| ... | ... | @@ -21,8 +21,8 @@ |
| 21 | 21 | </div> |
| 22 | 22 | |
| 23 | 23 | <div class="col-md-12 cards-content mural"> |
| 24 | - <div class="col-md-9 col-sm-9 col-xs-9"> | |
| 25 | - <div class="row post_make panel panel-default"> | |
| 24 | + <div class="col-md-9 col-sm-9 col-xs-9 mural-list"> | |
| 25 | + <div class="post_make panel panel-default"> | |
| 26 | 26 | <div class="panel-body"> |
| 27 | 27 | <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 user-img text-center"> |
| 28 | 28 | <img src="{{ request.user.image_url }}" class="img-responsive" /> |
| ... | ... | @@ -45,7 +45,23 @@ |
| 45 | 45 | <h4>{% trans 'There are no posts in this mural yet.' %}</h4> |
| 46 | 46 | </div> |
| 47 | 47 | </div> |
| 48 | - <div class="col-md-3 col-sm-3 col-xs-3"> | |
| 48 | + <div class="col-md-3 col-sm-3 col-xs-3 post-filter"> | |
| 49 | + <h4>{% trans 'Filter' %}</h4> | |
| 50 | + | |
| 51 | + <form id="post-filters" action="" method="GET"> | |
| 52 | + <div class="checkbox"> | |
| 53 | + <label> | |
| 54 | + <input name="favorite" type="checkbox" {{ favorites }}> {% trans 'Favorite posts' %} <i class="fa fa-thumb-tack"></i> | |
| 55 | + </label> | |
| 56 | + </div> | |
| 57 | + <div class="checkbox"> | |
| 58 | + <label> | |
| 59 | + <input name="mine" type="checkbox" {{ mines }}> {% trans 'Only my posts' %} | |
| 60 | + </label> | |
| 61 | + </div> | |
| 62 | + <button type="submit" class="btn btn-success btn-raised btn-block">{% trans 'Filter' %}</button> | |
| 63 | + <button type="button" id="clear_filter" class="btn btn-default btn-raised btn-block">{% trans 'Clean Filters' %}</button> | |
| 64 | + </form> | |
| 49 | 65 | </div> |
| 50 | 66 | </div> |
| 51 | 67 | |
| ... | ... | @@ -67,6 +83,14 @@ |
| 67 | 83 | } |
| 68 | 84 | }); |
| 69 | 85 | }); |
| 86 | + | |
| 87 | + $("#clear_filter").click(function () { | |
| 88 | + var frm = $(this).parent(); | |
| 89 | + | |
| 90 | + frm.find("input[type='checkbox']").prop('checked', false); | |
| 91 | + | |
| 92 | + frm.submit(); | |
| 93 | + }); | |
| 70 | 94 | }); |
| 71 | 95 | |
| 72 | 96 | function setPostFormSubmit(post = "") { | ... | ... |
mural/templatetags/mural_filters.py
mural/views.py
| ... | ... | @@ -22,7 +22,6 @@ class GeneralIndex(LoginRequiredMixin, generic.ListView): |
| 22 | 22 | redirect_field_name = 'next' |
| 23 | 23 | |
| 24 | 24 | template_name = 'mural/list.html' |
| 25 | - model = GeneralPost | |
| 26 | 25 | context_object_name = "posts" |
| 27 | 26 | paginate_by = 10 |
| 28 | 27 | |
| ... | ... | @@ -30,9 +29,20 @@ class GeneralIndex(LoginRequiredMixin, generic.ListView): |
| 30 | 29 | |
| 31 | 30 | def get_queryset(self): |
| 32 | 31 | user = self.request.user |
| 32 | + favorites = self.request.GET.get('favorite', False) | |
| 33 | + mines = self.request.GET.get('mine', False) | |
| 34 | + | |
| 35 | + if not favorites: | |
| 36 | + if mines: | |
| 37 | + general = GeneralPost.objects.extra(select = {"most_recent": "greatest(last_update, (select max(mural_comment.last_update) from mural_comment where mural_comment.post_id = mural_generalpost.mural_ptr_id))"}).filter(mural_ptr__user = user) | |
| 38 | + else: | |
| 39 | + general = GeneralPost.objects.extra(select = {"most_recent": "greatest(last_update, (select max(mural_comment.last_update) from mural_comment where mural_comment.post_id = mural_generalpost.mural_ptr_id))"}) | |
| 40 | + else: | |
| 41 | + if mines: | |
| 42 | + general = GeneralPost.objects.extra(select = {"most_recent": "greatest(last_update, (select max(mural_comment.last_update) from mural_comment where mural_comment.post_id = mural_generalpost.mural_ptr_id))"}).filter(favorites_post__isnull = False, mural_ptr__user = user) | |
| 43 | + else: | |
| 44 | + general = GeneralPost.objects.extra(select = {"most_recent": "greatest(last_update, (select max(mural_comment.last_update) from mural_comment where mural_comment.post_id = mural_generalpost.mural_ptr_id))"}).filter(favorites_post__isnull = False) | |
| 33 | 45 | |
| 34 | - general = GeneralPost.objects.extra(select={"most_recent": "greatest(last_update, (select max(mural_comment.last_update) from mural_comment where mural_comment.post_id = mural_generalpost.mural_ptr_id))"}).order_by("-most_recent") | |
| 35 | - | |
| 36 | 46 | general_visualizations = MuralVisualizations.objects.filter(Q(user = user) & Q(viewed = False) & (Q(post__generalpost__isnull = False) | Q(comment__post__generalpost__isnull = False))).distinct() |
| 37 | 47 | |
| 38 | 48 | self.totals['general'] = general_visualizations.count() |
| ... | ... | @@ -41,7 +51,7 @@ class GeneralIndex(LoginRequiredMixin, generic.ListView): |
| 41 | 51 | |
| 42 | 52 | general_visualizations.update(viewed = True) |
| 43 | 53 | |
| 44 | - return general | |
| 54 | + return general.order_by("-most_recent") | |
| 45 | 55 | |
| 46 | 56 | def get_context_data(self, **kwargs): |
| 47 | 57 | context = super(GeneralIndex, self).get_context_data(**kwargs) |
| ... | ... | @@ -49,6 +59,18 @@ class GeneralIndex(LoginRequiredMixin, generic.ListView): |
| 49 | 59 | context['title'] = _('Mural') |
| 50 | 60 | context['totals'] = self.totals |
| 51 | 61 | context['mural_menu_active'] = 'subjects_menu_active' |
| 62 | + context['favorites'] = "" | |
| 63 | + context['mines'] = "" | |
| 64 | + | |
| 65 | + favs = self.request.GET.get('favorite', False) | |
| 66 | + | |
| 67 | + if favs: | |
| 68 | + context['favorites'] = "checked" | |
| 69 | + | |
| 70 | + mines = self.request.GET.get('mine', False) | |
| 71 | + | |
| 72 | + if mines: | |
| 73 | + context['mines'] = "checked" | |
| 52 | 74 | |
| 53 | 75 | return context |
| 54 | 76 | ... | ... |