
    4 Ofd!                         d Z ddlZddlmZ ddlZddlmZ ddl 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y)ug    Документация по выдаче VM: https://bcrm.carbonsoft.ru/project/Document/DOC-000884     N)CmfValidationError)commit_all_ds)*)ResponseMixin   )normalize_phone)
Supervisor)validate_org_namec                   8   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y	)CRMViewz/crmu,   Обратитесь в <a href="https://wwwu9   /support/">техническую поддержку</a>.u!   Перейдите по <a href="ue   auth/signin?action=proceed">ссылке</a> чтобы повторить попытку позже.c                      y)NzNo default action specified )selfs    ./modules/auth/views/crm.pypostzCRMView.post   s    ,    c                    t        d       t        j                  j                  j                  r| j                  dd| j                  z         S t        j                  j                  d      }|s| j                  dd| j                  z         S t        |      \  }}|s| j                  d|       S 	 t        j                  t        j                  j                  j                  |       t#                t$        j&                  j                  t        j                  j                  	      }|s| j                  dd
| j                         S |j(                  j                  r| j                  dd| j                         S ||_        |j-                          t        dd       | j/                  d|      S #  t        j                  d       | j                  dd| j                          cY S xY w)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    	!66<<;;s$[^b^n^n$noo>>%%j1;;s$`cgcscs$stt)(3X;;sxj22	Maffll00(; 	~~!!!5;;s&NtO_O_N`$abbZZ;;s&NtO_O_N`$abb 		t,xxY[_``	Mpq;;s&xy}  zJ  zJ  yK  %L  M  Ms   38F9 96G1c                    t        d       t        j                  j                  j                  r| j                  dd| j                         S 	 t        j                         }t        j                  |       t        dd       | j                  d	t        j                        S #  t        j                  d       | j                  dd      cY S xY w)
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     		"66<<;;s  'U  VZ  Vf  Vf  Ug  %h  i  i	Z779Hx( 		-xxoqrqwqwxx		Zqr;;s  %Y  Z  Zs   )B& &)CNc                    | t         j                  } t        | j                  j                  j                         D cg c]  }|j                  d      d    c}      }t        |      dkD  sJ d| j                          t        |      dk(  sJ d| j                          |j                         }|dz   | j                  j                  j                         v sJ d       |S c c}w )N:r   ui   Пользователь не имеет прав ни на одну виртуальную машину    u{   Пользователь владеет более 1 CRM, не ясно какую именно переименовать z:AdminsuY   У пользователя нет административных прав на EvaTeam)r   r   setr+   r%   splitlenpop)r   r+   scopesr   s       r   r2   z CRMView._get_org_name_from_scopeS   s   <66Dtzz7G7G7M7M7OPeekk#&q)PQ6{Q  	Y  #L  MQ  MW  MW  LX  !Y  	Y6{a  	l  $_  `d  `j  `j  _k  "l  	l::<)#tzz'7'7'='='??  	]  B]  	]? Qs   C&c                 $   t         j                  j                  d      }|s+d}t        j	                  d|        | j                  d      S |j                         j                         j                  d      d   }t        j                  st        d      S t        j                  j                  t        j                  j                  j                        }|st        d	      S |j                   j"                  r| j%                  t        d
      |      S |j'                         }|s| j%                  t        d
      |      S ||vrZd| d}t        j	                  d| d| d| dt        j                  j                  j                          | j                  d      S t         j(                  j                  d      dk(  r	 t+        j,                  |      \  }}}|dk7  r\d}	t        j3                  d|	 d| d| dt        j                  j                  j                   d| d|        | j                  d      S | j%                  t        d      |      S | j                  d      S # t.        $ r}d}t1        |      }Y d}~d}~ww xY w)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1r5   Nu   Ошибка запуска.z; res=z; out=/)r"   r#   r$   r&   inforenderlowerstripr7   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   rI   zCRMView.restore_idle_acrm_   s    NN&&{3	]ELL;E7CD;;;<< OO%++-33C8;	 vvN++~~!!(:(:!;ABB::88H^448@@##%88H^448@@ F"RS\R]  ^I  JELL;E7+i[Xabhaiiqrsrxrxr~r~  sE  sE  rF  G  H;;;<<<<E"c)(::9E3 ax >!!$D]OS^_h^iirsyrz  {C  DE  DJ  DJ  DP  DP  DV  DV  CW  W]  ^a  ]b  bh  il  hm  #n  o{{#?@@88HSM855{{788  !fs   I/ /	J8J

J)N)__name__
__module____qualname____url__configAUTH_SESSION_COOKIE_DOMAINr!   auth_base_hrefr(   cmfviewsactionr   r   r1   staticmethodr2   rI   r   r   r   r   r      s    G@AbAb@c dC CK5n6F5G H^ ^K 	YY- - 	YY!a !aF 	YYy y( 	 	 	YY09 09r   r   c                 ~    d}t        d|z   d|  d|rdnd dt        j                  j                   dd|z   	       y )N   = DONEBEGIN)printr   r   r   )stager   lengths      r   r   r      sE    F	S6\N!E7!dF#@!&&,,qQTW]Q]P^
_`r   )F)__doc__idnacmf.base_errorr   	cmf.viewsrX   cmf.data_providers.baser   cmf.includemodules.auth.views.responser   models.phoner   models.supervisorr	   models.org_namer
   rY   BaseViewr   r   r   r   r   <module>rp      sD    m  -  1  5 * * /A9cii  - A9Har   