def signup(request): if request.method == 'POST': user_name = request.POST.get('username', None) user_password = request.POST.get('userpassword', None) user_mail = request.POST.get('usermail', None) if User.objects.filter(email=user_mail).exists(): return redirect("/?error=email") if User.objects.filter(username=user_name).exists(): return redirect("/?error=username") user = User.objects.create_user(user_name, user_mail, user_password) #Includes in group regular users group, created = Group.objects.get_or_create(name='Users') if created: utils.add_permission_to_group(Permission.objects.get(codename='add_project'), group) utils.add_permission_to_group(Permission.objects.get(codename='change_project'), group) utils.add_permission_to_group(Permission.objects.get(codename='delete_project'), group) utils.add_user_to_group(user,group) user.save() user_profile = UserProfile() user_profile.user = user user_profile.evernote_profile = EvernoteProfile() user_profile.dropbox_profile = DropboxProfile() user_profile.is_dropbox_synced, user_profile.is_evernote_synced = False, False user_profile.invitations = [] user_profile.save() user = authenticate(username = user_name, password= user_password) login(request, user) return redirect("/")
def assign(perm, user_or_group, obj=None): """ Assigns permission to user/group and object pair. :param perm: proper permission for given ``obj``, as string (in format: ``app_label.codename`` or ``codename``). If ``obj`` is not given, must be in format ``app_label.codename``. :param user_or_group: instance of ``User``, ``AnonymousUser`` or ``Group``; passing any other object would raise ``guardian.exceptions.NotUserNorGroup`` exception :param obj: persisted Django's ``Model`` instance or ``None`` if assigning global permission. Default is ``None``. We can assign permission for ``Model`` instance for specific user: >>> from django.contrib.sites.models import Site >>> from django.contrib.auth.models import User, Group >>> from guardian.shortcuts import assign >>> site = Site.objects.get_current() >>> user = User.objects.create(username='******') >>> assign("change_site", user, site) <UserObjectPermission: example.com | joe | change_site> >>> user.has_perm("change_site", site) True ... or we can assign permission for group: >>> group = Group.objects.create(name='joe-group') >>> user.groups.add(group) >>> assign("delete_site", group, site) <GroupObjectPermission: example.com | joe-group | delete_site> >>> user.has_perm("delete_site", site) True **Global permissions** This function may also be used to assign standard, *global* permissions if ``obj`` parameter is omitted. Added Permission would be returned in that case: >>> assign("sites.change_site", user) <Permission: sites | site | Can change site> """ user, group = get_identity(user_or_group) # If obj is None we try to operate on global permissions if obj is None: try: app_label, codename = perm.split('.', 1) except ValueError: raise ValueError("For global permissions, first argument must be in" " format: 'app_label.codename' (is %r)" % perm) ctype = ContentType.objects.get(app_label=app_label) perm = Permission.objects.get(content_type=ctype, codename=codename) if user: add_permission_to_user(perm, user) return perm if group: add_permission_to_group(perm, group) return perm perm = perm.split('.')[-1] if user: return UserObjectPermission.objects.assign(perm, user, obj) if group: return GroupObjectPermission.objects.assign(perm, group, obj)