
    Zfn                     Z   d dl mZ d dlmZ d dlmZ d dlZ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 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# dZ$dZ%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d  Z/d! Z0d" Z1d# Z2d'd$Z3d'd%Z4d'd&Z5y)(    )render)HttpResponse)IntegrityErrorN)Count)Q)connections   )Venue)Semester_block)ClassSession)Seed)Faculty)	Programme)Level)Teacher)Module)LevelModule)TeacherModule)SpecialVenueModule)MondayTuesday	WednesdayThursdayFriday)r	            c                    t        j                         }|j                  t        d       |j                  t        d       |j                  t
        d       |j                  t        d       |j                  t        d       |j                  t        d       |j                  t        d       |j                  t
        d       |j                  t        d       |j                  t        d       |j                         }t        d      S )N   r	   
   P      2   done)r   seeder
add_entityr   r   r   r   r   r
   r   r   r   executer   )requestr%   inserted_pkss      */var/www/teaching_timetable/venue/views.pydoesSeedingr+      s    [[]F
gq!
na(
i$
eR 
gr"
eR 
fb!
i$
k2&
mR(>>#L    c                 	   t         j                  j                  dd      j                  t	        d            j                  d      }|D cg c]  }|d   	 }}|D cg c]  }|d   	 }}|D ]  }|d   }|d   }t        |       t        j                  j                  |      j                         }	|	d k7  rt        d       t        |	       t        d       t        j                  j                  |      j                         }
t        j                  j                  |	j                  d	      j                  |
j                  
      j                         }t        |       |d k(  rt        j                  j                  |      j                         }t        d       t        dt        |      z          t        |       t        d       |D ]  }t        di |}t        |j                  |j                   |j"                  |j                  t$        j                  j'                  |      t(        j                  j'                  |      |j*                  |j,                        }	 |j/                          t        |       t        d       |j0                  d k7  r|j3                           nt        j                  j                  |      j7                         }
t        |       t        |
       t        d       |
d k(  rt        j                  j                  d      j                  |
j                  
      j7                         }|d k(  rt        j                  j                  |      j                         }|D ]  }t        di |}t        |j                  |j                   |j"                  |j                  t$        j                  j'                  |      t(        j                  j'                  |      |j*                  |j,                        }	 |j/                          t        |       t        d       |j0                  d k7  r|j3                           t        d        t9        d      S c c}w c c}w # t4        $ r"}t        dt        |      z          Y d }~d }~ww xY w# t4        $ r"}t        dt        |      z          Y d }~Xd }~ww xY w)Nmoduleteachercountr	   	count__gtr.   z$------------------------------------T)venueteacher__isnull)	level__idz$----------------o-------------------	module_idz%----------------o--------------------pk)session_dayperioddurationr5   r/   r.   levelsemester_block_idzH==============================special-saved=============================z	expetion %mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm)r6   z@==============================saved=============================zP================================================================================-............................................. )r   objectsvaluesannotater   filterprintr   firstr   r   r5   excludelevel_idstrr;   r<   r=   r   getr   r>   r?   saveiddelete	Exceptionlastr   )r(   r?   teacher_modulestm
module_idsteacher_idsteacher_moduler8   
teacher_idspecial_venue_modulefirst_module_levelclass_session_for_specialmodule_levelsmodule_levellm1new_class_sessioneclass_sessions                     r*   handleMassModulesra   .   sg    $++228YGuY'( 
 *992"X,9J9+:;R2i=;K;) [b"8,	#I.
