
    0A4h)'                     $   d dl Z d dlmZ d dlmZ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mZmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZ d dl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(Z)d dl*Z*d dl+m,Z, ed             Z- G d de,ej.                  Z/ G d de,ej.                  Z0 G d de,ej.                  Z1 G d de,ej.                  Z2 G d de,ej.                  Z3 G d d e,ej.                  Z4 G d! d"e,ej.                  Z5d# Z6d$ Z7 G d% d&e,ej8                  Z9d' Z:	  G d( d)e,ej.                  Z; G d* d+e,ej8                  Z< G d, d-e%          Z= G d. d/e#          Z> G d0 d1e,ej8                  Z?dS )2    N)settings)FileResponseHttp404)staff_member_required)	safe_join)render   )MemberGroupHalslideShared_documentResearchslideTeachingslide)generic)timezone)StatusStatus_extern)Q)get_templaterender_to_string)get_object_or_404)Open_Job)SearchListView)
BaseFilter)Shared_documentSearchForm)ContextMixinc                 
   	 t          t          j        |          }n# t          $ r t	          d          w xY wt
          j                            |          st	          d          t          t          |d                    S )z
    Liefert eine Datei aus dem MEDIA_ROOT aus.
    file_path ist der relative Pfad zur Datei, z.B. 'uploads/members/tac/meinedatei.pdf'
    u   Ungültiger Dateipfad.zDatei nicht gefunden.rb)
r   r   
MEDIA_ROOT
ValueErrorr   ospathexistsr   open)request	file_path	full_paths      "/var/www/nanotud/internal/views.pyprotected_filer)      s    0h19==		 0 0 0.///0 7>>)$$ /-...Y--...s    7c                        e Zd ZeZdZdZdZej        	                    d          	                    d          
                    d          Z fdZ xZS )	VisitorListViewvisitor_listzvisitor.html^  Tvisitorshow_public
-exit_datec                 :     t                      j        di |}|S )N )superget_context_dataselfkwargscontext	__class__s      r(   r6   z VisitorListView.get_context_data4   s$    ((22622    __name__
__module____qualname__r
   modelcontext_object_nametemplate_namepaginate_byobjectsfilterorder_byquerysetr6   __classcell__r;   s   @r(   r+   r+   .   s        E("MK^""4"0077D7IIRRS_``H        r<   r+   c                   P    e Zd ZeZdZdZej                            d          Z	dS )HalwayListViewslideszhalway.htmlTshowN)
r>   r?   r@   r   rA   rB   rC   rE   rF   rH   r4   r<   r(   rL   rL   8   s7        	


!
!t
!
,
,r<   rL   c                   P    e Zd ZeZdZdZej                            d          Z	dS )ResslideListViewrM   zresslides.htmlTrN   N)
r>   r?   r@   r   rA   rB   rC   rE   rF   rH   r4   r<   r(   rQ   rQ   ?   s7        	!


&
&D
&
1
1r<   rQ   c                   P    e Zd ZeZdZdZej                            d          Z	dS )TsslideListViewrM   ztsslides.htmlTrN   N)
r>   r?   r@   r   rA   rB   rC   rE   rF   rH   r4   r<   r(   rS   rS   E   s7        	 


&
&D
&
1
1r<   rS   c                   4     e Zd ZeZdZdZdZd Z fdZ	 xZ
S )AlumniListViewalumni_listzalumni.htmlr-   c                    | j         j                            d          }| j         j                            d          }|rt          j                            d                              d                              d                              d                              |	                              d
          }not          j                            d                              d                              d                              d                              d
          }|r|                                }t          |          dk    rA|                    t          |d                   t          |d                   z            }n4|                    t          |          t          |          z            }|S )Nstatus_externsearchFactiver.   extern_relatedTr0   )rX   r2   r	   r   )given_name__icontains)last_name__icontains)
