U
    g9                     @   s  d dl mZ d dlmZmZ d dlmZ ddlmZm	Z	m
Z
mZmZmZmZmZmZmZmZ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 eeG dd dejZ eeG dd dejZ!eeG dd dejZ"eeG dd dejZ#eeG dd dejZ$G dd dej%Z&G dd dej%Z'ee
G dd dejZ(G dd dej%Z)eeG dd dejZ*G dd  d ej%Z+eeG d!d" d"ejZ,d#S )$    )admin)renderredirect)path   )Group
GroupTopicMemberDevicePostnominalHalslide
Member_tacCVShared_documentShared_document_further_filesResearchslideTeachingslide)create_publication_includepdflatex_cv)	mark_safe)UpdateIntegerFieldForm)reverse)format_htmlc                   @   sZ   e Zd Zejdddd Zejdddd ZeegZdd	d
ZdddZ	dddgZ
dS )CVAdminzupdate publications for CV)descriptionc                 C   s   t | d S N)r   
modeladminrequestqueryset r    "/var/www/nanotud/internal/admin.pypublication_include   s    zCVAdmin.publication_includezUpdate PDF from TeX filec                 C   s   t | d S r   )r   r   r    r    r!   
create_PDF   s    zCVAdmin.create_PDFNc                 C   s   dS NFr    selfr   objr    r    r!   has_delete_permission   s    zCVAdmin.has_delete_permissionc                 C   s   dS r$   r    r%   r    r    r!   has_add_permission   s    zCVAdmin.has_add_permissionpdf_file	pdf_shortlog_file)N)N)__name__
__module____qualname__r   actionr"   r#   actionsr(   r)   readonly_fieldsr    r    r    r!   r      s   





r   c                       sJ   e Zd ZdZdZdZdgZdd Zde_ fdd	Z	d fdd	Z
  ZS )HalslideAdminzhalway__change_list_form.htmlnamedatetimeshowTupdate_display_timec                 C   s   d|j kr`t|j }| rR|jd }|j|d | |d| d t| S | |d n"t }||tj	j
d}t|d|S d S 	NapplyZnew_integer_value)r7   zUpdated display time value to z seconds for selected slides.zThe form is not valid.)formslidesaction_checkbox_namezadmin/update_display_time.htmlPOSTr   is_validcleaned_dataupdatemessage_userr   get_full_pathr   helpersACTION_CHECKBOX_NAMEr   r&   r   r   r<   	new_valuecontextr    r    r!   r9   )   s    


z!HalslideAdmin.update_display_time'Update display time for selected slidesc                    s,   t   }td| j| jddg}|| S Nzupdate-integer/zupdate-integer)r5   superget_urlsr   
admin_site
admin_viewr9   r&   urlsZcustom_urls	__class__r    r!   rO   >   s    
zHalslideAdmin.get_urlsNc                    s    |pi }t  |d< t ||S NZupdate_integer_formr   rN   changelist_viewr&   r   extra_contextrT   r    r!   rX   E   s    
zHalslideAdmin.changelist_view)Nr-   r.   r/   change_list_templatelist_displayview_on_siter1   r9   short_descriptionrO   rX   __classcell__r    r    rT   r!   r3   "   s   r3   c                       sJ   e Zd ZdZdZdZdgZdd Zde_ fdd	Z	d fdd	Z
  ZS )ResslideAdminz resslides__change_list_form.htmlr4   Tr9   c                 C   s   d|j kr`t|j }| rR|jd }|j|d | |d| d t| S | |d n"t }||tj	j
d}t|d|S d S r:   r?   rH   r    r    r!   r9   R   s    


