示例#1
0
    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)
示例#2
0
    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
示例#3
0
# -*- 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())