
    RfhG                        d dl mZ d dlmZ d dlmZ d dlmZ d dlZ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Zd dlmZmZ d dl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% G d dej&                  Z' e#e!e'          d             Z( G d dej&                  Z) G d dej&                  Z*dS )    )models)SET_DEFAULT)ManyToManyField)reverseN)RoomSemesterStudy)	timedelta)Member)slugify)HttpResponse)timezone)etree)CalendarEvent)vCalAddressvText)datetime)	post_save)receiverc                     t          |           }t          j                            |          }|                                }|S )N)slug)r   Seminarobjectsfilterexists)inputr   qsr   s       #/var/www/nanotud/teaching/models.pycreate_slug_seminarr       s9    5>>D			T		*	*BYY[[F K    c                  	   t          j        d          } t          j                            d                              t          j                                                  d                              d                              d          D ]}t          j        | d	          }t          j        |d
          }t          |j	                  |_
        t          j        |d          }|j        |_
        t          j        |d          }t          j        |d          }t          j        |j                  }t          j        |d          }|                    d          |_
        t          j        |d          }	|                    d          |	_
        t          j        |d          }
|                    d          |
_
        |t          d          z   }t          j        |d          }|                    d          |_
        |j        :t          j        |d          }|j        j        j         d|j        j         |_
        t          j        |d          }t          j        |d          }|j        r|j        nd|_
        |j        r!t          j        |d          }|j        |_
        |j        r3t          j        |d          }t/          j        |j                  |_
        t          j        |d          }|j        |_
        t          j        |d          }d|_
        t          j        |d           }d!|_
        t          j        |d"          }t          j        |d#          }t          j        |d          }d$|_
        t          j        |d%          }d&|                                 |_
        t          j        |d'          }|j        |_
        t          j        |d(          }t          j        |d)          }t          j        |d
          }|j        |_
        t          j        | dd*+          }t=          d,d-          5 }|                    |           d d d            d S # 1 swxY w Y   d S ).NeventsT)
showPublic)start_time__gteF)external)internal_talk)internal_status_talkeventidtitledatesdate
date_startz%d.%m.%Y
time_startz%H:%Mdate_end   )hourstime_endlocation - speakername fromdescriptionhostserieSERIE_TUD_NANOlanguageenurlsurlzMore informationsourcezhttps://nano.tu-dresden.de	maintopictopicstopiczUTF-8)pretty_printencodingz%/data/uploads/seminar/xml/pmn_dsc.xmlwb) r   Elementr   r   r   r   now
SubElementstrr*   textr+   	localtime
start_timestrftimer
   roombuilding	long_namer7   speaker_namespeaker_affiliationabstracthtmlunescapeorganisator_nameget_absolute_url	dsc_topicdsc_subtopictostringopenwrite)rootseminarevent_element
id_elementtitle_elementr,   r-   local_start_timedate_start_elementtime_start_elementdate_end_elementend_timetime_end_elementlocation_elementr6   rT   speaker_fromr:   host_elementserie_elementlanguage_elementr@   url2	url2_nameurl2_sourcerC   rD   rE   topic_idxml_strfiles                                  r   generate_xml_file_lxmlrv   #   s~   =""D?))T)::AARZR^R`R`Aaahhrwhxx  OT  U  U  \  \  rw  \  x  x P+ P+(w77%mT::
gj//
(@@$] 88v..#-g.@AA"-dLAA"2";";J"G"G"-dLAA"2";";G"D"D !+D*== 0 9 9* E E#ia&8&8&88 +D*== ( 1 1' : : <#$/zJJ'.|'<'F$^$^7<K\$^$^! "=)<<'884;4HPG00b& 	< +GV<<L ' ;L  	?*=-HHK#}W-=>>K'v>>#4(@@- +M:FF $ v66 e,,$T622	,	&tX66T8P8P8R8RTT#M;??	(	!-:: 11#E400*nTwGGGG	5t	<	< 

7                 s   Q99Q= Q=c                       e Zd Z ej                    Z ej        d          Z ej        ddd          Z ej	        dddd	          Z
 ej	        d
