
    Yfd!                         d Z ddlZddlmZ ddlZddlmZ ddlT ddl	m
Z
 ddlmZ dd	lmZ dd
lmZ  G d dej        j        e
          ZddZdS )ug    Документация по выдаче VM: https://bcrm.carbonsoft.ru/project/Document/DOC-000884     N)CmfValidationError)commit_all_ds)*)ResponseMixin   )normalize_phone)
Supervisor)validate_org_namec                      e Zd ZdZdej         dZd e             dZe	j
        j        d             Ze	j
        j        d             Ze	j
        j        d             Zedd
            Ze	j
        j        d             Zd	S )CRMViewz/crmu,   Обратитесь в <a href="https://wwwu9   /support/">техническую поддержку</a>.u!   Перейдите по <a href="ue   auth/signin?action=proceed">ссылке</a> чтобы повторить попытку позже.c                     dS )NzNo default action specified )selfs    ./modules/auth/views/crm.pypostzCRMView.post   s    ,,    c                    t          d           t          j        j        j        r|                     dd| j        z             S t          j        	                    d          }|s|                     dd| j        z             S t          |          \  }}|s|                     d|           S 	 t          j        t          j        j        j        |           n?#  t                              d           |                     dd| j                   cY S xY wt#                       t$          j        	                    t          j        j        	          }|s|                     dd
| j                   S |j        j        r|                     dd| j                   S ||_        |                                 t          dd           |                     d|          S )u,  
        По куке получаем юзера и пытаемся застолбить за ним виртуалку. Email берём строго из куки!
        :return: служебный hostname виртуалки + кука с логином и scope с этим hostname
        assign  u5   Не удалось получить CRM. Код #1. org_nameu:   Не удалось получить ORG_NAME. Код #2. uP   Ошибка сервера, не удалось получить CRM. Код #3  uR   Ошибка сервера, не удалось получить CRM. Код #3. loginu(   Ошибка сервера. Код #4. u(   Ошибка сервера. Код #5. Tdoneu?   Успешно выдана виртуальная машина)pretty_log_linegauthr   is_null_error__support__requestvaluesgetr
   r	   r   valuelogging	exception__proceed__r   modelsCmfAuthscoper   save_ok)r   r   reserr_textr   s        r   r   zCRMView.assign   s    	!!!6< 	p;;s$[^b^n$nooo>%%j11 	u;;s$`cgcs$sttt)(33X 	3;;sxM222	Mafl0(;;;;	Mpqqq;;s  %Ly}  zJ  %L  %L  M  M  M  M  M~!!!55 	c;;s$atO_$a$abbbZ 	c;;s$atO_$a$abbb 		t,,,,xxY[_```s   /)C :Dc                    t          d           t          j        j        j        r|                     dd| j                   S 	 t                                          }t          j
        |           n7#  t                              d           |                     dd          cY S xY wt          dd           |                     d	t          j                  S )
u  
        Обновляем демо-данные внутри виртуальной машины пользователя в фоне,
        пока он заполняет форму с дополнительными данными для следующего этапа.
        :return: те же самые билеты авторизации, что и шагом выше.
        preparer   un   Ошибка: недостаточно прав для обновления демо-данных. Код #6. uQ   Произошла ошибка при подготовке демо-данныхr   ur   WARNING: Ошибка сервера, не удалось обновить демо-данные внутри CRM.Tr   uU   Демо-данные в виртуальной машине подготовлены)r   r   r   r+   r   r    r(   r   _get_org_name_from_scoper	   r1   r&   r'   r-   )r   r   s     r   r1   zCRMView.prepare>   s     		"""6< 	i;;s  %h  VZ  Vf  %h  %h  i  i  i	Z7799Hx((((	Zqrrr;;s  %Y  Z  Z  Z  Z  Z	----xxoqrqwxxxs   -A3 32B'Nc                    | t           j        } t          d | j        j                                        D                       }t          |          dk    sJ d| j                     t          |          dk    sJ d| j                     |                                }|dz   | j        j                                        v s
