def save(self, commit=True): """Create user, assign him to staff users, and create permissions for him if required. Also assigns creator to user. """ Super = self._password_change and PageUserForm or UserCreationForm user = super(Super, self).save(commit=False) user.is_staff = True created = not bool(user.pk) # assign creator to user if created: get_current_user() user.created_by = get_current_user() if commit: user.save() save_permissions(self.cleaned_data, user) if self.cleaned_data['notify_user']: mail_page_user_change(user, created, self.cleaned_data['password1']) return user
def save(self, commit=True): """Create user, assign him to staff users, and create permissions for him if required. Also assigns creator to user. """ Super = self._password_change and PageUserForm or UserCreationForm user = super(Super, self).save(commit=False) user.is_staff = True created = not bool(user.pk) # assign creator to user if created: user.created_by = get_current_user() if commit: user.save() models = ((Page, 'page'), (PageUser, 'pageuser'), (Group, 'pageuser'), (PagePermission, 'pagepermission')) for model, name in models: content_type = ContentType.objects.get_for_model(model) for t in ('add', 'change', 'delete'): if not user.pk: # save user, otherwise we can't assign permissions to him user.save() # add permission `t` to model `model` codename = getattr(model._meta, 'get_%s_permission' % t)() permission = Permission.objects.get(content_type=content_type, codename=codename) if self.cleaned_data.get('can_%s_%s' % (t, name), None): user.user_permissions.add(permission) else: user.user_permissions.remove(permission) if self.cleaned_data['notify_user']: mail_page_user_change(user, created, self.cleaned_data['password1']) return user
def test_01_mail_page_user_change(self): user = self.create_page_user("username", grant_all=True) mail_page_user_change(user) self.assertEqual(len(mail.outbox), 1)