r%   GETgetr
   rE   rF   rG   splitlenr   )r8   rX   search_queryrH   search_termss        r(   get_querysetzAlumniListView.get_querysetQ   s   (,,_==|'++H55 	\^**%*88???NNUUejUkkrr  @Dr  E  E  L  L  [h  L  i  i  r  r  s  @  @HH^**%*88???NNUUejUkkrr  @Dr  E  E  N  N  O[  \  \H 	'--//L<  1$$#??LO<<<<?;;;< 
 $??L999<8889  r<   c                 |     t                      j        di |}t          j                                        |d<   |S )Nexternal_statir4   )r5   r6   r   rE   allr7   s      r(   r6   zAlumniListView.get_context_datak   s@    ((22622 %2$9$=$=$?$? !r<   )r>   r?   r@   r
   rA   rB   rC   rD   rf   r6   rI   rJ   s   @r(   rU   rU   K   s\        E'!MK  4        r<   rU   c                        e Zd ZeZdZdZdZej        	                    d          	                    d          	                    d          
                    d	          Z fd
Z xZS )MemberListViewmember_listzmember.htmlr-   TrZ   Fr\   r0   statusc                      t          t          |           j        di |}t          j                                        |d<   |S )Nrm   r4   )r5   rk   r6   r   rE   rF   r7   s      r(   r6   zMemberListView.get_context_data}   sB    ;nT**;EEfEE .//11r<   r=   rJ   s   @r(   rk   rk   w   s        E'!MK^""$"//66e6LLSS`dSeennowxxH        r<   rk   c                       e Zd ZeZdZdZdZej        	                    d          	                    d          	                    d          
                    d	          Zd
S )PosterMemberListViewposter_member_listzposter_member.htmlr-   TrZ   Fr\   r0   rm   N)r>   r?   r@   r
   rA   rB   rC   rD   rE   rF   rG   rH   r4   r<   r(   rp   rp      sm        E.(MK^""$"//66e6LLSS`dSeennowxxHHHr<   rp   c                 `   t          j        ddd          }dt          |           z   dz   }|                    |           |                    d           |                    d	d
          }dt          |           z   dz   }|                    |           dt          |           z   dz   }|S )Nr	      
   )versionbox_sizeborderz(https://nano.tu-dresden.de/special_view/z.vcf/Tfitblackwhite)fill
back_color%/var/www/nanotud/uploads/img/QR-code/.png/uploads/img/QR-code/)qrcodeQRCodestradd_datamake
make_imagesave)pkqrdataimg	file_names        r(   create_noppenQRr      s    	

 

 

B
 6B?'IDKKGGG
--wW-
=
=C7#b''AFJIHHY'#b''1F:Ir<   c                    | j         r| j          nd}| j        | j        j         dnd}d| d| j         d| j         d| j         d| j         d| d| j         d	| j         d
}t          j        dt          j	        j
        dd          }|                    |           |                    d           |                    dd          }d| j         d}|                    |           d| j         dS )N ;zBEGIN:VCARD
VERSION:3.0
EMAIL:z
TEL;TYPE=WORK:z)
NOTE;CHARSET=utf-8:
TITLE;CHARSET=utf-8:z
N;CHARSET=utf-8:z;;z;
FN;CHARSET=utf-8: uj   
ORG;CHARSET=utf-8:Technische Universität Dresden;Chair of Materials Science and Nanotechnology
END:VCARDr	   rt      )ru   error_correctionrv   rw   Trx   rz   r{   )
fill_colorr}   r~   r   r   )job_mailtitletitle_short	job_phonerm   	last_name
given_namer   r   	constantsERROR_CORRECT_Lr   r   r   r   r   )memberemailr   
vcard_datar   r   r   s          r(   create_vcard_qrr      sj   $*O;v  E4:L4LV\-0000RTK		 	 	 	
 ]	 	 !	 	 %+$5	 	 :E	 	 #	 	 '-&6	 	 	J 
)9	
 
 
B KK
GGG
--7w-
?
?CG	GGGIHHY2692222r<   c                   `     e Zd ZeZdZdZej                            d          Z	 fdZ
 xZS )MemberDetailViewmember_detailzmember_detail.htmlTr0   c                      t                      j        di |}|                                 j        |d<   t	          |                                           |d<   |S )Nqr_codefile_name_qr_coder4   )r5   r6   
get_objectr   r   r7   s      r(   r6   z!MemberDetailView.get_context_data   sX    *%''*44V44!__..1	'6t7H7H'I'I#$r<   )r>   r?   r@   r
   rA   rB   rC   rE   rF   rH   r6   rI   rJ   s   @r(   r   r      s`        E)(M^""t"44H        r<   r   c                 X    t          t          |          }t          | dd|id          S )N)r   zvcard_export.vcfr   ztext/x-vcard; charset=utf-8)content_type)r   r
   r   )r%   r   configss      r(   special_viewr      s2    2...G'-'/BQnoooor<   c                   d     e Zd ZeZdZdZdZej        	                    d          Z
 fdZ xZS )GroupListView
