Ticket #10964: group_admin.patch

File group_admin.patch, 5.5 KB (added by Filip Gruszczyński, 17 years ago)
  • django/contrib/admin/templates/admin/auth/group_form.html

     
     1{% extends "admin/change_form.html" %}
     2
     3{% block extrahead %}
     4        {{ block.super }}
     5        {{ form.media }}
     6{% endblock %}
     7
     8{% load i18n %}
     9
     10{% block after_field_sets %}
     11<fieldset class="module aligned">
     12
     13        <div class="form-row">
     14          {{ form.name.errors }}
     15          <label for="id_name" class="required">{% trans 'Name' %}:</label> {{ form.name }}
     16          <p class="help">{{ form.name.help_text }}</p>
     17        </div>
     18
     19        <div class="form-row">
     20          {{ form.permissions.errors }}
     21          <label for="id_permissions">{% trans 'Permissions' %}:</label> {{ form.permissions }}
     22          <p class="help">{{ form.permissions.help_text }}</p>
     23        </div>
     24
     25        <div class="form-row">
     26          {{ form.users.errors }}
     27          <label for="id_users">{% trans 'Users' %}:</label> {{ form.users }}
     28          <p class="help">{{ form.users.help_text }}</p>
     29        </div>
     30
     31        <script type="text/javascript">document.getElementById("id_name").focus();</script>
     32</fieldset>
     33{% endblock %}
  • django/contrib/auth/admin.py

     
    11from django import template
    22from django.conf import settings
    33from django.contrib import admin
    4 from django.contrib.auth.forms import UserCreationForm, UserChangeForm, AdminPasswordChangeForm
     4from django.contrib.auth.forms import UserCreationForm, UserChangeForm, AdminPasswordChangeForm, GroupForm
    55from django.contrib.auth.models import User, Group
    66from django.core.exceptions import PermissionDenied
    77from django.http import HttpResponseRedirect, Http404
    … …  
    1111from django.utils.translation import ugettext, ugettext_lazy as _
    1212
    1313class GroupAdmin(admin.ModelAdmin):
    14     search_fields = ('name',)
    15     ordering = ('name',)
    16     filter_horizontal = ('permissions',)
     14        search_fields = ('name',)
     15        ordering = ('name',)
     16        filter_horizontal=('permissions',)
    1717
     18        def add_view(self, request, form_url='', extra_context=None):
     19                if request.method == 'POST':
     20                        form = GroupForm(request.POST)
     21                        if form.is_valid():
     22                                form.save()
     23                else:
     24                        form = GroupForm()
     25                dictionary = {'title': _(u'Add group'), 'form': form,
     26                                          'is_popup': '_popup' in request.REQUEST, 'add': True,
     27                                          'change': False, 'has_add_permission': True,
     28                                          'has_delete_permission': False,
     29                                          'has_change_permission': True, 'has_file_field': False,
     30                                          'has_absolute_url': False, 'auto_populated_fields': (),
     31                                          'opts': self.model._meta, 'save_as': False,
     32                                          'root_path': self.admin_site.root_path,
     33                                          'app_label': self.model._meta.app_label}
     34                return render_to_response('admin/auth/group_form.html', dictionary)
     35               
     36        def change_view(self, request, object_id, extra_context=None):
     37                if request.method == 'POST':
     38                        form = GroupForm(request.POST,
     39                                                         instance=Group.objects.get(id=object_id))
     40                        if form.is_valid():
     41                                form.save()
     42                else:
     43                        form = GroupForm(instance=Group.objects.get(id=object_id))
     44                dictionary = {'title': _(u'Edit group'), 'form': form,
     45                                          'is_popup': '_popup' in request.REQUEST, 'add': True,
     46                                          'change': False, 'has_add_permission': True,
     47                                          'has_delete_permission': False,
     48                                          'has_change_permission': True, 'has_file_field': False,
     49                                          'has_absolute_url': False, 'auto_populated_fields': (),
     50                                          'opts': self.model._meta, 'save_as': False,
     51                                          'root_path': self.admin_site.root_path,
     52                                          'app_label': self.model._meta.app_label}
     53                return render_to_response('admin/auth/group_form.html', dictionary)
     54
    1855class UserAdmin(admin.ModelAdmin):
    1956    fieldsets = (
    2057        (None, {'fields': ('username', 'password')}),
  • django/contrib/auth/forms.py

     
    1 from django.contrib.auth.models import User
     1from django.contrib.auth.models import User, Group
    22from django.contrib.auth import authenticate
    33from django.contrib.auth.tokens import default_token_generator
    44from django.contrib.sites.models import Site
    55from django.template import Context, loader
    66from django import forms
     7from django.contrib.admin.widgets import FilteredSelectMultiple
    78from django.utils.translation import ugettext_lazy as _
    89from django.utils.http import int_to_base36
    910
    … …  
    205206        if commit:
    206207            self.user.save()
    207208        return self.user
     209
     210class GroupForm(forms.ModelForm):
     211
     212        def __init__(self, *args, **kwargs):
     213                forms.ModelForm.__init__(self, *args, **kwargs)
     214                initial = {}
     215                users = User.objects.all().order_by('last_name')
     216                if 'instance' in kwargs:
     217                        for user in users:
     218                                if user in kwargs['instance'].user_set.all():
     219                                        initial[str(user.id)] = ''
     220                dictionary = {'queryset': users,
     221                                          'widget': FilteredSelectMultiple('Users', False),
     222                                          'initial': initial, 'required': False}
     223                self.fields['users'] = forms.ModelMultipleChoiceField(**dictionary)
     224                                                                         
     225        def save(self, commit=True):
     226                group = forms.ModelForm.save(self, commit)
     227                for user in group.user_set.all():
     228                        if not user in self.cleaned_data['users']:
     229                                user.groups.remove(group)
     230                                user.save()
     231                for user in self.cleaned_data['users']:
     232                        user.groups.add(group)
     233                        user.save()
     234                return group
     235       
     236        class Meta:
     237                model = Group
Back to Top