B
    CVvg  ã               @   s€  d Z ddlZddlmZ G dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZ	G dd„ de	ƒZ
G dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ deƒZG dd„ deƒZG d d!„ d!eƒZG d"d#„ d#eƒZG d$d%„ d%eƒZG d&d'„ d'eƒZG d(d)„ d)eƒZd*ZG d+d,„ d,eƒZG d-d.„ d.eƒZG d/d0„ d0eƒZdS )1z.
Global Django exception and warning classes.
é    N)Úmake_hashablec               @   s   e Zd ZdZdS )ÚFieldDoesNotExistz(The requested model field does not existN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   ú:/tmp/pip-install-o3oxmrkh/Django/django/core/exceptions.pyr   	   s   r   c               @   s   e Zd ZdZdS )ÚAppRegistryNotReadyz-The django.apps registry is not populated yetN)r   r   r   r   r   r   r   r	   r
      s   r
   c               @   s   e Zd ZdZdZdS )ÚObjectDoesNotExistz#The requested object does not existTN)r   r   r   r   Zsilent_variable_failurer   r   r   r	   r      s   r   c               @   s   e Zd ZdZdS )ÚMultipleObjectsReturnedz?The query returned multiple objects when only one was expected.N)r   r   r   r   r   r   r   r	   r      s   r   c               @   s   e Zd ZdZdS )ÚSuspiciousOperationz!The user did something suspiciousN)r   r   r   r   r   r   r   r	   r      s   r   c               @   s   e Zd ZdZdS )ÚSuspiciousMultipartFormz+Suspect MIME request in multipart form dataN)r   r   r   r   r   r   r   r	   r   !   s   r   c               @   s   e Zd ZdZdS )ÚSuspiciousFileOperationz/A Suspicious filesystem operation was attemptedN)r   r   r   r   r   r   r   r	   r   &   s   r   c               @   s   e Zd ZdZdS )ÚDisallowedHostz'HTTP_HOST header contains invalid valueN)r   r   r   r   r   r   r   r	   r   +   s   r   c               @   s   e Zd ZdZdS )ÚDisallowedRedirectz&Redirect to scheme not in allowed listN)r   r   r   r   r   r   r   r	   r   0   s   r   c               @   s   e Zd ZdZdS )ÚTooManyFieldsSentzl
    The number of fields in a GET or POST request exceeded
    settings.DATA_UPLOAD_MAX_NUMBER_FIELDS.
    N)r   r   r   r   r   r   r   r	   r   5   s   r   c               @   s   e Zd ZdZdS )ÚTooManyFilesSentzk
    The number of fields in a GET or POST request exceeded
    settings.DATA_UPLOAD_MAX_NUMBER_FILES.
    N)r   r   r   r   r   r   r   r	   r   =   s   r   c               @   s   e Zd ZdZdS )ÚRequestDataTooBigzq
    The size of the request (excluding any file uploads) exceeded
    settings.DATA_UPLOAD_MAX_MEMORY_SIZE.
    N)r   r   r   r   r   r   r   r	   r   F   s   r   c               @   s   e Zd ZdZdS )ÚRequestAbortedz=The request was closed before it was completed, or timed out.N)r   r   r   r   r   r   r   r	   r   N   s   r   c               @   s   e Zd ZdZdS )Ú