dddd          Z ej        ddddd          Z ej        ddd          Z ej        eddddd          Z ej        ddd          Z ej        ddd          Z ej        ddd          Z ej        ddd          Z ej	        d dddd!"          Z ej        d#dddd$          Z ej        d%dddd$          Z ej        d&dddd$          Z ej        d'dddd$          Z ej        d(dddd$          Z ej        d)dddd$          Z ej        d*dddd$          Z ej        d+dddd$          Z ej        d,dddd$          Z  ej        d-dddd$          Z! ej        d.dddd$          Z" ej        d/dddd$          Z# ej        d0dddd$          Z$ ej        d1dddd$          Z% ej&        d2dd3          Z' ej(        d4dd3          Z) ej(        d5dd3          Z* ej        d6dd78          Z+ ej(        d9dd3          Z, ej        d:dd;8          Z- ej.        e/ej0        dd<          Z1 ej        d=ddd>?          Z2 ej	        d@dAddddBC          Z3 ej        dDddE          Z4dFZ5 ej	        dGddHe5dIJ          Z6 ej	        dKddHe5dIJ          Z7 ej8        dHddddLM          Z9 ej        edNddO          Z: ej;        dPddQdR          Z< ej        edSddO          Z= ej	        dTddUdVW          Z> ej	        dXdddYdZ[          Z? ej        d\dd]d^d_          Z@d` ZAda ZB fdbZC G dc dd          ZD xZES )er   i  
max_length  Try   nullblankzSpeaker name   u   Prof. Max Müller)ry   r|   	help_textAffiliationr8   ry   r   r|   r}   zAffiliation urli,  z?Link to external speaker profile at institution/company webpage)ry   r|   r}   r   seminar_chair_related_speakerNzchair related speakerzMPlease fill this field if the speaker is a member or an alumnus of our chair.)related_namedefaultr}   verbose_namer   zChair internal talk?Fz*Will not shown in Dresden Science Calendar)r   r   r   zChair internal status talk?zAlumnus/Alumna talk?zIf yes, please add the person as "chair related speaker" in the speaker options. Then "Alumnus talk" or "Alumna talk" will be added in front of the title automatically.)r   r   r   zExternally organized talk?zJExternally organized seminar? (Will not shown in Dresden Science Calendar)z Talk externally organized by ...zIf this seminar is organized by our chair, please leave this field blank. Else please continue the sentence "Talk externally organized by")r   r|   r}   ry   r   z	FIS (TUD))ry   r   r|   r}   LinkedinXingORCIDResearchgatepublonszResearch.comzGoogle ScholarScopuszAd scientific indexGeprisGithubTwitter	Wikipediazuploads/members/img/	upload_tor|   r}   zuploads/seminar/announcementszuploads/seminar/slideszPublic access to slidesz$Offer the slides public for downloadr   r   zuploads/seminar/recordszPublic access to recordz$Offer the record public for download)	on_deleter|   r}   zVideo conference linkzOhttps://tu-dresden.zoom-x.de/j/99351537743?pwd=ck01MHE2MktNZ29NK1ZnR1VKb2ZXUT09)r}   r|   r   z(Displayed name for video conference linkzZoom link of our ChairzqThis is the displayed name und webpage, where you will be redirected to video conference link if you click there.)r   ry   r|   r}   r   zShow on webpagezIf true show seminar on webpage))TOPIC_BIOLOGYr   )TOPIC_PHYSICSr   )TOPIC_MATHEMATICSr   )TOPIC_COMPUTER_SCIENCEr   )TOPIC_CHEMISTRYr   )TOPIC_MEDICINEr   )TOPIC_PSYCHOLOGYr   )TOPIC_ELECENGANDINFTECHr   )TOPIC_MECHANICALENGINEERINGr   )TOPIC_MATERIALSr   )TOPIC_CIVILENGINEERINGr   )TOPIC_TRANSPORTATIONANDTRAFFICr   )TOPIC_FORESTGEOHYDROr   )TOPIC_SOCIETYr   )"TOPIC_LINGUISTICSLITERATURECULTUREr   )	TOPIC_LAWr   )TOPIC_ECONOMICSr   )TOPIC_TRAININGr   )TOPIC_TRANSFERr   )TOPIC_OTHERr   z"Topic for Dresden Science Calendar2   z*will displayed in Dresden Science Calendar)r|   ry   choicesr   z%Subtopic for Dresden Science CalendarzURL where seminar is shown)ry   r|   r}   uniquer   seminar_suggested_byr   r   r}   zSuggested onz%The date when you got the suggestion.)r|   r   r}   seminar_invited_byzContact emailzseminar.nano@tu-dresden.dez+will displayed in ics file (calendar event))ry   r   r   zContact personzArezoo DianatzKwill displayed in ics-file (calendar event) and in Dresden Science Calendar)r|   ry   r   r   zInternal Notes  zDExample: Speaker wants to talk with theory group after presentation.)r|   ry   r   r}   c                 2    t          dd| j        i          S )z;Returns the url to access a detail record for this Seminar.zseminar-detailr   )kwargs)r   r   selfs    r   rZ   zSeminar.get_absolute_url   s     '	0BCCCCr!   c                 &    | j         dz   | j        z   S ))String for representing the Model object.z: )rT   r+   r   s    r   __str__zSeminar.__str__   s     $&33r!   c                    	 | j         }d|v r|                    dd          }|| _         d|v r|                    dd          }|| _         d|v r|                    dd          }|| _         d|v r|                    dd          }|| _         d|v r|                    dd          }|| _         d|v r|                    dd          }|| _         d|v r|                    dd          }|| _         d	|v r|                    d	d          }|| _         d
|v r|                    d
d          }|| _         d|v r|                    dd          }|| _         d|v r|                    dd          }|| _         | j        j        }| j        j        }t          t          |                    dk    rdt          |          z   }t          t          |                    dk    rdt          |          z   }| j        d k    s| j        dk    r9t          | j                                       d          d         dz   | j        z   }nJt          | j        j	                  dz   t          |          z   dz   t          |          z   dz   | j         z   }n%#  ddl
m} t           |d                    }Y nxY wt          |          | _         t                      j        |i |S )Nz	Dr.-Ing. r8   zDr.-Ing.zDr. zDr.zProf. zProf.	ProfessorzMsc. zMsc.zhabil. zhabil.   0 _r   )	randranger   )rT   replacerO   daymonthlenrL   splitr+   yearrandomr   r    r   supersave)	r   argsr   new_namer   r   argumentr   	__class__s	           r   r   zSeminar.save   s   /	*&Hh&&!))+b99"*!X%%!))*R88"*!!!!))&44"*!  !))%33"*!8##!))(266"*!(""!))'"55"*!h&&!))+b99"*!(""!))'"55"*!!!!))&44"*!H$$!)))B77"*!8##!))(266"*!#C/'E3u::!!#e**n3s88}}aCL$&&$/2*=*=t01177<<R@3FSdo233C7UCCGCPQTTUYUff	*((((((4))HHH(22	 uww|T,V,,,s   JJ  J-c                       e Zd ZdgZdS )Seminar.MetarO   N)__name__
__module____qualname__ordering r!   r   Metar     s         >r!   r   )Fr   r   r   r   DateTimeFieldrO   	TextFieldr+   rV   	CharFieldrT   rU   URLFieldspeaker_url
speaker_cvr   r   chair_related_speakerBooleanFieldr'   r(   alumni_talkr&   external_organized_bytud_fislinkedinxingorcidresearchgateresearcher_idresearchgooglescholarscopusadscientificindexgeprisgithubtwitterwiki
ImageFieldimage	FileFieldannouncementslidesslides_publicrecorded_seminarrecord_public
ForeignKeyr   SET_NULLrQ   
video_confvideo_conf_display_namer$   r   r[   r\   	SlugFieldr   suggested_by	DateFieldsuggestion_date
invited_byorganisator_emailrY   notes_internalrZ   r   r   r   __classcell__)r   s   @r   r   r   ~   s       %%''JF,,,Ev4d$GGGH#6#NsYlnnnL*&*=STV]aimnnn!&/"3$VZ  fg  h  h  hK!!TDIIIJ2F26Gfpt{  Ne  p  @  @  @'F'5KTY  eQ  R  R  RM.6.<Ybg  s_  `  `  `%&%3I  U  HM  N  N  NK"v"0LUZ  gs  t  t  tH,F,:\cgnr  @C  NZ  [  [  [FOKc$TY]^^^GvzsDt[_```H6?6sDtSWXXXDFOGTTXYYYE"6?>TX\dhiiiL#FOICSW_cdddMv~CSW_cdddH#FO$43tZ^fjkkkMV_XC4W[\\\F'(=CX\cgostttV_XC4W[\\\FV_XC4W[\\\Ffoic$TY]^^^G6?;SDX\]]]DF(>TQUVVVE#6#.MTX`deeeLV(@tSWXXXF'F'(A5  ]C  D  D  DM'v'2KRV^bccc'F'(A5  ]C  D  D  DM6TvDPTUUUD !84  Zk  l  l  lJ.f./Yc{  IL  SW  _c  na  c  c  c$$2CD[|}}}JG, ! !E4\^gn  zf  g  g  gI#6#$KQUbdmt  @l  m  m  mL		Rd$dVr	s	s	sD)6)&>T^bimnnnL&f&~4Kry}~~~O''<PZ^eijjjJ((SRn  zg  i  i  i(()9tPS\k  wD  E  E  E%V%&6DT  ]c  jn  o  o  oND D D4 4 4
;- ;- ;- ;- ;-~" " " " " " " " " " " "r!   r   )senderc                 "    t                       d S )N)rv   )r   instancer   s      r   generate_xml_after_saver    s    r!   c                   0   e Zd Z ej        ddd          Z ej        dd          Z ej        e	dd          Z
 ej        d	d
          Z ej        ddddd          Z ej        ddddd          Z ej        ddd          Z ej        ddd          Z ej        edd          Z ej        edd          Z ej        eddd          Z ej        edddde          Z ej        dddd          Zd Zd Z G d  d!          ZdS )"Teaching_coursezName of coursed   T)ry   r|   zShow public?r   r	   rx   Descriptionrz   zLink to module plani   r8   r   zLink to OPALzuploads/img/r   z%uploads/teaching_course/announcements"teaching_course_responsible_personN)r   r   teachertutorr   teaching_course_semester)r   r}   r   r|   r   zSchedule from old websiter~   r{   c                     | j         S )r   )r7   r   s    r   r   zTeaching_course.__str__,  s
    yr!   c                 J    t          dt          | j                  g          S )zCReturns the url to access a detail record for this teaching course.zteaching_course-detail)r   )r   rL   r*   r   s    r   rZ   z Teaching_course.get_absolute_url0  s     /s47||nEEEEr!   c                       e Zd ZdZdgZdS )Teaching_course.MetazTeaching coursesz-semester__start_dateN)r   r   r   verbose_name_pluralr   r   r!   r   r   r  4  s        .+,r!   r   ) r   r   r   r   r   r7   r   show_publicr   r	   studyr   r:   r   module_plan_linkmodule_ressourcesr   r   r   r   r   responsible_personr  r	  r   r   r   semesteroldDB_scheduler   rZ   r   r   r!   r   r  r    s       6,4HHHD%&%dnMMMK"F"5SAAAE"&"=TBBBK&v'<XZaemqrrr'3RT[_gklllFTNNNE#6#.U\`hlmmmL//Dhrvwww$f$VDQQQG"F"6wSWXXXE v 4tQkqu  BM  N  N  NH#6#$?CVZbfgggN  F F F- - - - - - - - - -r!   r  c                   J   e Zd Z ej        edej        d          Zg dZ ej	        ddded	          Z
g d
Z ej	        ddded	          Z ej        dddd          Z ej        dddd          Z ej        ed          Z ej	        dddddd          Zd ZdS )ScheduleNschedule_teaching_course)r   r   r   ))Lecturer  )Exerciser  )	Practicumr  zKind of lessonr   r  T)ry   r   r   r|   ))Mondayr  )Tuesdayr  )	Wednesdayr  )Thursdayr   )Fridayr!  )Saturdayr"  z
Course dayr  z
Start timezformart: h:m:s (11:10:00)z11:10:00)r   r   r|   zEnd timezformart: h:m:s (12:40:00)z12:40:00)r}   zVideo conference toolze.g. Zoom, Jitsi)ry   r   r|   r   r}   c                     t          | j                  dz   t          | j                  z   dz   t          | j                  z   S )r   r5   )rL   r   	startTimeendTimer   s    r   r   zSchedule.__str__C  s8    48}}U"3t~#6#66u<S=N=NNNr!   )r   r   r   r   r   r  CASCADEteaching_courselesson_choicesr   lessonday_choicesr   	TimeFieldr$  r%  r   r   rQ   r   r   r   r!   r   r  r  8  s7       'f'QWQ_  nH  I  I  IO___NV."iYgmqrrrF ^  ^  ^K
&
<2xQ\bf
g
g
gC  8S\flpqqqIfz4OXbhlmmmG!6!$T222D!!"9RQU[_j|  DH  I  I  IJO O O O Or!   r  )+	django.dbr   django.db.models.deletionr   django.db.models.fields.relatedr   django.urlsr   uuidhome.modelsr   r   r	   r   r
   internal.modelsr   django.template.defaultfiltersr   django.httpr   django.utilsr   lxmlr   rW   	icalendarr   r   r   r   pytzdjango.db.models.signalsr   django.dispatchr   r    rv   Modelr   r  r  r  r   r!   r   <module>r<     sF         1 1 1 1 1 1 ; ; ; ; ; ;        - - - - - - - - - -       " " " " " " 2 2 2 2 2 2 $ $ $ $ $ $ ! ! ! ! ! !        % % % % % % % % ( ( ( ( ( ( ( (        . . . . . . $ $ $ $ $ $  W W WvW" W" W" W" W"fl W" W" W"t 
)G$$$  %$- - - - -fl - - -6O O O O Ov| O O O O Or!   