n  299@@	@RXXZ4' 89&'89!,!4!4!;!;9!;!M!S!S!U(4(<(<(C(CJ^JdJdTX )D )ZZaZa,55 [b [77<uw & +,(D0'//66i6HOOQM89+c)n,-- 9: - .!1L1$0";"G"G6==8AA5;;%oo11Z1@#^^//9/=II'@'R'R	%!.%**,+,de033t;188:'.. "-!4!4!;!;9!;!M!R!R!T)$%9:!T)(00777MUU,55 V 77;tv  $'//66i6HOOQM - .!1L1$0 - 9 9(//*33'--#OO//:/>!>>---;))&3&E&E	%!.%**,+,\]$''4/%,,.).2 	`aw[bz GHHA :;f ! .+c!f,--.L ! .+c!f,--.s>   R R3AR+AS	S R;;S 	S.S))S.c                    t        dd      5 }t        j                  |      }t        t	        |             |D ]  }|d   dk(  r|d   }|d   }|d   }|d   }|d   }	|d	   }
|d
   }|d   }t
        j                  j                  |      j                         }t        j                  j                  |      j                         }t        j                  j                  |      j                         }t        j                  j                  |      j                         }t        j                  j                  |      j                         }t        j                  j                  |||	|
|      j                         }|d k(  rt        ||	|
|||||      }t        d       t        |       t        |       t        |       t        |       t        |       t        |       t        d       ||_        ||_        ||_        	 |j#                           	 d d d        t'        d      S # t$        $ r}t        d|        Y d }~d }~ww xY w# 1 sw Y   t'        d      S xY w)NzPC:/Users/PC/Documents/django/venv/msuas_timetable/venue/module_teacher_prior.csvrr   coder   r   r   r            rd   	ec_numberr9   )r;   r5   r<   r=   r?   )r;   r<   r=   r5   r.   r/   r>   semester_blockzL-----------------------------------=========================================An error occurredcccccc: rA   )opencsvreaderrG   nextr   rC   rF   rH   r   r
   r   r   r   r.   r>   r/   rM   rP   r   )r(   r?   csv_file
csv_readerrowmodule_codeec_no
venue_coder;   r<   r=   
level_coder.   r/   r5   r>   rk   r`   r_   s                      r*   importClassSessionsrx      s^   	`be	f 67jrZZ)
tJ   0	7C1va&KFEQJa&KVF1vHQJ #A^^***<BBDFoo,,u,=CCEGMM((j(9??AEMM((j(9??AE+33::>O:PVVXN(0077KV[cis{  O`7  a  g  g  iM$ , +!%!##1	! `a&M'N%L%L.!- `a#)M "'M$+M!7""$]0	767x GHH  71!5667k67x GHHs6   G>IH3I3	I<I
IIII+c                    t        dd      5 }t        j                  |      }t        t	        |             |D ]?  }|d   dk(  rt        |d   |d   |d   |d   |d   |d	   
      }	 |j                          A 	 d d d        t        d      S # t        $ r)}t        d|        t        d|d           Y d }~d }~ww xY w# 1 sw Y   t        d      S xY w)NzFC:/Users/PC/Documents/django/venv/msuas_timetable/venue/employees1.csvrc   r   