BadRequestz1The request is malformed and cannot be processed.N)r   r   r   r   r   r   r   r	   r   S   s   r   c               @   s   e Zd ZdZdS )ÚPermissionDeniedz+The user did not have permission to do thatN)r   r   r   r   r   r   r   r	   r   X   s   r   c               @   s   e Zd ZdZdS )ÚViewDoesNotExistz!The requested view does not existN)r   r   r   r   r   r   r   r	   r   ]   s   r   c               @   s   e Zd ZdZdS )ÚMiddlewareNotUsedz8This middleware is not used in this server configurationN)r   r   r   r   r   r   r   r	   r   b   s   r   c               @   s   e Zd ZdZdS )ÚImproperlyConfiguredz'Django is somehow improperly configuredN)r   r   r   r   r   r   r   r	   r   g   s   r   c               @   s   e Zd ZdZdS )Ú
FieldErrorz(Some kind of problem with a model field.N)r   r   r   r   r   r   r   r	   r   l   s   r   Ú__all__c                   sj   e Zd ZdZd‡ fdd„	Zedd„ ƒZedd„ ƒZd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Z‡  ZS )ÚValidationErrorzAn error while validating data.Nc                s  t ƒ  |||¡ t|tƒrTt|dƒr,|j}n(t|dƒs>|j}n|j|j|j	  }}}t|t
ƒrši | _x²| ¡ D ]&\}}t|tƒsˆt|ƒ}|j| j|< qnW n~t|tƒrþg | _xl|D ]H}t|tƒsÆt|ƒ}t|dƒrê| j t|j ¡ g ƒ¡ q°| j |j¡ q°W n|| _|| _|| _	| g| _dS )aÒ  
        The `message` argument can be a single error, a list of errors, or a
        dictionary that maps field names to lists of errors. What we define as
        an "error" can be either a simple string or an instance of
        ValidationError with its message attribute set, and what we define as
        list or dictionary can be an actual `list` or `dict` or an instance
        of ValidationError with its `error_list` or `error_dict` attribute set.
        Ú
error_dictÚmessageN)ÚsuperÚ__init__Ú
isinstancer   Úhasattrr   Ú
error_listr   ÚcodeÚparamsÚdictÚitemsÚlistÚextendÚsumÚvalues)Úselfr   r%   r&   ÚfieldÚmessages)Ú	__class__r   r	   r!   v   s2    	








zValidationError.__init__c             C   s   t | dƒ t| ƒS )Nr   )Úgetattrr'   )r-   r   r   r	   Úmessage_dict¡   s    
zValidationError.message_dictc             C   s$   t | dƒrtt| ƒ ¡ g ƒS t| ƒS )Nr   )r#   r+   r'   r,   r)   )r-   r   r   r	   r/   ©   s    
zValidationError.messagesc             C   sN   t | dƒr6x>| j ¡ D ]\}}| |g ¡ |¡ qW n| tg ¡ | j¡ |S )Nr   )r#   r   r(   Ú
setdefaultr*   ÚNON_FIELD_ERRORSr$   )r-   r   r.   r$   r   r   r	   Úupdate_error_dict¯   s
    
z!ValidationError.update_error_dictc             c   sj   t | dƒr6xZ| j ¡ D ]\}}|tt|ƒƒfV  qW n0x.| jD ]$}|j}|jrX||j; }t|ƒV  q>W d S )Nr   )	r#   r   r(   r)   r   r$   r   r&   Ústr)r-   r.   ÚerrorsÚerrorr   r   r   r	   Ú__iter__·   s    

zValidationError.__iter__c             C   s"   t | dƒrtt| ƒƒS tt| ƒƒS )Nr   )r#   Úreprr'   r)   )r-   r   r   r	   Ú__str__Â   s    
zValidationError.__str__c             C   s   d|  S )NzValidationError(%s)r   )r-   r   r   r	   Ú__repr__Ç   s    zValidationError.__repr__c             C   s   t |tƒstS t| ƒt|ƒkS )N)r"   r   ÚNotImplementedÚhash)r-   Úotherr   r   r	   Ú__eq__Ê   s    
zValidationError.__eq__c             C   sV   t | dƒr"t| j| jt| jƒfƒS t | dƒr:tt| jƒƒS ttt| j	t
 d¡d�ƒƒS )Nr   r   )Úkey)r#   r>   r   r%   r   r&   r   ÚtupleÚsortedr$   ÚoperatorÚ
attrgetter)r-   r   r   r	   Ú__hash__Ï   s    

zValidationError.__hash__)NN)r   r   r   r   r!   Úpropertyr2   r/   r5   r9   r;   r<   r@   rF   Ú__classcell__r   r   )r0   r	   r   t   s   +r   c               @   s   e Zd ZdZdS )ÚEmptyResultSetz)A database query predicate is impossible.N)r   r   r   r   r   r   r   r	   rI   Û   s   rI   c               @   s   e Zd ZdZdS )ÚSynchronousOnlyOperationzBThe user tried to call a sync-only function from an async context.N)r   r   r   r   r   r   r   r	   rJ   à   s   rJ   )r   rD   Zdjango.utils.hashabler   Ú	Exceptionr   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r   rI   rJ   r   r   r   r	   Ú<module>   s2   	g