o
    [h                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZmZ d dlmZ d d	lmZ h d
Zeh dZdd Zdd ZdefddZdd ZG dd deZG dd deZe ZdS )    N)import_module)Path)HTTPEndpointRedirectResponse)RouteMount)commonsettings)websocket_routes)static_files_app>   ZWSGroupWaitPageZ
MTurkStartZWSRoomParticipantZLiveConsumerZJoinSessionAnonymouslyZMTurkLandingPageZInitializeParticipantZBrowserBotStartLinkZWSBrowserBotsLauncherZAssignVisitorToRoomZLoginZSaveDBZDetectAutoAdvanceZOutOfRangeNotificationZWSChatZWSBrowserBotZWSSubsessionWaitPageZWSGroupByArrivalTime>   ZAdminReportZSessionSplitScreenZWSCreateDemoSessionZCreateDemoSessionZSessionDataZAdvanceSessionZ	DemoIndexZSessionPaymentsZSessionStartLinksZSessionDescriptionZSessionMonitorZSessionDataAjaxZWSSessionMonitorc                    s    t |   fddt D S )Nc                    s,   g | ]\}}t |d rt| kr|qS )url_pattern)hasattrinspect	getmodule).0_ViewClsZviews_module q/home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/otree/urls.py
<listcomp>;   s    z,view_classes_from_module.<locals>.<listcomp>)r   r   
getmembers)module_namer   r   r   view_classes_from_module8   s   
r   c                 C   sT   t | }t | }g }|jD ]}||_||}| }|t|||d q|S )Nname)r	   Zget_pages_module	is_noselfZpage_sequencer   url_nameappendr   )app_namename_in_urlZpages_moduler   Z	page_urlsr   r   r   r   r   r   url_patterns_from_app_pagesC   s   



r"   r   c                 C   sn   t | }g }|D ],}t|d|j}|tv|tvdddtj |_|j}t	|r*| }|
t|||d q|S )Nr   F)ZSTUDYZDEMO Nr   )r   getattr__name__ALWAYS_UNRESTRICTEDUNRESTRICTED_IN_DEMO_MODEr
   Z
AUTH_LEVELZ_requires_loginr   callabler   r   )r   Z	all_viewsZ	view_urlsr   r   r   r   r   r    url_patterns_from_builtin_moduleS   s    r)   c                  C   s   g } t  }tjD ]&}t|}|d}||v r"d||}t||| | t	||7 } q| t
d7 } | t
d7 } | t
d7 } | t
d7 } | t
d7 } | t
d7 } | t
d	7 } | t7 } | td
tddtdtdtdtdg7 } | S )Nr!   zAApp {} has name_in_url='{}', which is already used by another appzotree.views.participantzotree.views.demozotree.views.adminzotree.views.roomzotree.views.mturkzotree.views.exportzotree.views.restz/staticZstatic)Zappr   z/favicon.ico)Zendpoint/)setr
   Z
OTREE_APPSr	   Zget_constantsZget_normalizedformat
ValueErroraddr"   r)   r   r   r   r   FaviconHomeRedirect)routesZused_names_in_urlr    Z	Constantsr!   msgr   r   r   get_urlpatternsm   s4   





r3   c                   @      e Zd Zdd ZdS )r/   c                    
   t dS )Nz/static/favicon.icor   selfrequestr   r   r   get      zFavicon.getNr%   
__module____qualname__r9   r   r   r   r   r/          r/   c                   @   r4   )r0   c                    r5   )Nz/demor   r6   r   r   r   r9      r:   zHomeRedirect.getNr;   r   r   r   r   r0      r>   r0   )r   	importlibr   pathlibr   Zstarlette.endpointsr   Zstarlette.responsesr   Zstarlette.routingr   r   Zotreer	   r
   Zotree.channels.routingr   Zotree.common2r   r&   unionr'   r   r"   strr)   r3   r/   r0   r1   r   r   r   r   <module>   s(    #
