Browse Source

Making rank default

Rafał Pitoń 11 years ago
parent
commit
952276febb

+ 18 - 2
misago/templates/misago/admin/ranks/list.html

@@ -19,6 +19,7 @@
 <th style="width: 1%;">&nbsp;</th>
 <th style="width: 1%;">&nbsp;</th>
 <th style="width: 1%;">&nbsp;</th>
 <th style="width: 1%;">&nbsp;</th>
 <th style="width: 1%;">&nbsp;</th>
 <th style="width: 1%;">&nbsp;</th>
+<th style="width: 1%;">&nbsp;</th>
 {% endblock table-header %}
 {% endblock table-header %}
 
 
 
 
@@ -26,10 +27,13 @@
 <td class="lead">
 <td class="lead">
   {{ item.name }}
   {{ item.name }}
   {% if item.is_tab %}
   {% if item.is_tab %}
-  <div class="fa fa-list text-primary pull-right tooltip-top" title="{% trans "Has page on users list." %}"></div>
+  <div class="fa fa-list text-muted pull-right tooltip-top" title="{% trans "Has page on users list." %}"></div>
   {% endif %}
   {% endif %}
   {% if item.is_on_index %}
   {% if item.is_on_index %}
-  <div class="fa fa-bookmark text-success pull-right tooltip-top" title="{% trans "Users online displayed on index." %}"></div>
+  <div class="fa fa-bookmark text-muted pull-right tooltip-top" title="{% trans "Users online displayed on index." %}"></div>
+  {% endif %}
+  {% if item.is_default %}
+  <div class="fa fa-star text-muted pull-right tooltip-top" title="{% trans "This is default rank assigned to new members." %}"></div>
   {% endif %}
   {% endif %}
 </td>
 </td>
 <td>
 <td>
@@ -40,6 +44,18 @@
   {% endif %}
   {% endif %}
 </td>
 </td>
 <td class="row-action">
 <td class="row-action">
+  {% if not item.is_default %}
+  <form action="{% url 'misago:admin:users:ranks:default' rank_id=item.id %}" method="post">
+    <button class="btn btn-warning tooltip-top" title="{% trans "Make default" %}">
+      {% csrf_token %}
+      <span class="fa fa-star"></span>
+    </button>
+  </form>
+  {% else %}
+  &nbsp;
+  {% endif %}
+</td>
+<td class="row-action">
   {% if not forloop.last %}
   {% if not forloop.last %}
   <form action="{% url 'misago:admin:users:ranks:down' rank_id=item.id %}" method="post">
   <form action="{% url 'misago:admin:users:ranks:down' rank_id=item.id %}" method="post">
     <button class="btn btn-default tooltip-top" title="{% trans "Move down" %}">
     <button class="btn btn-default tooltip-top" title="{% trans "Move down" %}">

+ 7 - 1
misago/users/models/rankmodel.py

@@ -1,4 +1,4 @@
-from django.db import models
+from django.db import models, transaction
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from misago.admin import site
 from misago.admin import site
@@ -9,6 +9,12 @@ class RankManager(models.Manager):
     def default(self):
     def default(self):
         return self.get(is_default=True)
         return self.get(is_default=True)
 
 
+    def make_rank_default(self, rank):
+        with transaction.atomic():
+            self.filter(is_default=True).update(is_default=False)
+            rank.is_default = True
+            rank.save(update_fields=['is_default'])
+
 
 
 class Rank(models.Model):
 class Rank(models.Model):
     name = models.CharField(max_length=255)
     name = models.CharField(max_length=255)

+ 3 - 1
misago/users/urls/admin.py

@@ -2,7 +2,8 @@ from django.conf.urls import url
 from misago.admin import urlpatterns
 from misago.admin import urlpatterns
 from misago.users.views.useradmin import UsersList
 from misago.users.views.useradmin import UsersList
 from misago.users.views.rankadmin import (RanksList, NewRank, EditRank,
 from misago.users.views.rankadmin import (RanksList, NewRank, EditRank,
-                                          DeleteRank, MoveUpRank, MoveDownRank)
+                                          DeleteRank, MoveUpRank, MoveDownRank,
+                                          DefaultRank)
 
 
 
 
 # Users section
 # Users section
@@ -23,6 +24,7 @@ urlpatterns.patterns('users:ranks',
     url(r'^$', RanksList.as_view(), name='index'),
     url(r'^$', RanksList.as_view(), name='index'),
     url(r'^new/$', NewRank.as_view(), name='new'),
     url(r'^new/$', NewRank.as_view(), name='new'),
     url(r'^edit/(?P<rank_id>\d+)/$', EditRank.as_view(), name='edit'),
     url(r'^edit/(?P<rank_id>\d+)/$', EditRank.as_view(), name='edit'),
+    url(r'^default/(?P<rank_id>\d+)/$', DefaultRank.as_view(), name='default'),
     url(r'^move/up/(?P<rank_id>\d+)/$', MoveUpRank.as_view(), name='up'),
     url(r'^move/up/(?P<rank_id>\d+)/$', MoveUpRank.as_view(), name='up'),
     url(r'^move/down/(?P<rank_id>\d+)/$', MoveDownRank.as_view(), name='down'),
     url(r'^move/down/(?P<rank_id>\d+)/$', MoveDownRank.as_view(), name='down'),
     url(r'^delete/(?P<rank_id>\d+)/$', DeleteRank.as_view(), name='delete'),
     url(r'^delete/(?P<rank_id>\d+)/$', DeleteRank.as_view(), name='delete'),

+ 11 - 0
misago/users/views/rankadmin.py

@@ -54,3 +54,14 @@ class MoveDownRank(RankAdmin, generic.ButtonView):
             target.save(update_fields=['order'])
             target.save(update_fields=['order'])
             message = _('Rank "%s" has been moved down.') % unicode(target.name)
             message = _('Rank "%s" has been moved down.') % unicode(target.name)
             messages.success(request, message)
             messages.success(request, message)
+
+
+class DefaultRank(RankAdmin, generic.ButtonView):
+    def check_permissions(self, request, target):
+        if target.is_default:
+            return _('Rank "%s" is already default.') % unicode(target.name)
+
+    def button_action(self, request, target=None):
+        Rank.objects.make_rank_default(target)
+        message = _('Rank "%s" has been made default.')
+        messages.success(request, message % unicode(target.name))