← Back
Editing: fields.cpython-311.pyc
� 48zj߸ � �� � d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl m Z mZ ddlm Z ddlmZmZ ddlmZ ddlmZ ddlmZ dd lmZmZ dd lmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 dd l3m4Z4 ddl5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z<m=Z= dZ> G d� d� � Z? G d� de?� � Z@ G d� de?� � ZA G d� deA� � ZB G d� deA� � ZC G d� de?� � ZD G d� deD� � ZE G d � d!eD� � ZF G d"� d#� � ZG G d$� d%eD� � ZH G d&� d'e?� � ZI G d(� d)e@� � ZJ G d*� d+e@� � ZK G d,� d-e?� � ZL G d.� d/eL� � ZM G d0� d1e@� � ZN G d2� d3e?� � ZO G d4� d5eO� � ZP G d6� d7� � ZQ G d8� d9e?� � ZR G d:� d;eR� � ZS G d<� d=eR� � ZT G d>� d?eT� � ZU G d@� dAe?� � ZV G dB� dCe?� � ZW G dD� dEeR� � ZX G dF� dGeW� � ZY G dH� dIe@� � ZZ G dJ� dKe@� � Z[ G dL� dMe@� � Z\ G dN� dOe]� � Z^ G dP� dQe]� � Z_ G dR� dSe@� � Z`dS )Tz Field classes. � N)�Decimal�DecimalException)�BytesIO)�urlsplit� urlunsplit)� validators)�ValidationError�� BoundField)�from_current_timezone�to_current_timezone)�FILE_INPUT_CONTRADICTION� CheckboxInput�ClearableFileInput� DateInput� DateTimeInput� EmailInput� FileInput�HiddenInput�MultipleHiddenInput�NullBooleanSelect�NumberInput�Select�SelectMultiple�SplitDateTimeWidget�SplitHiddenDateTimeWidget�Textarea� TextInput� TimeInput�URLInput)�formats)�parse_datetime�parse_duration)�duration_string)�MAX_IPV6_ADDRESS_LENGTH�clean_ipv6_address)�_lazy_re_compile)�gettext_lazy� ngettext_lazy)�Field� CharField�IntegerField� DateField� TimeField� DateTimeField� DurationField� RegexField� EmailField� FileField� ImageField�URLField�BooleanField�NullBooleanField�ChoiceField�MultipleChoiceField� ComboField�MultiValueField� FloatField�DecimalField�SplitDateTimeField�GenericIPAddressField� FilePathField� JSONField� SlugField�TypedChoiceField�TypedMultipleChoiceField� UUIDFieldc � � � e Zd ZeZeZg Zd ed� � iZ e ej � � Z dddddddddddd�� fd � Zd � Zd� Zd� Zd � Zd� Zd� Zd� Zd� Zd� Zd� Z� xZS )r* �requiredzThis field is required.TN� F� )rG �widget�label�initial� help_text�error_messages�show_hidden_initialr �localize�disabled�label_suffixc � �� |||c| _ | _ | _ || _ || _ | | _ || _ |p| j }t |t � � r |� � }nt j |� � }| | _ | j rd|_ | j |_ | � |� � }|r|j � |� � || _ i } t% | j j � � D ]&}| � t+ |di � � � � �'| � |pi � � | | _ g | j �|�| _ t3 � � � � � d S )NT�default_error_messages)rG rK rL rO rM rQ rR rJ � isinstance�type�copy�deepcopyrP �is_localized�is_required�widget_attrs�attrs�update�reversed� __class__�__mro__�getattrrN �default_validatorsr �super�__init__)�selfrG rJ rK rL rM rN rO r rP rQ rR �extra_attrs�messages�cr_ s ��5/usr/lib/python3/dist-packages/django/forms/fields.pyrd zField.__init__: sh �� �4 3;�E�7�/�� �t�z�4�<�#6�� �"��� �� �(����&�4�;���f�d�#�#� +��V�X�X�F�F��]�6�*�*�F� !�� ��=� '�"&�F�� "�]��� �'�'��/�/��� -��L����,�,�,�������$�.�0�1�1� F� F�A��O�O�G�A�'?��D�D�E�E�E�E�����,�"�-�-�-�&���A�D�3�A�j�A��� ���������� c � � |S �NrI �re �values ri � prepare_valuezField.prepare_valuex � � ��rj c � � |S rl rI rm s ri � to_pythonzField.to_python{ rp rj c �b � || j v r#| j rt | j d d�� � �d S d S �NrG ��code)�empty_valuesrG r rN rm s ri �validatezField.validate~ s@ � ��D�%�%�%�$�-�%�!�$�"5�j�"A� �S�S�S�S� &�%�%�%rj c �: � || j v rd S g }| j D ]t} ||� � �# t $ rY}t |d� � r%|j | j v r| j |j |_ |� |j � � Y d }~�md }~ww xY w|rt |� � �d S )Nrv ) rw r r �hasattrrv rN �message�extend� error_list)re rn �errors�v�es ri �run_validatorszField.run_validators� s� � ��D�%�%�%��F����� ,� ,�A� ,���%������"� ,� ,� ,��1�f�%�%� <�!�&�D�4G�*G�*G� $� 3�A�F� ;�A�I�� � �a�l�+�+�+�+�+�+�+�+����� ,���� � *�!�&�)�)�)� *� *s �$� B�AB�Bc � � | � |� � }| � |� � | � |� � |S )z� Validate the given value and return its "cleaned" value as an appropriate Python object. Raise ValidationError for any errors. )rr rx r� rm s ri �cleanzField.clean� s@ � � ���u�%�%��� � �e�������E�"�"�"��rj c � � | j r|S |S )a' Return the value that should be shown for this field on render of a bound form, given the submitted POST data for the field and the initial data, if any. For most fields, this will simply be data; FileFields need to handle it a bit differently. �rQ �re �datarL s ri � bound_datazField.bound_data� s � � �=� ��N��rj c � � i S )z� Given a Widget instance (*not* a Widget class), return a dictionary of any HTML attributes that should be added to the Widget, based on this Field. rI )re rJ s ri r[ zField.widget_attrs� s � � � rj c � � | j rdS | � |� � }t | d� � r,| � |� � | � |� � k S n# t $ r Y dS w xY w|�|nd}|�|nd}||k S )z)Return True if data differs from initial.F�_coerceTNrH )rQ rr rz r� r )re rL r� � initial_value� data_values ri �has_changedzField.has_changed� s� � � �=� ��5� ��>�>�$�'�'�D��t�Y�'�'� C��|�|�D�)�)�T�\�\�'�-B�-B�B�B� C��� � � ��4�4� ���� $+�#6���B� �!�-�T�T�2� �� �*�*s �AA � A+�*A+c �$ � t || |� � S )zu Return a BoundField instance that will be used when accessing the form field in a template. r )re �form� field_names ri �get_bound_fieldzField.get_bound_field� s � � �$��j�1�1�1rj c �� � t j | � � }||t | � � <