Hi Jorge,

On Thu, Sep 19, 2013 at 11:45 PM, Jorge Cardoso Leitão <jo...@sapo.pt>wrote:

> Hi all.
>
> I summarise the options with some of the issues raised, and I add my own
> concern.
>
>
> One option presented here is to have both models in d.c.auth. As pointed
> out by Russell and others, this causes the problem on how to define the
> models such that they are not installed if they are not being
> the AUTH_USER_MODEL. Assuming that this problem could be solved, the
> user's procedure would be:
>
> To use User (+ Permissions):
> install django.contrib.auth
>
> To use MailUser (+ Permissions):
> install django.contrib.auth
> set AUTH_USER_MODEL to MailUser
>
> The second option presented here is to add a separate app (e.g.
> d.c.mailuser), which would require some imports from django.contrib.auth
> (forms, views). The user's procedure would be:
>
> To use User (+ Permissions):
> install django.contrib.auth
>
> To use MailUser (+ Permissions):
> install django.contrib.auth
> install django.contrib.mailauth
> set AUTH_USER_MODEL to MailUser
>
> Is this correct or I'm missing something important here?
>
>
You've correctly described the two options under discussion. There is an
open question on exactly how to implement option 1, but from a public API
perspective, you're correct.


> If correct, I think the second option is cleaner, even though there is the
> issue to minimise the repetition of code for forms, views, which was
> pointed out to be easier to solve than the problem of model installation.
>
>
> What I want to emphasise here is that django.contrib.auth has to be
> installed in the case the custom model (email or other) is subclassed
> from PermissionsMixin.
>
> This is something that I'm bringing because it seems odd that d.c.auth has
> to be installed even if we want to use mailuser (or any user). Wouldn't be
> possible to detach permissions to a new app, say django.contrib.perms, and
> remove the step of installing d.c.auth? I mean, we are in authentication;
> permissions are not related with authentication.
>

This has been discussed in the past -- largely because there's a difference
between authentication and authorisation. If we had our time over, we'd
probably make this distinction better, and put permissions into a separate
app. However, we're stuck with 8 years of legacy now, and it's hard to
break this.

Unless you can propose a backwards-compatible approach to this problem -
i.e., making sure that every existing project that *doesn't* have
contrib.permissions in INSTALLED_APPS continues to work -- splitting
permissions into a separate app isn't really a viable option.

Also - I'm not sure I completely agree with the argument that if you're
using contrib.emailauth, you shouldn't have to put contrib.auth in
INSTALLED_APPS. This comes down to the idea of "what is an app" -- is it
just models, or is it views, URLS, templates, and more? If it's just models
I might agree with you, but an app is much more than that. If you're using
contrib.emailauth, you're still using auth views, middlewares, and so on.

Yours,
Russ Magee %-)

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to