nationalidr	   r   r   r   r   national_idtitlesurnamenamerj   qualificationrl   zEc no: rA   )	rm   rn   ro   rG   rp   r   rM   rP   r   )r(   rq   rr   rs   r/   r_   s         r*   importTeachersr      s    	VX[	\ *`hZZ)
tJ   	*C1v% F!fAVa&!!fG*	**: GHH  *1!56Ax())*+*: GHHs6   AC)B9C	CB<7C<CCCc                    t        dd      5 }t        j                  |      }t        t	        |             |D ]3  }|d   dk(  rt        |d   |d   |d         }	 |j                          5 	 d d d        t        d
      S # t        $ r)}t        d|        t        d	|d           Y d }~wd }~ww xY w# 1 sw Y   t        d
      S xY w)NzCC:/Users/PC/Documents/django/venv/msuas_timetable/venue/modules.csvrc   r   r   r   r	   )rN   rd   r   rl   code : rA   )	rm   rn   ro   rG   rp   r   rM   rP   r   )r(   rq   rr   rs   r.   r_   s         r*   importModulesr      s    	SUX	Y *]eZZ)
d:  	*C1vq6VVF
*	*** GHH	  *1!56Ax())*#** GHHs6   AB8B-B8	B5B0+B80B55B88Cc           	         t        dd      5 }t        j                  |      }t        t	        |             |D ]k  }|d   dk(  r	 t        t        j                  j                  |d         t        j                  j                  |d               }|j                          m 	 d d d        t        d      S # t        $ r)}t        d|        t        d	|d
           Y d }~d }~ww xY w# 1 sw Y   t        d      S xY w)NzPC:/Users/PC/Documents/django/venv/msuas_timetable/venue/special_module_venue.csvrc   r   r5   r   rh   )r.   r5   rl   r   r	   rA   )rm   rn   ro   rG   rp   r   r   rC   rL   r
   rM   rP   r   )r(   rq   rr   rs   specialvenuemoduler_   s         r*   importSpecialVenueModulesr     s    	`be	f *jrZZ)
d:  	*C1v *%7!>>--3q6-:--++Q+8&" #'')	*** GHH	  *1!56Ax())*#** GHHs6   8C0AB;%C0;	C-C(#C0(C--C00Dc                    t        dd      5 }t        j                  |      }t        t	        |             |D ]/  }|d   dk(  rt        |d   |d         }	 |j                          1 	 d d d        t        d	      S # t        $ r)}t        d|        t        d|d           Y d }~sd }~ww xY w# 1 sw Y   t        d	      S xY w)
NzEC:/Users/PC/Documents/django/venv/msuas_timetable/venue/faculties.csvrc   r	   r   r   )rN   r   rl   name : rA   )	rm   rn   ro   rG   rp   r   rM   rP   r   )r(   rq   rr   rs   facultyr_   s         r*   importFacultiesr   ,  s    	UWZ	[ *_gZZ)
d:  	*C1vq6VG*	**( GHH	  *1!56Ax())*!*( GHHs6   AB4A?)B4?	B1B,'B4,B11B44Cc                    t        dd      5 }t        j                  |      }t        t	        |             |D ]d  }|d   dk(  rt        |d   t        j                  j                  |d         |d   |d   |d	   |d   d
k(  rdnd	      }	 |j                          f 	 d d d        t        d      S # t        $ r)}t        d|        t        d|d           Y d }~d }~ww xY w# 1 sw Y   t        d      S xY w)NzFC:/Users/PC/Documents/django/venv/msuas_timetable/venue/programmes.csvrc   r   r   r   r	   r9   r   r   4r   )rN   r   r   rd   display_namenumber_of_yearsrl   r   rA   )rm   rn   ro   rG   rp   r   r   rC   rL   rM   rP   r   )r(   rq   rr   rs   	programmer_   s         r*   importProgrammesr   D  s   	VX[	\ *`hZZ)
d:  	*C1v "q6++s1v+6VV V&)!fmI* 	**2 GHH	  *1!56Ax())*+*2 GHHs6   B C)B4C)4	C&=C!C)!C&&C))C<c                    t        dd      5 }t        j                  |      }t        |      }t	        t        |             t        ddd      5 }t        j
                  |      }|j                  |       |D ]  }|d   dk(  r|d	   }|j                         }|d
   }	t        j                  j                  |	j                               j                         }
t	        |
       |
r|
j                  }|j                  |       n5t        dd|	|	t        j                   dd      d      }
|
j#                          |j                  |        	 d d d        d d d        t%        d      S # 1 sw Y   xY w# 1 sw Y   t%        d      S xY w)NzKC:/Users/PC/Documents/django/venv/msuas_timetable/venue/module_teacher0.csvrc   z
output.csvw )newliner   rd   r	   )surname__icontainsz11-111111-A-11Mi  i'  Mastersr{   rA   )rm   rn   ro   rp   rG   writerwriterowsplitr   rC   rF   lowerrH   rj   appendrandomrandintrM   r   )r(   rq   rr   headeroutput_filer   rs   r~   parts	last_partr/   ru   s               r*   getEcNumbersFromNamesr   a  sm   	[]`	a +%emZZ)
 j!d: ,R0 !	%KZZ,F OOF# " %q6V#a&!"I	!//00IOODU0V\\^g#--EJJu%%$4! )&"(..e"<&/G LLN $3%!	%+%Z GHHG!	% !	%+%Z GHHs%   AE6C>E*E6*E3	/E66F	c                    t        dd      5 }t        j                  |      }t        t	        |             |D ]  }|d   dk(  r|d   j                         }dj                  |j                               }|d   }	 t        t        j                  j                  |      t        j                  j                  |      	      }|j                          t                t        d      cd d d        S # t        $ r9}t        d
       t        d|z          t        |       t        d
       Y d }~^d }~ww xY w# 1 sw Y   y xY w)NzJC:/Users/PC/Documents/django/venv/msuas_timetable/venue/module_teacher.csvrc   r   rd   r   r   rh   ri   )r.   r/   z!=============g===================zmodule code: rA   )rm   rn   ro   rG   rp   stripjoinr   r   r   rC   rL   r   rM   rP   r   )r(   rq   rr   rs   rt   ru   teachermoduler_   s           r*   importModuleTeachersr     s1   