z!ResslideAdmin.update_display_timerK   c                    s,   t   }td| j| jddg}|| S rL   rM   rR   rT   r    r!   rO   g   s    
zResslideAdmin.get_urlsNc                    s    |pi }t  |d< t ||S rV   rW   rY   rT   r    r!   rX   n   s    
zResslideAdmin.changelist_view)Nr[   r    r    rT   r!   ra   K   s   ra   c                       sJ   e Zd ZdZdZdZdgZdd Zde_ fdd	Z	d fdd	Z
  ZS )TsslideAdminztsslides__change_list_form.htmlr4   Tr9   c                 C   s   d|j kr`t|j }| rR|jd }|j|d | |d| d t| S | |d n"t }||tj	j
d}t|d|S d S r:   r?   rH   r    r    r!   r9   {   s    


z TsslideAdmin.update_display_timerK   c                    s,   t   }td| j| jddg}|| S rL   rM   rR   rT   r    r!   rO      s    
zTsslideAdmin.get_urlsNc                    s    |pi }t  |d< t ||S rV   rW   rY   rT   r    r!   rX      s    
zTsslideAdmin.changelist_view)Nr[   r    r    rT   r!   rb   t   s   rb   c                   @   sH   e Zd ZdZddddddgZdd	d
ifdd	diffZdgZdddZdS )DeviceAdmin)	r5   memberroomyeardefectusage
chair_taskinventory_numberpriceZmember__given_nameZmember__last_namer5   Z
room__nameZroom__building__short_namerj   Generalfields)rg   )rh   ri   )rj   serial_number)r5   rf   rk   )r   history
References)rd   re   research_eqrq   Nc                 C   s   dS r$   r    r%   r    r    r!   r(      s    z!DeviceAdmin.has_delete_permission)N)r-   r.   r/   r]   search_fields	fieldsetsfilter_horizontalr(   r    r    r    r!   rc      s     rc   c                   @   s   e Zd ZeZdZdZdS )PostnominalAdminr   r   N)r-   r.   r/   r   modelextramin_numr    r    r    r!   ru      s   ru   c                   @   sb   e Zd ZeZdddiffZdZdZdZdd Z	d	e	_
d
d Zde_
dd Zde_
dd Zde_
dS )Member_tacAdminrl   rm   )
titledate_newr=   slides_linkdocumentdocument_link
document_2document_2_link
document_3document_3_link)r|   r~   r   r   r   r   c                 C   s2   |j r.t|j dr.td|j jfd}td|S dS )Nr5   admin_protected_fileargsz0<a href="{}" target="_blank">Download slides</a>-)r=   hasattrr   r5   r   r&   r'   Zprotected_urlr    r    r!   r|      s    
zMember_tacAdmin.slides_linkzSlides (protected)c                 C   s2   |j r.t|j dr.td|j jfd}td|S dS )Nr5   r   r   z4<a href="{}" target="_blank">Download document 1</a>r   )r}   r   r   r5   r   r   r    r    r!   r~      s    
zMember_tacAdmin.document_linkzDocument 1 (protected)c                 C   s2   |j r.t|j dr.td|j jfd}td|S dS )Nr5   r   r   z4<a href="{}" target="_blank">Download document 2</a>r   )r   r   r   r5   r   r   r    r    r!   r      s    
zMember_tacAdmin.document_2_linkzDocument 2 (protected)c                 C   s2   |j r.t|j dr.td|j jfd}td|S dS )Nr5   r   r   z4<a href="{}" target="_blank">Download document 3</a>r   )r   r   r   r5   r   r   r    r    r!   r      s    
zMember_tacAdmin.document_3_linkzDocument 3 (protected)N)r-   r.   r/   r   rv   rs   r2   rw   rx   r|   r_   r~   r   r   r    r    r    r!   ry      s"    ry   c                	   @   s   e Zd ZdZdZdddddgZdgZd	d
difdd
difdd
difdd
difdd
difdd
difdd
diffZddddddddd g	Zd!gZ	e
egZd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd6d-d.Zd/e_d0e_d1e_d2e_d3e_d4e_d5e_d,S )7MemberAdmin)
given_name	last_namerz   status
entry_date	exit_datejob_mailget_roomget_projectsactivevisitorshow_publicprivate_mailget_tacget_devices)r   r   groupr   r   given_name_altr   last_name_altZproject_list__project_acr
show_imagerl   rm   ))r   	meta_tags)r   r   )r   r   )imager   )rz   
prenominal	educationcountry)r   gender	birth_daybio	job_phoner   re   )r   r   extern_related)r   r   )r   groupLeadingZInternal)thesis_defenseslugzExternal information)status_externorganisation_extern
url_externurl_label_externrp   )tud_fisgeprislinkedinxingorcidresearchgateresearcher_idresearchgooglescholarscopusadscientificindexweb_of_sciencegithubtwitterbluesky	instagramwikiPresentations)	presentorauthorZRelated)publicationproject_listrq   newszPrivate info))priv_streetpriv_streetNumber)priv_postalcode	priv_citypriv_countrypriv_matriculationnumberprivate_mobiler   url_privateprivate_infore   r   r   r   r   rq   r   r   r   z-entry_datec                 C   s   t dj|jjdS )Nz"<img src="{url}" height="128px" />)url)r   formatr   r   r&   r'   r    r    r!   r     s    zMemberAdmin.show_imagec                 C   s   d dd |j D S )N, c                 S   s   g | ]}|  qS r    __str__.0cr    r    r!   
<listcomp>  s     z(MemberAdmin.get_room.<locals>.<listcomp>)joinre   allr   r    r    r!   r     s    zMemberAdmin.get_roomc                 C   s   d dd |j D S )Nr   c                 S   s   g | ]}|  qS r    r   r   r    r    r!   r     s     z+MemberAdmin.get_devices.<locals>.<listcomp>)r   
device_setr   r   r    r    r!   r     s    zMemberAdmin.get_devicesc                 C   s   d dd |j D S )Nr   c                 S   s   g | ]}|  qS r    r   r   r    r    r!   r     s     z'MemberAdmin.get_tac.<locals>.<listcomp>)r   member_tac_setr   r   r    r    r!   r     s    zMemberAdmin.get_tacc                 C   sH   g }|j dkr|d n$t|j D ]\}}||j q(d|S )N	Cunibertir   r   )r   append	enumerater   r   project_acrr   )r&   r'   Zout_lsr   pr    r    r!   r     s    
zMemberAdmin.get_projectsNc                 C   s   dS r$   r    r%   r    r    r!   r(      s    z!MemberAdmin.has_delete_permissionzCurrent photoZDevicesZdevice__nameRoomzTAC meetingZmember_tac__date_newProjects)N)r-   r.   r/   r]   list_filterrr   r2   rs   rt   orderingru   ry   inlinesr   r   r   r   r   r(   r_   admin_order_fieldr    r    r    r!   r      sb          

r   c                   @   s   e Zd ZeZdZdZdS )GroupTopicAdminr   r   N)r-   r.   r/   r   rv   rw   rx   r    r    r    r!   r   .  s   r   c                   @   sZ   e Zd ZdZdddiffZddddd	d
gZegZdd Zde_	dddZ
G dd dZdS )
GroupAdmin)r5   r   get_group_leader
group_typer   internal_groupNrm   )r   r5   group_leadergroup_memberr   projectthesispatentr   r   r   )r   	copyrightr   r   r   r   r   r   r   c                 C   s   d dd |j D S )Nr   c                 S   s   g | ]}|  qS r    r   r   r    r    r!   r   A  s     z/GroupAdmin.get_group_leader.<locals>.<listcomp>)r   r   r   r   r    r    r!   r   @  s    zGroupAdmin.get_group_leaderzGroup leaderc                 C   s   dS r$   r    r%   r    r    r!   r(   C  s    z GroupAdmin.has_delete_permissionc                   @   s   e Zd ZeZdS )zGroupAdmin.MetaN)r-   r.   r/   r   rv   r    r    r    r!   MetaF  s   r   )N)r-   r.   r/   r]   rs   rt   r   r   r   r_   r(   r   r    r    r    r!   r   3  s    
r   c                   @   s&   e Zd ZeZdddiffZdZdZdS )"Shared_document_further_filesAdminrl   rm   )order_indexr   r*   pdf_file_to_downloadeditable_fileeditable_file_to_downloadzip_filezip_file_to_downloadr   r   N)r-   r.   r/   r   rv   rs   rw   rx   r    r    r    r!   r   I  s    r   c                   @   s(   e Zd ZdZdZdddiffZegZdS )Shared_documentAdminz&shared_document__change_list_form.html)r5   r   Nrm   )r5   r   r   r   r   r   
video_file)r-   r.   r/   r\   r]   rs   r   r   r    r    r    r!   r   S  s    r   N)-Zdjango.contribr   Zdjango.shortcutsr   r   django.urlsr   modelsr   r   r	   r
   r   r   r   r   r   r   r   r   modules_webpager   r   django.utils.safestringr   formsr   r   django.utils.htmlr   register
ModelAdminr   r3   ra   rb   rc   StackedInlineru   ry   r   r   r   r   r   r    r    r    r!   <module>   s8   8(()&J