group_listz
group.html2   TrZ   c                     t                      j        di |}t          j                            d          }||d<   |                    dgd          |d<   |                    dgd          |d<   |                    d	gd          |d
<   |                    dd          |d<   t          j                            dd          |d<   |S )NTrZ   active_groupstheory)group_type__inr1   theory_groups
experimentexperiment_groupsexperiment_and_theorytheory_experiment_groupsfacility)
group_typer1   facility_groupsF)r[   r1   non_active_groupsr4   )r5   r6   r   rE   rF   )r8   r9   r:   r   r;   s       r(   r6   zGroupListView.get_context_data   s   *%''*44V44m**$*77!. #0#7#7$:$ $8 $
 $
  (5';';(>d (< (
 (
#$ /<.B.B34 /C /
 /
*+ &3%9%9Z\`%9%a%a!"',}';';5UY';'Z'Z#$r<   )r>   r?   r@   r   rA   rB   rC   rD   rE   rF   r   r6   rI   rJ   s   @r(   r   r      se        E& MK-&&d&33M        r<   r   c                   *     e Zd ZeZdZdZ fdZ xZS )GroupDetailViewgroup_detailzgroup_detail.htmlc                 z    t          t          |                                                               d          S )NTr0   )r5   r   rf   rF   )r8   r;   s    r(   rf   zGroupDetailView.get_queryset   s0    _d++88::AAdASSSr<   )	r>   r?   r@   r   rA   rB   rC   rf   rI   rJ   s   @r(   r   r      sQ        E('MT T T T T T T T Tr<   r   c                       e Zd Zdg diZdS )Shared_documentFiltersearch_text)namedescriptionpdf_fileeditable_fileN)r>   r?   r@   search_fieldsr4   r<   r(   r   r     s!        JJJMMMr<   r   c                   &    e Zd ZeZdZdZdZeZ	e
ZdS )Shared_documentSearchListViewshared_document_listzshared_document_search.htmlr   N)r>   r?   r@   r   rA   rB   rC   rD   r   filter_classr   
form_classr4   r<   r(   r   r     s-        E01MK(L*JJJr<   r   c                       e Zd ZeZdZdZdS )Shared_documentDetailViewshared_document_detailzshared_document_detail.htmlN)r>   r?   r@   r   rA   rB   rC   r4   r<   r(   r   r     s        E21MMMr<   r   )@r!   django.confr   django.httpr   r   %django.contrib.admin.views.decoratorsr   django.utils._osr   django.shortcutsr   modelsr
   r   r   r   r   r   django.viewsr   django.utilsr   home.modelsr   r   django.db.modelsr   django.template.loaderr   r   r   external.modelsr   search_views.searchr   search_views.filtersr   formsr   numpynpr   nanotud.add_global_contextr   r)   ListViewr+   rL   rQ   rS   rU   rk   rp   r   r   
DetailViewr   r   r   r   r   r   r   r4   r<   r(   <module>r      sK   				             - - - - - - - - G G G G G G & & & & & & # # # # # # Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z             ! ! ! ! ! ! - - - - - - - -       A A A A A A A A / / / / / / $ $ $ $ $ $ . . . . . . + + + + + + , , , , , ,      3 3 3 3 3 3 / / /$    lG$4   - - - - -\7#3 - - -2 2 2 2 2|W%5 2 2 22 2 2 2 2lG$4 2 2 2% % % % %\7#3 % % %X	 	 	 	 	\7#3 	 	 	y y y y y<)9 y y y   3 3 38    |W%7    p p p
p&    L'"2   0T T T T TlG$6 T T T    J   + + + + +N + + +2 2 2 2 2g.@ 2 2 2 2 2r<   