[]`
a MemZZ)
d:  	!C1va&,,.K''+"3"3"56KFE
; -!>>--;-?#OO//%/@! ""$ - )	!, KL9M M(  ;9:ok12a9::	;)M Ms7   A/D<=AC7D<7	D9 /D4/D<4D99D<<Ec                    t        dd      5 }t        j                  |      }t        t	        |             |D ]  }|d   dk(  rt        d|d   z          t        d|d   z          t        d|d	   z          t        d
|d   z          t
        j                  j                  |d   |d   |d	         }t        t        j                  j                  |d         |      }	 |j                           	 d d d        t        d      S # t        $ r)}t        d|        t        d|d           Y d }~d }~ww xY w# 1 sw Y   t        d      S xY w)NzHC:/Users/PC/Documents/django/venv/msuas_timetable/venue/levelmodules.csvrc   r	   academicyearzpr idr   academic_yearacademic_semesterr   rd   r   )programme_idr   r   r   r9   )r.   r>   rl   r   rA   )rm   rn   ro   rG   rp   r   rC   rL   r   r   rM   rP   r   )r(   rq   rr   rs   level_alevelmoduler_   s          r*   importLevelmodulesr     sT   	XZ]	^ *bjZZ)
d:  	*C1v''#a&.!/CF*+%A./&3q6/"mm''SV#a&cfghci'jG%~~))SV)4K
*  "#	**8 GHH	  *1!56Ax())*1*8 GHHs6   CD>#D	3D>		D;D61D>6D;;D>>Ec           	      z   t         j                  j                         j                         }|D ]  }t        d	i |}t	        |j
                         t        d|j                  dz         D ]  }t	        |       t        ||j                  dz   t        |      z   dz   t        |      dz   |d      }t        ||j                  dz   t        |      z   dz   t        |      dz   |d      }	 |j                          |j                            t        d      S # t        $ r}t	        d|        Y d }~d }~ww xY w)
Nr	   -z.1)r   rd   r   r   r   z.2r   rl   z"..................................rB   )r   rC   allrD   rG   r   ranger   r   rd   rK   rM   rP   r   )r(   
programmesr   ilevel1level2r_   s          r*   populateProgrammeLevelr     s+   ""&&(//1J 7	*	*	innq)33A56 	7A!H#^^C'A.t3VD["#F #^^C'A.t3Vd]"#F7'	7	76 <==  71!5667s   * D	D:"D55D:c                 T
   t         j                  j                         j                         }|D ]  }t        di |}dt	        t        j                  dd            z   }|j                  |z   }|j                  |z   }|j                         d   dk7  r|j                         d   n||_        |j                         d   dk7  r|j                         d   n||_        	 |j                           t        j                  j                         j                         }|D ]g  }t        di |}dt	        t        j                  dd            z   }|j                  j                         d   |z   }||_        	 |j                          i t        j                  j                         j                         }	|	D ]  }
t        di |
}dt	        t        j                  dd            z   }|j                  j                         d   }|j                  j                         d   }||z   |_        ||z   |_        	 |j                           t        j                  j                         j                         }|D ]  }t        di |}|j                   dkD  s|j                  }|j                  }dt	        t        j                  dd            z   }|j                         d   dz   |j                         d   z   dz   |j                         d   z   |z   |_        |j                         d   dz   |j                         d   z   dz   |j                         d   z   |z   |_        	 |j                           t"        j                  j                         j                         }|D ]+  }t#        di |}|j                  }|j$                  }|j&                  }dt	        t        j                  dd            z   }|j                         d   dz   |j                         d   z   t	        |      z   |_        |j                         d   dz   |j                         d   z   t	        |      z   |_        |j                         d   dz   |j                         d   z   t	        |      z   |_        	 t)        |j                         |j                          . t+        d      S # t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y Pw xY w# t        $ r Y w xY w# t        $ r Y w xY w)N r	   r    r   Bachelorzseed correction is donerB   )r   rC   r   rD   rK   r   r   r   r   r   rM   r   r   r
   rd   r   rN   r   r~   rj   rG   r   )r(   r   r   randr   r   facultysfaculty1r   venuesvenue1r5   rd   modulesmodule1r.   teachersteacher1r/   r~   rj   s                        r*   correctTheSeedsr     s   ""&&(//1J 
	*	*	3v~~a+,,~~d" --d2,0JJLOz,Iat	<H<N<N<PQR<SWa<a!3!3!5a!8gs		NN
 ""$++-H %H%S2.//||!!#A&-	LLN ]] '')F 
S2.//zz!!$zz!!$D[
D[
	JJL
 nn  "))+G "'"99q=;;D;;DV^^Ar233D**,q/#-djjl1o=cA$**,q/QRVVFK**,q/#-djjl1o=cA$**,q/QRVVFK ""$++-H %H%||//%%	S2.//zz|As*4::<?:3t9D!--/!,S01CCCIM%OO-a04Y__5Fq5II#d)S	',,LLN  122u  		  		  		 " "  		sZ   S6S*5S: T
'%T	S'&S'*	S76S7:	TT
	TT	T'&T'c           
         t         j                  j                         j                         }t        j                  j                         j                         }t
        j                  j                         j                         }d}|D ]  }t        d
i |}d}t        D ]  }d}t        D ]~  }	|j                  dk(  rt        j                  j                  |      j                         }
t        d
i |
j                         }d}t        ||	d||      }	 |j                          d	}   t        |      S # t        $ r Y w xY w)Nzstage 1 venue loop thruzstage 2 weekdays loop thruzstage 3 periods loop thruCL)rN   z stage 4 teacher module loop thrur   )r;   r<   r=   r5   rk   z"stage 5 venue allocation completedrB   )r
   rC   r   rD   r   r   weekdays_tupleperiods_tuplerd   r   rF   rH   r   rM   r   r   )r(   r?   r   rR   level_modulesmessager5   v1weekdayr<   smbsmb1objs                r*   GivePeriodsToAllVenuesr   6  s7    ]] '')F#++//188:O''++-446M'G ?^U^.% 	?G1G' ?
 77d? %,,337H3IPPR%4		4<"wfaVXhlmHHJ ?'?	?	?:    & s   D::	E	E	c           
         t         j                  j                         j                         }|D ]  }t        di |}|j                  }|j
                  }t        dt        |      z          t        j                  j                  d      j                  t        d            j                  d      j                  dd      }t        j                  j                  |      j                  |	      j                         }|j                         d k(  rt        di |j                         }	|D ]  }
t        di |
}	t        |	j                   j"                         t        j                  j                  |d
      j%                  d      j                         }|d k(  rr|}t        j                  j                  |	j                   j"                  |      }|rt        d       t        dt        |	j&                  j"                        z          t(        j                  j+                  |	j&                  j"                        |_        t        d       t        |j&                         t,        j                  j+                  |	j                   j"                        |_        t.        j                  j                  |      j                         }|D ]g  }t/        di |}t        j                  j                  |j"                  |      j                         }|j                         d k(  s\t0        j                  j+                  |j2                  j"                        |_        t        j                  j                  |d
      j%                  d      j                         }|D ]  }t        di |}t        j                  j                  ||j2                  j"                  |	j                   j"                  d      j                         }t5        |      rs	 |j7                          t        d        g j   t;        d      S # t8        $ r}t        d|        Y d }~d }~ww xY w)Nzmodule_id ==============rW   r0   rf   r2   Tflatteacher_id__in)r8   )r5   teacher_id__isnullr<   )r/   r.   z((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((dddddddddddddd))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))module +r9   ddddddddddddddr4   )r>   r.   Fr.   r>   r/   r   E--------------------------------saved--------------------------------rl   r$   rB   )r   rC   r   rD   venue_idr8   rG   rK   r   rE   r   rF   values_listr   rI   rH   r/   rN   order_byr.   r   rL   r   r   r   r>   lenrM   rP   r   )r(   r?   special_venue_modulesrX   svm1r   r8   over_three_teachersrR   tm1rV   class_sessionsfcs1(possible_prior_class_session_allocationsr   level_moduler]   cs2fcs2sfcs2	final_fcscheck_duplicatesr_   s                          r*   !GiveTeacherModuleForSpecialVenuesr   _  s    /66::<CCE 5 KC!9$89==NN	 	(Y78 +2299,GH5.H/FQFK4K0 	 (//77GZ7[FYF'FH 	   "d*6o3356- 0	CN1.1C#++..!)1188x\`8ajj%' %!D7C7K7K7R7R[^[f[f[i[iqz7R7{47  g  h*S//0 ..,,

,>DK"#$++"??..#++...ADL (//66i6HOOQM - C!1L1"**11i1PWWY99;$&!&!2!2ciill!2!CDJ(0077h[_7`ii ""(&( 
 !& C$0$84$8	+7+?+?+F+Fi_b_h_h_k_kOR{{~~Z_ ,G ,aagagai ) /0$C IIK!"ij!CC/0	C7KC\ 	  ) C!$=aS"ABBCs    Q	Q4Q//Q4c           	      |   t         j                  j                  d      j                  t	        d            j                  d      j                  dd      }t        j                  j                  |      j                         }|D ]   }t        di |}t        |j                  j                         |j                  j                  }t        d       t        d	t        |j                  j                        z          |j                  j                  }t        j                  j                  |
      j                         }|D ]=  }	t        di |	}
