def check_permissions(self): """ Checks that all permissions are set correctly for the users. :return: A set of users whose permissions was wrong. """ # Variable to supply some feedback changed_permissions = [] changed_users = [] warnings = [] # Check that all the permissions are available. for model, perms in ASSIGNED_PERMISSIONS.items(): if model == 'profile': model_obj = get_profile_model() else: model_obj = User model_content_type = ContentType.objects.get_for_model(model_obj) for perm in perms: try: Permission.objects.get(codename=perm[0], content_type=model_content_type) except Permission.DoesNotExist: changed_permissions.append(perm[1]) Permission.objects.create(name=perm[1], codename=perm[0], content_type=model_content_type) for user in User.objects.all(): if not user.username == 'AnonymousUser': try: user_profile = user.get_profile() except get_profile_model().DoesNotExist: warnings.append(_(u"No profile found for %(username)s") \ % {'username': user.username}) else: all_permissions = get_perms(user, user_profile) + get_perms(user, user) for model, perms in ASSIGNED_PERMISSIONS.items(): if model == 'profile': perm_object = user.get_profile() else: perm_object = user for perm in perms: if perm[0] not in all_permissions: assign(perm[0], user, perm_object) changed_users.append(user) return (changed_permissions, changed_users, warnings)
def create_profile(self, user): """ Creates a :class:`Profile` instance for this user :param user: Django :class:`User` instance. :return: The newly created :class:`Profile` instance. """ # All users have an empty profile profile_model = get_profile_model() try: new_profile = user.get_profile() except profile_model.DoesNotExist: new_profile = profile_model(user=user) new_profile.save(using=self._db) return new_profile
# -*- coding: utf-8 -*- from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User from django.utils.translation import ugettext as _ from manifest.accounts.models import Account from manifest.accounts.utils import get_profile_model class AccountInline(admin.StackedInline): model = Account max_num = 1 class AccountAdmin(UserAdmin): inlines = [AccountInline, ] list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff', 'date_joined') admin.site.unregister(User) admin.site.register(User, AccountAdmin) admin.site.register(get_profile_model())