Browse Source

- Widgets and actions can now pass to each other more than one flash message.
- Widgets correctly handle "Save and add new" buttons in forms.

Ralfp 12 years ago
parent
commit
5bafa52f49

+ 5 - 4
misago/admin/widgets.py

@@ -50,6 +50,7 @@ class BaseWidget(object):
     def get_template(self, template):
         return ('%s/%ss/%s.html' % (str(self.admin.model.__module__).split('.')[1], str(self.admin.model.__name__).lower(), template),
                 '%s/%s.html' % (str(self.admin.model.__module__).split('.')[1], template),
+                '%ss/%s.html' % (str(self.admin.model.__name__).lower(), template),
                 'admin/%s.html' % template)
             
     def get_fallback_url(self, request):
@@ -295,7 +296,7 @@ class ListWidget(BaseWidget):
             pass
         
         # Default message
-        message = request.messages.get_message(self.admin.id)
+        message = None
         
         # See if we should make and handle search form
         search_form = None
@@ -381,6 +382,7 @@ class ListWidget(BaseWidget):
                                                  'action': self,
                                                  'request': request,
                                                  'url': self.get_url(),
+                                                 'messages_log': request.messages.get_messages(self.admin.id),
                                                  'message': message,
                                                  'sorting': self.sortables,
                                                  'sorting_method': sorting_method,
@@ -432,9 +434,6 @@ class FormWidget(BaseWidget):
         pass
     
     def __call__(self, request, target=None, slug=None):
-        # Default message
-        message = request.messages.get_message(self.admin.id)
-
         # Fetch target?
         model = None
         if target:
@@ -448,6 +447,7 @@ class FormWidget(BaseWidget):
         FormType = self.get_form(request, target)
         
         #Submit form
+        message = None
         if request.method == 'POST':
             form = self.get_form_instance(FormType, request, model, self.get_initial_data(request, model), True)
             if form.is_valid():
@@ -484,6 +484,7 @@ class FormWidget(BaseWidget):
                                                  'request': request,
                                                  'url': self.get_url(request, model),
                                                  'fallback': self.get_fallback_url(request),
+                                                 'messages_log': request.messages.get_messages(self.admin.id),
                                                  'message': message,
                                                  'tabbed': self.tabbed,
                                                  'target': self.get_target_name(original_model),

+ 1 - 1
misago/banning/views.py

@@ -90,7 +90,7 @@ class New(FormWidget):
     submit_button = _("Set Ban")
         
     def get_new_url(self, request, model):
-        return reverse('admin_bans')
+        return reverse('admin_bans_new')
     
     def get_edit_url(self, request, model):
         return reverse('admin_bans_edit', model)

+ 11 - 0
misago/messages/__init__.py

@@ -19,6 +19,17 @@ class Messages(object):
                 del self.messages[index]
                 return message
         return None
+        
+    def get_messages(self, owner=None):
+        orphans = []
+        messages = []
+        for message in self.messages:
+            if message.owner == owner:
+                messages.append(message)
+            else:
+                orphans.append(message)
+        self.messages = orphans
+        return messages
 
 
 class Message(object):

+ 1 - 1
misago/newsletters/views.py

@@ -68,7 +68,7 @@ class New(FormWidget):
     tabbed = True
         
     def get_new_url(self, request, model):
-        return reverse('admin_newsletters')
+        return reverse('admin_newsletters_new')
     
     def get_edit_url(self, request, model):
         return reverse('admin_newsletters_edit', model)

+ 1 - 1
misago/ranks/views.py

@@ -73,7 +73,7 @@ class New(FormWidget):
     submit_button = _("Save Rank")
         
     def get_new_url(self, request, model):
-        return reverse('admin_ranks')
+        return reverse('admin_ranks_new')
     
     def get_edit_url(self, request, model):
         return reverse('admin_ranks_edit', model)

+ 1 - 1
misago/roles/views.py

@@ -57,7 +57,7 @@ class New(FormWidget):
     submit_button = _("Save Role")
         
     def get_new_url(self, request, model):
-        return reverse('admin_roles')
+        return reverse('admin_roles_new')
     
     def get_edit_url(self, request, model):
         return reverse('admin_roles_edit', model)

+ 5 - 2
misago/users/views.py

@@ -194,8 +194,11 @@ class List(ListWidget):
                     return Message(_('You cannot delete yourself.'), 'error'), reverse('admin_users')
                 if user.is_protected():
                     return Message(_('You cannot delete protected members.'), 'error'), reverse('admin_users')
+        
+        for user in items:
+            if unicode(user.pk) in checked:
+                user.delete()
                 
-        User.objects.filter(id__in=checked).delete()
         User.objects.resync_monitor(request.monitor)
         return Message(_('Selected users have been deleted successfully.'), 'success'), reverse('admin_users')
     
@@ -208,7 +211,7 @@ class New(FormWidget):
     submit_button = _("Save User")
         
     def get_new_url(self, request, model):
-        return reverse('admin_users')
+        return reverse('admin_users_new')
     
     def get_edit_url(self, request, model):
         return reverse('admin_users_edit', model)

+ 3 - 0
templates/admin/admin/layout.html

@@ -21,6 +21,9 @@
 {% if admin.actions[0].id != action.id -%}
 <h2>{% if target %}{{ target }} <small>{{ action.name }}</small>{% else %}{{ action.name }}{% if action.help %} <small>{{ action.help }}</small>{% endif %}{% endif %}</h2>
 {% endif %}
+{% for message in messages_log %}
+{{ draw_message(message, 'alert-form') }}
+{% endfor %}
 {% if message %}
 {{ draw_message(message, 'alert-form') }}
 {% endif %}