

_VN                 @   s   d  d l  m Z m Z m Z m Z m Z m Z m Z d  d l m	 Z	 Gd d   d e  Z
 Gd d   d e  Z Gd d   d e  Z e    Gd	 d
   d
 e  Z Wd QXd S)    )AbstractBaseUserAbstractUserBaseUserManagerGroup
PermissionPermissionsMixinUserManager)modelsc               @   s+   e  Z d  Z d d d  Z d d   Z d S)CustomUserManagerNc             C   sZ   | s t  d   n  |  j d |  j |  d |  } | j |  | j d |  j  | S)zM
        Creates and saves a User with the given email and password.
        z Users must have an email addressemaildate_of_birthusing)
ValueErrormodelZnormalize_emailZset_passwordsave_db)selfr   r   passworduser r   G/tmp/pip-build-ghmbqnp_/Django/django/contrib/auth/tests/custom_user.pycreate_user   s    		zCustomUserManager.create_userc             C   s;   |  j  | d | d | } d | _ | j d |  j  | S)Nr   r   Tr   )r   is_adminr   r   )r   r   r   r   ur   r   r   create_superuser   s    	z"CustomUserManager.create_superuser)__name__
__module____qualname__r   r   r   r   r   r   r
      s   r
   c               @   s  e  Z d  Z e j d d d d d d  Z e j d d  Z e j d d  Z e j	   Z
 e   Z d	 Z d
 g Z Gd d   d  Z d d   Z d d   Z d d   Z d d d  Z d d d  Z d d d  Z d d d  Z d d   Z e d d    Z d S) 
CustomUserZverbose_namezemail address
max_length   uniqueTdefaultFr   r   c               @   s   e  Z d  Z d Z d S)zCustomUser.MetaauthN)r   r   r   	app_labelr   r   r   r   Meta.   s   r%   c             C   s   |  j  S)N)r   )r   r   r   r   get_full_name1   s    zCustomUser.get_full_namec             C   s   |  j  S)N)r   )r   r   r   r   get_short_name4   s    zCustomUser.get_short_namec             C   s   |  j  S)N)r   )r   r   r   r   __unicode__7   s    zCustomUser.__unicode__Nc             C   s   t    S)N)set)r   objr   r   r   get_group_permissions;   s    z CustomUser.get_group_permissionsc             C   s   t    S)N)r)   )r   r*   r   r   r   get_all_permissions>   s    zCustomUser.get_all_permissionsc             C   s   d S)NTr   )r   Zpermr*   r   r   r   has_permA   s    zCustomUser.has_permc             C   s   d S)NTr   )r   Z	perm_listr*   r   r   r   	has_permsD   s    zCustomUser.has_permsc             C   s   d S)NTr   )r   r$   r   r   r   has_module_permsG   s    zCustomUser.has_module_permsc             C   s   |  j  S)N)r   )r   r   r   r   is_staffK   s    zCustomUser.is_staff)r   r   r   r	   Z
EmailFieldr   ZBooleanFieldZ	is_activer   	DateFieldr   r
   custom_objectsZUSERNAME_FIELDREQUIRED_FIELDSr%   r&   r'   r(   r+   r,   r-   r.   r/   propertyr0   r   r   r   r   r   #   s"   		r   c               @   s.   e  Z d  Z d Z d d   Z d d   Z d S)RemoveGroupsAndPermissionsz
    A context manager to temporarily remove the groups and user_permissions M2M
    fields from the AbstractUser class, so they don't clash with the
    related_name sets.
    c             C   s   t  j j |  _ t j j |  _ t j t d d } | j	 t d  t j t
 d d } | j	 t d  | | g t j _ | | g t  j _ d  S)NZblankTgroupsuser_permissions)r   _metalocal_many_to_many_old_au_local_m2mr   _old_pm_local_m2mr	   ZManyToManyFieldr   Zcontribute_to_classr   )r   r6   r7   r   r   r   	__enter__V   s    z$RemoveGroupsAndPermissions.__enter__c             C   s"   |  j  t j _ |  j t j _ d  S)N)r:   r   r8   r9   r;   r   )r   exc_type	exc_value	tracebackr   r   r   __exit__`   s    z#RemoveGroupsAndPermissions.__exit__N)r   r   r   __doc__r<   r@   r   r   r   r   r5   P   s   
r5   c               @   sH   e  Z d  Z e j   Z e   Z e j	 d g Z	 Gd d   d  Z
 d S)ExtensionUserr   c               @   s   e  Z d  Z d Z d S)zExtensionUser.Metar#   N)r   r   r   r$   r   r   r   r   r%   p   s   r%   N)r   r   r   r	   r1   r   r   r2   r   r3   r%   r   r   r   r   rB   i   s   	rB   N)Zdjango.contrib.auth.modelsr   r   r   r   r   r   r   Z	django.dbr	   r
   r   objectr5   rB   r   r   r   r   <module>   s   4-
