
    P1iB-                        d dl 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 d	dlmZ d dlmZmZmZmZ d dlmZ d dlZd dlmZ d dl m!Z! d Z"d Z#ed        Z$ G d dee      Z%ed        Z&ed        Z'y)    )renderredirectget_object_or_404)login_required)messages)login)ListView)LoginRequiredMixin)HttpResponseRedirect)reverse   )
PersonForm)Person)getDateTimeGodEarthStemgGodstem
gEarthstemfindGodstem5E)settingsN)gShagodNames)create_temporary_userc                     t        | d      S )Nzbazi/home.html)r   )requests    ,/home/cursorai/projects/iching/bazi/views.pyhomer      s    '+,,    c                    | j                   dk(  r't        | j                        }|j                         r|j	                  d      }| j
                  j                  sddlm} |j                  xs d} ||      \  }}|j                  |||j                  |j                  r|j                  j                  d      nd |j                  r|j                  j                  d      nd d	}t        |      }t        | |       	 t         j"                  j%                  |d
      }	|	j&                  r|	}|j&                  }
n"|	j)                         }
|	j	                          |	}nt         j"                  j-                  | j
                        j/                         }|dk(  }| j
                  |_        ||_        t7        | j
                  d      r| j
                  j8                  rd
|_        |j)                         }
|j	                          t;        j<                  | d       t?        d|j@                        S t               }tC        | dd|i      S # t         j*                  $ rk t         j"                  j-                  |      j/                         }|dk(  }||_        d
|_        ||_        |j)                         }
|j	                          Y w xY w)NPOSTF)commitr   )extract_first_last_name z%Y-%m-%dz%H:%M)name
first_name	last_namegender
birth_date
birth_timeT
created_byowner)r(   is_temporary_userz(Chart calculated and saved successfully.zbazi:person_detail)pkzbazi/calculate.htmlform)"methodr   r   is_validsaveuseris_authenticatedaccounts.utilsr   r!   r$   r%   strftimer&   r   r   r   objectsgetbazi_resultcalculate_baziDoesNotExistfiltercountr(   created_by_temp_userr)   hasattrr*   r   successr   r+   r   )r   r,   personr   	full_namer"   r#   	user_data	temp_userexisting_ownerr6   existing_recordsis_first_records                r   calculate_chartrE      s]   ~~',,'==?YYeY,F <<00B #KK-2	(?	(J%
I
 #KK",!*$mmLRL]L]&"3"3"<"<Z"HcgIOIZIZ&"3"3"<"<W"E`d	 2)<	gy)"%+^^%7%79TX%7%YN%11!/&,&8&8 '5&C&C&E&++-!/ $*>>#8#8GLL#8#Q#W#W#Y "2a"7$+LL!.7<<)<=',,B`B`26F/$335W&PQ0VYY??|'064.AA9 ** 	"'-~~'<'<	'<'R'X'X'Z$&6!&;O(1F%26F/#2FL"("7"7"9KKKM	"s   AI A;KKc                     t        t        || j                        }ddlm} |j                         }t        | d||d      S )Nr+   r(   r   )ConversationConfigzbazi/person_detail.html)r>   max_messages)r   r   r0   	ai.modelsrH   get_max_messagesr   )r   r+   r>   rH   rI   s        r   person_detailrL   ]   sB    v"FF,%668L'4$7  r   c                   6     e Zd ZeZdZdZd Zd Z fdZ	 xZ
S )PersonListViewzbazi/person_list.htmlpersonsc                 d   | j                   j                  j                  d      }|r|S | j                   j                  j                  d      }|r0|j	                         r dt        |      cxk  rdk  rt        |      S  t        j                  j                  dt        j                  d         S )zQ
        Get the number of items to paginate by, or use settings default
        bazi_items_per_pageper_page   d   bazidefault)r   sessionr5   GETisdigitintr   PAGINATE_BY)selfquerysetsession_value	url_values       r   get_paginate_byzPersonListView.get_paginate_byn   s    
 ,,001FG   LL$$((4	**,c)n1K1Ky>! 2L ##''0D0DY0OPPr   c                     t         j                  j                  | j                  j                  d      j                  d      S )NFr'   z-created_at)r   r4   r9   r   r0   order_by)r\   s    r   get_querysetzPersonListView.get_queryset   s:    ~~$$||(( % 
 (=
!	"r   c                    t        |   di |}	 t        j                  j	                  | j
                  j                  d      }|j                  r=t        |j                  d   d      t        |j                  d   d      t        |j                  d   d         d   dt        |j                  d   d      t        |j                  d   d      d	t        |j                  d
   d      t        |j                  d
   d      d	d}d|j                  v rr|j                  d   j	                  d      T|j                  d   j	                  d      6t        |j                  d   d      t        |j                  d   d      d	|d<   ||_        ||d<   |d   D ]M  }|j                  st        |j                  d   d      t        |j                  d   d      t        |j                  d   d         d   dt        |j                  d   d      t        |j                  d   d      d	t        |j                  d
   d      t        |j                  d
   d      d	d}d|j                  v rr|j                  d   j	                  d      T|j                  d   j	                  d      6t        |j                  d   d      t        |j                  d   d      d	|d<   ||_        P |d   }|d   }g }|j                  }	|j                  }
