a
    Dg	                     @   sd   d dl mZmZmZ d dlmZ d dlmZmZ dd Z	dd Z
dd	 Zd
d ZeedddZdS )    )parse_qsurlsplit
urlunsplit)settings)url_has_allowed_host_and_scheme	urlencodec                   C   s   t tddS )zh
    Gets the base URL for the wagtail admin site. This is set in `settings.WAGTAILADMIN_BASE_URL`.
    ZWAGTAILADMIN_BASE_URLN)getattrr    r	   r	   R/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/utils.pyget_admin_base_url   s    r   c                 C   s6   | j dp| jd}|r.t||  hds2dS |S )Nnext)urlZallowed_hosts )POSTgetGETr   get_host)requestZnext_urlr	   r	   r
   get_valid_next_url_from_request   s    
r   c                 C   sD   ddl m}m} t| |r$| j S t| |r<| jr<| jjS t| S )a  
    Helper function to get the latest string representation of an object.
    Draft changes are saved as revisions instead of immediately reflected to the
    instance, so this function utilises the latest revision's object_str
    attribute if available.
    r   )DraftStateMixinPage)	Zwagtail.modelsr   r   
isinstanceZspecific_deferredZget_admin_display_titleZlatest_revisionZ
object_strstr)objr   r   r	   r	   r
   get_latest_str   s    

r   c                 C   sR   z|    }|r|W S W n ty,   Y n0 z
|  W S  tyL   Y dS 0 dS )z
    Returns the preferred display name for the given user object: the result of
    user.get_full_name() if implemented and non-empty, or user.get_username() otherwise.
    r   N)Zget_full_namestripAttributeErrorZget_username)userZ	full_namer	   r	   r
   get_user_display_name'   s    

r   )r   paramsc                 C   sT   t | \}}}}}t|}|| dd | D }t|dd}t|||||fS )z
    Given a URL and a dictionary of query parameters,
    returns a new URL with those query parameters added or updated.

    If the value of a query parameter is None, that parameter will be removed from the URL.
    c                 S   s   i | ]\}}|d ur||qS )Nr	   ).0keyvaluer	   r	   r
   
<dictcomp>F       z$set_query_params.<locals>.<dictcomp>T)doseq)r   r   updateitemsr   r   )r   r   schemenetlocpathqueryfragmentZ	querydictr	   r	   r
   set_query_params;   s    
r-   N)urllib.parser   r   r   Zdjango.confr   Zdjango.utils.httpr   r   r   r   r   r   r   dictr-   r	   r	   r	   r
   <module>   s   	