o aN @s`ddlmZddlmZddlmZddlmZddlm Z ddl m Z d d d Z d d d Z dS))chain) MethodType)apps)settings)checks)_get_builtin_permissionsNc s||dur ttjntjd\}}|D]}|j|kr#||nqgSg}tjtt fs;| t j dddj jvrS| t j ddj j fddjj jstfd d jjDstjd gkr| t j d jjj fd dn| t jdjjj fdddtjtr| t jdddtjtr| t jddd|S)N.z*'REQUIRED_FIELDS' must be a list or tuple.z auth.E001objidzjThe field named as the 'USERNAME_FIELD' for a custom user model must not be included in 'REQUIRED_FIELDS'.zaThe 'USERNAME_FIELD' is currently set to '%s', you should remove '%s' from the 'REQUIRED_FIELDS'.z auth.E002)hintr r c3s|] }|jjfkVqdSN)fieldsUSERNAME_FIELD).0 constraintcls7s  z#check_user_model..z)django.contrib.auth.backends.ModelBackendzC'%s.%s' must be unique because it is named as the 'USERNAME_FIELD'.z auth.E003z?'%s.%s' is named as the 'USERNAME_FIELD', but it is not unique.zKEnsure that your authentication backend(s) can handle non-unique usernames.z auth.W004z%s.is_anonymous must be an attribute or property rather than a method. Ignoring this is a security issue as anonymous users will be treated as authenticated!z auth.C009z%s.is_authenticated must be an attribute or property rather than a method. Ignoring this is a security issue as anonymous users will be treated as authenticated!z auth.C010)r get_modelrAUTH_USER_MODELsplitlabel isinstanceREQUIRED_FIELDSlisttupleappendrErrorr_meta get_fielduniqueanytotal_unique_constraintsAUTHENTICATION_BACKENDS object_nameWarning is_anonymousrCriticalis_authenticated) app_configskwargs app_label model_name app_configerrorsrrrcheck_user_model s          r3c Ks|dur t}n tdd|D}tdd}|jdj}|jdj}g}|D]}|j}tt |} | rCt dd| Dnd} | |krc|| t |j } |tjd |j| |f|d d | rpt d d| Dnd} | |kr|| t |j} |tjd |j| |f|dd t}|jD]`\}}t ||kr|tjd||j|f|dd t ||kr|tjd||j|f|dd || vr|tjd||jf|dd n||vr|tjd||jf|dd ||qq+|S)Ncss|]}|VqdSr) get_models)rr1rrrrmz+check_models_permissions..auth Permissionnamecodenamecs|]}t|VqdSrlen)rr8rrrryr5rzzThe verbose_name of model '%s' must be at most %d characters for its builtin permission names to be at most %d characters.z auth.E007r csr:rr;)rr9rrrrr5zvThe name of model '%s' must be at most %d characters for its builtin permission codenames to be at most %d characters.z auth.E011zEThe permission named '%s' of model '%s' is longer than %d characters.z auth.E008zIThe permission codenamed '%s' of model '%s' is longer than %d characters.z auth.E012zOThe permission codenamed '%s' clashes with a builtin permission for model '%s'.z auth.E005z;The permission codenamed '%s' is duplicated for model '%s'.z auth.E006)rr4r from_iterablerr"r# max_lengthdictrmaxvaluesr<verbose_name_rawr rr!rkeysr0set permissionsadd)r-r.modelsr7permission_name_max_lengthpermission_codename_max_lengthr2modeloptsbuiltin_permissions"max_builtin_permission_name_lengthverbose_name_max_length&max_builtin_permission_codename_lengthmodel_name_max_length codenamesr9r8rrrcheck_models_permissionsis         0rRr) itertoolsrtypesr django.appsr django.confr django.corer managementrr3rRrrrrs      ^