
    sojx              
       $   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
 d dlmZ d dlmZ d dlmZ d d	lmZmZmZm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 d dl m!Z! d dl"m#Z# d dl$m%Z%m&Z&  G d de          Z'dedej(        dededdf
dZ)dS )    )Update)ContextTypesN)ScreenReservedKeys)Crew)DavyBackFight)User)Emoji)ListPageEmojiLegend
ListFilterListFilterType)ReservedKeyboardKeys)Screen)UnauthorizedToViewItemException)PrivateChatException)Keyboard)get_crew_overview_text)get_items_text_keyboard)full_message_sendescape_valid_markdown_charsc                        e Zd Z fdZdeddfdZej        fdee	         fdZ
defdZdef fdZdee         fd	Zdee         f fd
Zd ZdefdZ xZS )CrewSearchListPagec                 n    t                                                       t                      | _        dS )z
        Constructor
        N)super__init__r   objectself	__class__s    3/app/src/chat/private/screens/screen_crew_search.pyr   zCrewSearchListPage.__init__   s*    
 	 FF    	object_idreturnNc                 z    t          j        |          | _        | j        t          t          j                  d S )N)text)r   logical_getr   r   phrasesCREW_NOT_FOUND)r   r"   s     r    
set_objectzCrewSearchListPage.set_object!   s8    &y11;&G,BCCCC r!   c                    | j                                                             t          j        dk    t          j        dk    z  |                                 z                                t          j        	                                t          j
        	                                                              ||          S )NT)r   selectwherer   	is_activeallow_view_in_search get_active_filter_list_conditionorder_byleveldesctotal_gained_chest_amountpaginate)r   pagelimits      r    	get_itemszCrewSearchListPage.get_items&   s    K  U4',4688::< 
 Xdjoo'')G)L)L)N)NOOXdE""		
r!   c                     |                                  t          j                            t	          | j                                                  | j        j                  z   S N)#get_emoji_legend_multiple_formattedr'   CREW_SEARCH_ITEM_TEXTformatr   r   get_name_escapedr1   r   s    r    get_item_textz CrewSearchListPage.get_item_text2   sP    7799G<Y<`<`'(D(D(F(FGGIZ=
 =
 
 	
r!   c                     	 t                                                       n:# t          $ r- | j        j        st          t
          j                  t          w xY wt          | j        | j                  S r9   )	r   get_item_detail_textr   r   r.   r'   0CREW_SEARCH_UNAUTHORIZED_CANNOT_VIEW_FROM_SEARCHr   userr   s    r    rA   z'CrewSearchListPage.get_item_detail_text7   s    	2GG((****. 	2 	2 	2;3 5L   21	2 &dk49===s	    $ 7Ac                    t          t          j        t          j        |                                           t          t          j        t          j        t          j	        dk              t          t          j
        t          j        |                                            g}| j                                        r|                    t          t          j        t          j        |                                                      |                    t          t          j        t          j        t          j        dk                         |S )zS
        Get the emoji legend list

        :return: The emoji legend list
        T)r   r	   LOG_POSITIVEr'    CREW_SEARCH_ITEM_LEGEND_CAN_JOINget_can_join_condition
LOG_YELLOW(CREW_SEARCH_ITEM_LEGEND_AUTO_ACCEPT_JOINr   auto_accept_joinLOG_NEGATIVE#CREW_SEARCH_ITEM_LEGEND_CANNOT_JOINrC   is_crew_captainappendLOG_BLUE5CREW_SEARCH_ITEM_LEGEND_AVAILABLE_FOR_DAVY_BACK_FIGHTget_available_for_dbf_condition
LOG_PURPLE4CREW_SEARCH_ITEM_LEGEND_AUTO_ACCEPTS_DAVY_BACK_FIGHTauto_accept_davy_back_fight)r   results     r    get_emoji_legend_listz(CrewSearchListPage.get_emoji_legend_listD   s    "8++-- 
  @&$. 
 ";--//0 
& 9$$&& 	MMNQ88::    MM$P5=    r!   c           
          t                                                      t          t          j        t
          j        t          j        dt          | j
                  z   dz   z            gz   S )zG
        Get the filter list

        :return: The filter list
        %)r   get_filter_listr   r   STRINGr'   CREW_SEARCH_FILTER_NAMEr   namestrstring_filterr   s    r    rY   z"CrewSearchListPage.get_filter_lists   s_     ww&&((%/sS);%<%<<sBC ,
 
 	
