U
    U_g&                     @   s(  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d Z-G dd de,ej.Z/G dd de,ej.Z0G dd de,ej.Z1G dd de,ej.Z2G dd de,ej.Z3G d d! d!e,ej.Z4G d"d# d#e,ej.Z5d$d% Z6d&d' Z7G d(d) d)e,ej8Z9d*d+ Z:G d,d- d-e,ej.Z;G d.d/ d/e,ej8Z<G d0d1 d1e%Z=G d2d3 d3e#Z>G d4d5 d5e,ej8Z?dS )6    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                 C   sP   zt tj|}W n tk
r,   tdY nX tj|sBt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_path r&   "/var/www/nanotud/internal/views.pyprotected_file   s    r(   c                       sH   e Zd ZeZdZdZdZejj	ddj	dd
dZ fdd	Z  ZS )
VisitorListViewZvisitor_listzvisitor.html^  Tvisitorshow_public
-exit_datec                    s   t  jf |}|S )N)superget_context_dataselfkwargscontext	__class__r&   r'   r1   4   s    z VisitorListView.get_context_data__name__
__module____qualname__r	   modelcontext_object_nametemplate_namepaginate_byobjectsfilterorder_byquerysetr1   __classcell__r&   r&   r6   r'   r)   .   s   r)   c                   @   s&   e Zd ZeZdZdZejjddZ	dS )HalwayListViewslideszhalway.htmlTshowN)
r9   r:   r;   r   r<   r=   r>   r@   rA   rC   r&   r&   r&   r'   rE   8   s   rE   c                   @   s&   e Zd ZeZdZdZejjddZ	dS )ResslideListViewrF   zresslides.htmlTrG   N)
r9   r:   r;   r   r<   r=   r>   r@   rA   rC   r&   r&   r&   r'   rI   ?   s   rI   c                   @   s&   e Zd ZeZdZdZejjddZ	dS )TsslideListViewrF   ztsslides.htmlTrG   N)
r9   r:   r;   r   r<   r=   r>   r@   rA   rC   r&   r&   r&   r'   rJ   E   s   rJ   c                       s4   e Zd ZeZdZdZdZdd Z fddZ	  Z
S )AlumniListViewZalumni_listzalumni.htmlr*   c                 C   s   | j jd}| j jd}|rVtjjddjddjddjddj|d	d
}n,tjjddjddjddjddd
}|r| }t|dkr|t	|d dt	|d d@ }n|t	|dt	|dB }|S )Nstatus_externsearchFactiver+   extern_relatedTr-   )rL   r/   r   r   )Zgiven_name__icontains)Zlast_name__icontains)
r#   GETgetr	   r@   rA   rB   splitlenr   )r3   rL   search_queryrC   Zsearch_termsr&   r&   r'   get_querysetQ   s&    6,zAlumniListView.get_querysetc                    s    t  jf |}tj |d< |S )NZexternal_stati)r0   r1   r   r@   allr2   r6   r&   r'   r1   k   s    zAlumniListView.get_context_data)r9   r:   r;   r	   r<   r=   r>   r?   rW   r1   rD   r&   r&   r6   r'   rK   K   s   rK   c                       sP   e Zd ZeZdZdZdZejj	ddj	ddj	dd
d	Z fd
dZ  ZS )MemberListViewZmember_listzmember.htmlr*   TrN   FrP   r-   statusc                    s$   t t| jf |}tj |d< |S )NrZ   )r0   rY   r1   r   r@   rA   r2   r6   r&   r'   r1   }   s    zMemberListView.get_context_datar8   r&   r&   r6   r'   rY   w   s   $rY   c                   @   s@   e Zd ZeZdZdZdZejj	ddj	ddj	dd
d	Zd
S )PosterMemberListViewZposter_member_listzposter_member.htmlr*   TrN   FrP   r-   rZ   N)r9   r:   r;   r	   r<   r=   r>   r?   r@   rA   rB   rC   r&   r&   r&   r'   r[      s
   r[   c                 C   sr   t jdddd}dt|  d }|| |jdd |jd	d