|
j                  j                  }t         j                  j                  d      j!                  d      j                         }|D ]  }t        di |}t"        j                  j%                  |      |_        t&        j                  j%                  |      |_        t(        j                  j%                  |      |_
        t         j                  j                  |||d      j                         }t+        |      r	 |j-                          t        d        = @  t1        d      S # t.        $ r}t        d|        Y d }~d }~ww xY w)NrW   r0   rf   r2   Tr   r   zN((((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))r   r4   )r   r;   r9   Fr   r   rl   r$   rB   )r   rC   rD   rE   r   rF   r   r   rI   rG   r/   rN   rK   r.   r   r>   r   r   rL   r   r   r   rM   rP   r   )r(   r?   r   rR   rV   r   rW   r8   r   r   r]   rJ   r   r`   r   r   r_   s                    r*   GiveTeacherModuleForAllVenuesr     sK   &..55lCu\*+Lt,  $++33CV3W^^`O) &;-n-ckknn[[^^
^_j3szz}}--.JJMM	 $++22)2DKKM) 	;L--Cyy||H)1188D8QZZ[hipprN!/ ;#4m4$nn00I0>"]]..(.;
&22j2A#/#7#7#>#>iV^gq  FK#>  $L  $S  $S  $U '(;IIKab;	;&;P  ! ;5aS9::;s   )J	J;	"J6	6J;	)r	   )6django.shortcutsr   django.httpr   	django.dbr   r   rn   django.db.modelsr   r   r   modelsr
   semester_block.modelsr   class_session.modelsr   django_seedr   faculty.modelsr   programme.modelsr   level.modelsr   teacher.modelsr   module.modelsr   level_module.modelsr   teacher_module.modelsr   special_venue_module.modelsr   r   r   r+   ra   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   r,   r*   <module>r     s    # $ $  
 "  !  0 -  " &  "   + / :I $hIT>IBIBI2I2I0I:.I`M>I@>>E3N'!RR h2 r,   