r!   c                     t           j        dk    t           j        dk    z  t           j        dk    z  t           j        | j        j        k    z  t           j        | j        j        r| j        j        j        ndk    z  S )z4
        Whether the user can join the crew
        FTN)	r   is_fullcan_accept_new_membersallow_join_from_searchrequired_bountyrC   bountyidcrewr>   s    r    rG   z)CrewSearchListPage.get_can_join_condition   sq     \U"*d24*d24 #ty'779 w	H49>,,DI	K	
r!   c                    t           j        dk    t           j                            t	          j                              z  t           j                            d t	          j                    D                       z  t           j                            d t	          j                    D                       z  t           j        | j	        j
        j        k    z  S )z
        Get the condition for the crew to be available for DBF
        - Allows DBF requests
        - Has the minimum required members
        - Not already in a DBF (pending too)
        - Not in DBF penalty period
        Tc                     g | ]	}|j         
S  re   .0cs     r    
<listcomp>zFCrewSearchListPage.get_available_for_dbf_condition.<locals>.<listcomp>   s    QQQqtQQQr!   c                     g | ]	}|j         
S ri   rj   rk   s     r    rn   zFCrewSearchListPage.get_available_for_dbf_condition.<locals>.<listcomp>   s    RRRqtRRRr!   )r   allow_davy_back_fight_requestre   in_r   get_crew_with_enough_membersnot_inget_crews_in_activeget_crews_in_penaltyrC   rf   r>   s    r    rQ   z2CrewSearchListPage.get_available_for_dbf_condition   s     /47w{{=EGGHHJw~~QQ]-N-P-PQQQRRT w~~RR]-O-Q-QRRRSSU w$).++	-	
r!   )__name__
__module____qualname__r   intr)   r
   DEFAULT_LIMITlistr   r7   r]   r?   rA   r   rV   r   rY   rG   anyrQ   __classcell__)r   s   @r    r   r      sA       # # # # #DC DD D D D D
 %-$: 

 

tDz 

 

 

 


s 
 
 
 

>c > > > > > >-tK'8 - - - -^
j!1 
 
 
 
 
 

 
 

 
 
 
 
 
 
 
 
r!   r   updatecontextinbound_keyboardrC   r#   c                 <  K   t                      }||_        t          ||t          j        t
          j        t          j        ||| d	  	        \  }}t          ||| ||t          j
        gd t          D             z   |                                           d{V  dS )z
    Manage the Crew member screen
    :param update: The update object
    :param context: The context object
    :param user: The user object
    :param inbound_keyboard: The keyboard object
    :return: None
    T)text_fill_inr   rC   r~   allow_string_filterc                     g | ]}|S ri   ri   )rl   ss     r    rn   zmanage.<locals>.<listcomp>   s    
-
-
-1
-
-
-r!   )r~   keyboardr   excluded_keys_from_back_buttonprevious_screensN)r   rC   r   r   DEFAULT_PRIMARY_KEYr   PVT_CREW_SEARCH_DETAILr'   CREW_SEARCH_ITEM_TEXT_FILL_INr   PAGEDBFRequestReservedKeysget_private_screen_list)r~   r   r   rC   crew_search_list_pageot_textitems_keyboards          r    manager      s       1C0D0D!% 60%: 
 
 
G^ ) )=(A'B
-
-,
-
-
-(.5577           r!   )*src.tg_compatr   src.tg_compat.extr   resources.phrasesr'   <src.chat.private.screens.screen_crew_davy_back_fight_requestr   r   src.model.Crewr   src.model.DavyBackFightr   src.model.Userr   src.model.enums.Emojir	   src.model.enums.ListPager
   r   r   r   $src.model.enums.ReservedKeyboardKeysr   src.model.enums.Screenr   src.model.error.CustomExceptionr    src.model.error.PrivateChatErrorr   src.model.pojo.Keyboardr   src.service.crew_servicer   src.service.list_servicer   src.service.message_servicer   r   r   DEFAULT_TYPEr   ri   r!   r    <module>r      s               * * * * * * # # # # # #             1 1 1 1 1 1       ' ' ' ' ' ' V V V V V V V V V V V V E E E E E E ) ) ) ) ) ) K K K K K K A A A A A A , , , , , , ; ; ; ; ; ; < < < < < < V V V V V V V VF
 F
 F
 F
 F
 F
 F
 F
R'')6'JR'Z^'	' ' ' ' ' 'r!   