﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
25890	AUTH_USER_MODEL unfriendly to custom models with more than one level of encapsulation	Junhua LIU	nobody	"In db/models/utils.py, when model is a string, it's handled by the following:

`app_label, model_name = model.split(""."")`

In the event if AUTH_USER_MODEL has more than a level of encapsulation (e.g. ""apps/authn/CustomUser""), it throws a ValueError: too many values to unpack.

 Suggested fix:

{{{
def make_model_tuple(model):
    """"""
    Takes a model or a string of the form ""app_label.ModelName"" and returns a
    corresponding (""app_label"", ""modelname"") tuple. If a tuple is passed in,
    it's assumed to be a valid model tuple already and returned unchanged.
    """"""
    if isinstance(model, tuple):
        model_tuple = model
    elif isinstance(model, six.string_types):
        strings = model.split(""."")
        app_label = ""."".join(strings[:-1])
        model_name = strings[-1]
        # app_label, model_name = model.split(""."")
        model_tuple = app_label, model_name.lower()
    else:
        model_tuple = model._meta.app_label, model._meta.model_name
    assert len(model_tuple) == 2, ""Invalid model representation: %s"" % model
    return model_tuple
}}}"	Cleanup/optimization	closed	contrib.auth	1.9	Normal	invalid	AUTH_USER_MODEL		Unreviewed	1	0	0	0	0	0
