o
    h                     @   sF   d dl Z d dlmZ dZdZdZG dd deZG dd	 d	ejZ	dS )
    N)modelsi   il   hU c                       s4   e Zd Z fddZdd Zdd Zdd Z  ZS )	ConvertedValuec                    sB   t |}t|k r|}|t }n|}|t }t | |}||_|S N)intUPPER_BOUNDSHIFTsuper__new__db_value)clsvaluedisplay_valuer
   self	__class__ ^/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/test/customuser/fields.pyr	      s   
zConvertedValue.__new__c                 C   s   d| j j d| j dS )N<z: >)r   __name__r
   r   r   r   r   __repr__   s   zConvertedValue.__repr__c                 C   s"   t || jr| j|jkS | j|kS r   )
isinstancer   r
   )r   otherr   r   r   __eq__   s   
zConvertedValue.__eq__c                 C   s
   t | jS r   )hashr
   r   r   r   r   __hash__"   s   
zConvertedValue.__hash__)r   
__module____qualname__r	   r   r   r   __classcell__r   r   r   r   r   
   s
    r   c                       sR   e Zd ZdZdd Zdd Z fddZdd	 Zd
d ZdddZ	dd Z
  ZS )ConvertedValueFieldz
    Roughly copied from https://github.com/django/django/blob/d6eaf7c0183cd04b78f2a55e1d60bb7e59598310/tests/custom_pk/fields.py
    c                 C   s4   t || jd }|stttt}t|| j| |S r   )getattrattnamer   randomrandintLOWER_BOUNDr   setattr)r   instanceaddr   r   r   r   pre_save+   s
   zConvertedValueField.pre_savec                 C   s   |sd S t |tst|}|S r   )r   r   r   r   r   r   r   	to_python2   s
   
zConvertedValueField.to_pythonc                    s,   |d u rd S t |tst|}t |jS r   )r   r   r   get_prep_valuer
   r*   r   r   r   r,   9   s
   
z"ConvertedValueField.get_prep_valuec                 C   s   |sd S t |S r   )r   )r   r   
expression
connectionr   r   r   from_db_value@   s   z!ConvertedValueField.from_db_valuec                 C      |sd S t |jS r   r   r
   )r   r   r.   r   r   r   get_db_prep_saveE      
z$ConvertedValueField.get_db_prep_saveFc                 C   r0   r   r1   )r   r   r.   preparedr   r   r   get_db_prep_valueJ   r3   z%ConvertedValueField.get_db_prep_valuec                 C   r0   r   r1   r*   r   r   r   get_searchable_contentO   r3   z*ConvertedValueField.get_searchable_content)F)r   r   r   __doc__r)   r+   r,   r/   r2   r5   r6   r   r   r   r   r   r    &   s    
r    )
r#   	django.dbr   r%   r   r   strr   IntegerFieldr    r   r   r   r   <module>   s    