d}dt|  d }|| dt|  d }|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_namer&   r&   r'   create_noppenQR   s    

rv   c                 C   s   | j r| j  nd}| jd k	r*| 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}|| |jdd |j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   r]      )r^   error_correctionr_   r`   Tra   rc   rd   )
fill_colorrf   rg   rh   ri   )job_mailtitletitle_short	job_phonerZ   	last_name
given_namerj   rk   	constantsERROR_CORRECT_Lrm   rn   ro   rq   rp   )memberemailr   Z
vcard_datarr   rt   ru   r&   r&   r'   create_vcard_qr   s>    

r   c                       s6   e Zd ZeZdZdZejjddZ	 fddZ
  ZS )MemberDetailViewZmember_detailzmember_detail.htmlTr-   c                    s0   t  jf |}|  j|d< t|  |d< |S )NZqr_codeZfile_name_qr_code)r0   r1   
get_objectrq   r   r2   r6   r&   r'   r1      s    z!MemberDetailView.get_context_data)r9   r:   r;   r	   r<   r=   r>   r@   rA   rC   r1   rD   r&   r&   r6   r'   r      s
   r   c                 C   s    t t|d}t| dd|iddS )N)rq   zvcard_export.vcfr   ztext/x-vcard; charset=utf-8)content_type)r   r	   r   )r#   rq   configsr&   r&   r'   special_view   s    r   c                       s:   e Zd ZeZdZdZdZejj	ddZ
 fddZ  ZS )GroupListView
group_listz
group.html2   TrN   c                    s   t  jf |}tjjdd}|jdgdd|d< |jdgdd|d< |jdgdd|d	< |jd
dd|d< tjjddd|d< |S )NTrN   theory)Zgroup_type__inr.   Ztheory_groups
experimentZexperiment_groupsexperiment_and_theoryZtheory_experiment_groupsfacility)
group_typer.   Zfacility_groupsF)rO   r.   Znon_active_groups)r0   r1   r
   r@   rA   )r3   r4   r5   active_groupsr6   r&   r'   r1      s"     
 
 
zGroupListView.get_context_data)r9   r:   r;   r
   r<   r=   r>   r?   r@   rA   r   r1   rD   r&   r&   r6   r'   r      s   r   c                       s(   e Zd ZeZdZdZ fddZ  ZS )GroupDetailViewZgroup_detailzgroup_detail.htmlc                    s   t t|  jddS )NTr-   )r0   r   rW   rA   )r3   r6   r&   r'   rW      s    zGroupDetailView.get_queryset)	r9   r:   r;   r
   r<   r=   r>   rW   rD   r&   r&   r6   r'   r      s   r   c                   @   s   e Zd ZdddddgiZdS )Shared_documentFiltersearch_textnamedescriptionpdf_fileeditable_fileN)r9   r:   r;   search_fieldsr&   r&   r&   r'   r     s    
r   c                   @   s$   e Zd ZeZdZdZdZeZ	e
ZdS )Shared_documentSearchListViewZshared_document_listzshared_document_search.htmlr   N)r9   r:   r;   r   r<   r=   r>   r?   r   filter_classr   
form_classr&   r&   r&   r'   r     s   r   c                   @   s   e Zd ZeZdZdZdS )Shared_documentDetailViewZshared_document_detailzshared_document_detail.htmlN)r9   r:   r;   r   r<   r=   r>   r&   r&   r&   r'   r     s   r   )@r   django.confr   django.httpr   r   Z%django.contrib.admin.views.decoratorsr   django.utils._osr   Zdjango.shortcutsr   modelsr	   r
   r   r   r   r   Zdjango.viewsr   django.utilsr   home.modelsr   r   django.db.modelsr   django.template.loaderr   r   r   external.modelsr   search_views.searchr   Zsearch_views.filtersr   formsr   numpynprj   nanotud.add_global_contextr   r(   ListViewr)   rE   rI   rJ   rK   rY   r[   rv   r   
DetailViewr   r   r   r   r   r   r   r&   r&   r&   r'   <module>   sJ    

,