J d            |S )Nc                 D    g | ]}|                     d           d         S ):r   )split).0r+   s     r   
<listcomp>z4CRMView._get_org_name_from_scope.<locals>.<listcomp>W   s)    PPPeekk#&&q)PPPr   r   ui   Пользователь не имеет прав ни на одну виртуальную машину    u{   Пользователь владеет более 1 CRM, не ясно какую именно переименовать z:AdminsuY   У пользователя нет административных прав на EvaTeam)r   r   setr+   r%   r6   lenpop)r   scopesr   s      r   r2   z CRMView._get_org_name_from_scopeS   s    <6DPPtz7G7M7M7O7OPPPQQ6{{Q  !Y  MQ  MW  !Y  !Y6{{a  "l  `d  `j  "l  "l::<<)#tz'7'='='?'????  B]???r   c                 f   t           j                            d          }|s4d}t                              d|            |                     d          S |                                                                                    d          d         }t          j
        st          d          S t          j                            t          j
        j        j                  }|st          d	          S |j        j        r$|                     t          d
          |          S |                                }|s$|                     t          d
          |          S ||vrUd| d}t                              d| d| d| dt          j
        j        j                    |                     d          S t           j                            d          dk    r	 t+          j        |          \  }}}n(# t.          $ r}d}t1          |          }Y d}~nd}~ww xY w|dk    rWd}	t                              d|	 d| d| dt          j
        j        j         d| d|            |                     d          S |                     t          d          |          S |                     d          S )uH  
        Сюда попадает клиент, когда у него остановлена vm по idle.
        Отображаем ему список vm, по клику запускаем restore и редиректим.
        TODO: в шаблоне поправить оформление и верстку
        	acrm_nameuG   Ошибка запуска системы. Не указано имя.u    Ошибка restore_idle_acrm: zcrm_restore_idle_acrm.html.r   z/auth/signinr   z#/auth/signout?next_url=/auth/signinz/auth/assign)r   u<   Нет доступа к указанной системе (u+   ), либо её не существует.z acrm_name=z	; scopes=z; email=run1r9   Nu   Ошибка запуска.z; res=z; out=/)r"   r#   r$   r&   inforenderlowerstripr6   r   r   redirectr)   r*   emailr%   r+   r   r-   prepare_scopeformr	   restore_idle_acrm	Exceptionstrr'   )
r   r?   errorr   r=   _outr.   eerror_restores
             r   rL   zCRMView.restore_idle_acrm_   s:    N&&{33	 	=]ELLCECCDDD;;;<<< OO%%++--33C88;	 v 	,N+++~!!(:!;; 	CABBB: 	A88H^4448@@@##%% 	A88H^4448@@@ F"" JS\  J  J  JELL  GE  G  Gi  G  Gbh  G  Grsrxr~  sE  G  G  H  H  H;;;<<<<E""c))(:9EE3   !ff axx >!!  #n]  #n  #n_h  #n  #nsy  #n  #n  DE  DJ  DP  DV  #n  #n  ^a  #n  #n  il  #n  #n  o  o  o{{#?@@@88HSMM8555{{7888s   G5 5
H?HH)N)__name__
__module____qualname____url__configAUTH_SESSION_COOKIE_DOMAINr!   auth_base_hrefr(   cmfviewsactionr   r   r1   staticmethodr2   rL   r   r   r   r   r      s       GCAb C C CK^nn6F6F ^ ^ ^K 	Y- - - 	Y!a !a !aF 	Yy y y( 	 	 	 \	 	Y09 09 09 09 09r   r   Fc                 v    d}t          d|z   d|  d|rdnd dt          j        j         dd|z   	           d S )N   = DONEBEGIN)printr   r   r   )stager   lengths      r   r   r      sY    F	S6\
_
_E
_
_d$?FF
_
_!&,
_
_QTW]Q]
_
_`````r   )F)__doc__idnacmf.base_errorr   	cmf.viewsr[   cmf.data_providers.baser   cmf.includemodules.auth.views.responser   models.phoner   models.supervisorr	   models.org_namer
   r\   BaseViewr   r   r   r   r   <module>rs      s    m m  - - - - - -     1 1 1 1 1 1     5 5 5 5 5 5 * * * * * * * * * * * * / / / / / /A9 A9 A9 A9 A9ci - A9 A9 A9Ha a a a a ar   