|
dk  rt        d|
dz         }nAt!        |	dz
  d      }t#        |dz   |
      }||
k(  rt!        |dz
  d      }t        ||dz         }||d<   |S # t        j                  $ r	 d |d<   Y w xY w)NTr'   daygodearthe)rf   rg   elementmonth)rf   rg   year)re   rj   rk   houruser_recordrO   	paginatorpage_objrS   r         
page_range )superget_context_datar   r4   r5   r   r0   r6   r   r   r   bazi_displayr8   number	num_pagesrangemaxmin)r\   kwargscontextrm   display_datar>   rn   ro   rr   current_pagetotal_pages
start_pageend_page	__class__s                r   ru   zPersonListView.get_context_data   s+   '*4V4 	* ..,,<<,, - K
 &&  ((?(?(Fu(MN!+K,C,CE,J7,S!T#01H1H1OPU1V#WX[#\  ((?(?(H(OP!+K,C,CG,LW,U!V
  ((?(?(G(NO!+K,C,CF,KG,T!U   [4449P9PQW9X9\9\]b9c9ot  uL  uL  MS  uT  uX  uX  Y`  ua  um'(?(?(G(NO!+K,C,CF,KG,T!U,L(
 ,8(%0GM"
 i(F!!  ((:(:5(A%(HI!+F,>,>u,Eg,N!O#01C1CE1J51Q#RSV#W  ((:(:7(CE(JK!+F,>,>w,G,P!Q
  ((:(:6(B5(IJ!+F,>,>v,Fw,O!P   V///F4F4Fv4N4R4RSX4Y4ejpj|j|  ~D  kE  kI  kI  JQ  kR  k^'(:(:6(B5(IJ!+F,>,>v,Fw,O!P,L(
 '3#1 )6 K(	:& 
))!q+/2J\A-q1J:>;7H;& Aq1
z8a<8J *i "" 	*%)GM"	*s   FM- -N	N	)__name__
__module____qualname__r   modeltemplate_namecontext_object_namer`   rc   ru   __classcell__)r   s   @r   rN   rN   i   s*    E+M#Q""W Wr   rN   c                     t        t        || j                        }| j                  dk(  r:|j	                          t        j                  | d       t        t        d            S t        d      S )NrG   r   zChart deleted successfully.zbazi:person_list)
r   r   r0   r-   deleter   r=   r   r   r   )r   r+   r>   s      r   delete_personr      sW    v"FF~~"?@#G,>$?@@&''r   c                    d}| j                   j                  rg	 t        j                  j	                  | j                   d      j                         }|r+|j                         }|j                  |j                  d|d}d|rt        j                  |      ndi}t        | d|      S # t        $ r}t        d|        Y d}~Dd}~ww xY w)z1View for displaying person relationships analysisNTr'   )idr!   r)   r6   z!Error loading current user BaZi: current_user_bazizbazi/person_relations.html)r0   r1   r   r4   r9   firstr7   r   r!   	Exceptionprintjsondumpsr   )r   r   owner_person	bazi_datarh   r}   s         r   person_relationsr      s     ||$$	;!>>00"<< 1  eg  (779	&//(--!#,	%! 	>OTZZ(9:UYG '7AA  	;5aS9::	;s   A&B( (	C	1CC	)(django.shortcutsr   r   r   django.contrib.auth.decoratorsr   django.contribr   django.contrib.authr   django.views.genericr	   django.contrib.auth.mixinsr
   django.httpr   django.urlsr   formsr   modelsr   iching.utils.bzr   r   r   r   django.confr   r   iching.utils.bzshagodr   r2   r   r   rE   rL   rN   r   r   rs   r   r   <module>r      s    @ @ 9 # % ) 9 ,    X X    . 0-GBR 	 	t' tl ( ( B Br   