U
    ٝgb<                     @   s  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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mZmZ d dlmZ d d	lZd d
lm Z  d dl!m"Z"m#Z# ej$dddd Z%ej$dddd Z&ej$dddd Z'G dd dej(Z)ej*+ee) G dd dej,Z-G dd dej.Z/G dd dej(Z0G dd dej.Z1G d d! d!ej(Z2G d"d# d#ej(Z3G d$d% d%ej.Z4G d&d' d'ej.Z5G d(d) d)ej.Z6G d*d+ d+ej(Z7G d,d- d-ej(Z8G d.d/ d/ej(Z9G d0d1 d1ej(Z:G d2d3 d3ej.Z;G d4d5 d5ej(Z<ej*+ee0 ej*+ee2 ej*+ee3 ej*+ee7 ej*+ee8 ej*+ee9 ej*+ee: ej*+ee< d	S )6    )admin   )PublicationProjectProjectContainerProjectFileResearchEquipmentResearchEquipment_inventoryResearchEquipment_calibrationResearchEquipment_maintainceEquipment_CategoryThesisPatentPatentChildAdd_PublicationJournalCoverOpen_Thesis)Member)Agency)forms)add_publication_infoadd_dois_scholar_infoset_slug)HttpResponseN)	mark_safe)CountQzAdd selected publications)descriptionc                 C   s   t | d S N)r   
modeladminrequestqueryset r#   "/var/www/nanotud/research/admin.pyadd_publication   s    r%   zSet Slugc                 C   s   t | d S r   )r   r   r#   r#   r$   add_slug   s    r&   z2Add titles from Google Scholar for Author and Yearc                 C   s   t | d S r   )r   r   r#   r#   r$   add_dois_scholar   s    r'   c                   @   s2   e Zd ZddgZddgZddddddgZegZdS )	Add_PublicationAdminaddedcommentyeartitledoiauthordoi_in_pubsN)__name__
__module____qualname__readonly_fieldslist_filterlist_displayr%   actionsr#   r#   r#   r$   r(      s   r(   c                   @   s   e Zd ZG dd dZdS )Form_PublicationAdminc                   @   sl   e Zd ZejddddejddddejddddejddidejddidejddiddZd	S )
zForm_PublicationAdmin.Meta   P   )rowscols)attrs   size5)r,   author_listabstractpagenumbervolumeN)r0   r1   r2   r   Textarea	TextInputwidgetsr#   r#   r#   r$   Meta'   s   rH   N)r0   r1   r2   rH   r#   r#   r#   r$   r7   &   s   r7   c                   @   s&   e Zd ZeZdddiffZdZdZdS )JournalCoverAdminNfields)r-   urlcover_imager   )r0   r1   r2   r   model	fieldsetsmin_numextrar#   r#   r#   r$   rI   4   s    rI   c                       s   e Zd Z fddZdZdddddgZd	Zd
ddiffZdddgZdZ	e
gZeZdgZ fddZdd Zde_de_dd Zdd Zde_de_de_  ZS )PublicationAdminc                    s   t  |}|d= |S Ndelete_selectedsuperget_actionsselfr!   r6   	__class__r#   r$   rV   A   s    zPublicationAdmin.get_actions)r,   approved
cvselected	get_coverpub_dater+   open_accessrD   journal_shortrB   r-   get_cover_imagepub_typecreated_date	arxiv_urlr,   r-   r@   r`   journal)r[   r\   grouprb   	chair_pubr_   NrJ   )r[   )r-   rb   r,   r@   r.   rf   projectrA   r\   )r`   re   rD   )rB   r+   r^   rL   rg   )pdf_file
pdf_publicrd   )open_access_urlr_   slugr.   rf   rh   r^   export_as_docxc                    s*   t  |}|jtdtdddd}|S )NZ%journalCover_publication__cover_imageF)Z-journalCover_publication__cover_image__isnull)filter	has_cover)rU   get_querysetannotater   r   )rX   r!   qsrY   r#   r$   rq   V   s    zPublicationAdmin.get_querysetc                 C   s
   |j dkS )Nr   ro   rX   objr#   r#   r$   r]   `   s    zPublicationAdmin.get_coverTrp   c                 C   s    |j d k	r|j dkrdS dS d S )N TF)rL   rt   r#   r#   r$   ra   k   s    z PublicationAdmin.get_cover_imagec                 C   s  | j j}dd |jD }tdd}d||d< |D ]}|D ]}|dkrRt||}|dkrdt||}	|d	krt||}
|
d krd
}
|dkrt||}|d krd
}|dkrt||j}|dkr<t||}|d kr<d
}q<||d |	 d |
 d t| d t| d t| d  q4|S )Nc                 S   s   g | ]
}|j qS r#   )name).0fieldr#   r#   r$   
<listcomp>t   s     z3PublicationAdmin.export_as_docx.<locals>.<listcomp>ztext/csv)content_typezattachment; filename={}.txtzContent-Dispositionr@   r,   r`   rv   rD   r^   rB   z.  z (z) z.


)	rM   _metarJ   r   formatgetattrr+   writestr)rX   r!   r"   metafield_namesresponseru   ry   authorsr,   r`   rD   r^   rB   r#   r#   r$   rm   q   s4    



 
 
 DzPublicationAdmin.export_as_docxz!Export selected (format for IFWW)zImage?zOn journal cover?)r0   r1   r2   rV   r5   search_fieldsr4   rN   filter_horizontaldate_hierarchyrI   inlinesr7   formr6   rq   r]   booleanadmin_order_fieldra   rm   short_description__classcell__r#   r#   rY   r$   rQ   @   s.    

rQ   c                   @   s"   e Zd ZeZdddiffZdZdS )ProjectFileAdminNrJ   ))file	copyrightr,   r   r   )r0   r1   r2   r   rM   rN   rP   r#   r#   r#   r$   r      s    r   c                       s   e Zd ZdZdddd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fZddddgZegZdd Z	 fddZ
de	_  ZS )ProjectAdmin)	rw   project_acragency
project_id
start_dateend_datefunding_sumget_project_memberrl   rw   r   Zagency__nameZproject_member__last_nameZproject_member__given_nameNrJ   )show_publicrw   superordinateProjectr   r   r   acknowledgement)info_url
gepris_url
agency_urlproject_memberrf   rl   Project funding details)r   r   r   funding_scheme
funding_idr   zRelated ressources)	equipmentzRelated publications)publicationZImages))image_projectcopyright_image_project)image_descrcopyright_image_descrr   rf   r   r   c                 C   s   d dd |j D S )N, c                 S   s   g | ]}|  qS r#   __str__rx   cr#   r#   r$   rz      s     z3ProjectAdmin.get_project_member.<locals>.<listcomp>)joinr   allrt   r#   r#   r$   r      s    zProjectAdmin.get_project_memberc                    s   t  |}|d= |S rR   rT   rW   rY   r#   r$   rV      s    zProjectAdmin.get_actionszProject member)r0   r1   r2   r5   r   rN   r   r   r   r   rV   r   r   r#   r#   rY   r$   r      s8        r   c                   @   s(   e Zd ZdZdddifdddiffZdS )ProjectContainerAdmin)name_germanname_englishr   r   r   NrJ   ))r   r   r   r   r   r   r   )r   r   funding_acrr   r   coordinated_by)r0   r1   r2   r5   rN   r#   r#   r#   r$   r      s     r   c                   @   s&   e Zd ZeZdddiffZdZdZdS )!ResearchEquipment_maintainceAdminNrJ   dateworksnotesroomimager   r   )r0   r1   r2   r   rM   rN   rO   rP   r#   r#   r#   r$   r      s    r   c                   @   s&   e Zd ZeZdddiffZdZdZdS )"ResearchEquipment_calibrationAdminNrJ   r   r   )r0   r1   r2   r
   rM   rN   rO   rP   r#   r#   r#   r$   r      s    r   c                   @   s*   e Zd ZeZdddiffZdZdZdZdS ) ResearchEquipment_inventoryAdminNrJ   )r   r   r   r   )r   r   )	r0   r1   r2   r	   rM   rN   r3   rO   rP   r#   r#   r#   r$   r      s    r   c                       s   e Zd ZdgZdZdddddgZdd	d
iffZdddddgZee	e
gZ fddZdd Zdd Zdd Zdd Zdd Zdd Zde_de_d e_d!e_d"e_d#e_  ZS )$ResearchEquipmentAdmin
show_image)rw   name_commonactiveinventory_nrr   get_responsible_personget_categoriespriceget_inventoryget_maintainceget_calibrationrw   r   r   Zresponsible_person__last_nameZresponsible_person__given_nameNrJ   )r   )r   rw   r   )r   r   )manufacturerrM   )facilitypartnerr   category)r   technicalSpecsdevicemaintenance)r   techPortalTUD_urlr   rf   rh   responsible_personrf   rh   r   r   r   c                    s   t  |}|d= |S rR   rT   rW   rY   r#   r$   rV      s    z"ResearchEquipmentAdmin.get_actionsc                 C   s.   |j r&t|j dr&tdj|j jdS dS d S )NrK   z"<img src="{url}" height="128px" />)rK   rv   )r   hasattrr   r~   rK   rt   r#   r#   r$   r      s
    z!ResearchEquipmentAdmin.show_imagec                 C   s   d dd |j D S )Nr   c                 S   s   g | ]}|  qS r#   r   r   r#   r#   r$   rz     s     zAResearchEquipmentAdmin.get_responsible_person.<locals>.<listcomp>)r   r   r   rt   r#   r#   r$   r     s    z-ResearchEquipmentAdmin.get_responsible_personc                 C   s   d dd |j D S )Nr   c                 S   s   g | ]}|  qS r#   r   r   r#   r#   r$   rz     s     z9ResearchEquipmentAdmin.get_categories.<locals>.<listcomp>)r   r   r   rt   r#   r#   r$   r     s    z%ResearchEquipmentAdmin.get_categoriesc                 C   s&   |j  rt|j  d jS dS d S Nr   rv   )researchequipment_inventoryr   r   r   rt   r#   r#   r$   r     s    
z$ResearchEquipmentAdmin.get_inventoryc                 C   s&   |j  rt|j  d jS dS d S r   )researchequipment_maintaincer   r   r   rt   r#   r#   r$   r     s    
z%ResearchEquipmentAdmin.get_maintaincec                 C   s&   |j  rt|j  d jS dS d S r   )researchequipment_calibrationr   r   r   rt   r#   r#   r$   r     s    
z&ResearchEquipmentAdmin.get_calibrationzResponsible personCategoryzLast date of inventoryzLast date of maintaincezLast date of calibrationzCurrent photo)r0   r1   r2   r3   r5   r   rN   r   r   r   r   r   rV   r   r   r   r   r   r   r   r   r#   r#   rY   r$   r      s.    
r   c                   @   s*   e Zd ZdZdgZdddiffZdgZdS )Equipment_CategoryAdmin)rw   order_indexrw   NrJ   )rw   r   r   r   )r0   r1   r2   r5   r   rN   r   r#   r#   r#   r$   r   $  s    r   c                       sL   e Zd ZdZdZdddiffZdddd	gZd
d Zde_ fddZ	  Z
S )ThesisAdmin)r,   display_authorsr   r   def_dateslub)rb   r   rf   NrJ   )rb   )r   r   r   )
universityfacultyr,   )
author_newauthor_manual)
supervisorsupervisor_manualfunction_cunibertirf   rA   rL   rg   rh   ri   r   rigorosum_notesr   r   rh   rf   c                 C   s   d dd |j D S )Nr   c                 s   s   | ]}t |V  qd S r   )r   )rx   r.   r#   r#   r$   	<genexpr>9  s     z.ThesisAdmin.display_authors.<locals>.<genexpr>)r   r   r   rt   r#   r#   r$   r   8  s    zThesisAdmin.display_authorsr   c                    s   t  |}|d= |S rR   rT   rW   rY   r#   r$   rV   <  s    zThesisAdmin.get_actions)r0   r1   r2   r5   r4   rN   r   r   r   rV   r   r#   r#   rY   r$   r   /  s    r   c                       sb   e Zd ZddddddgZddd	iffZd
dddgZdd Zde_ fddZdd Z	de_  Z
S )OpenThesisAdminr,   publicget_supervisorget_pub_typetheoryexperimentalNrJ   ))r   r   publication_typer   r,   r   rA   ri   )rL   r   rh   rf   r   r   rh   rf   r   c                 C   s   d dd |j D S )Nr   c                 S   s   g | ]}|  qS r#   r   r   r#   r#   r$   rz   P  s     z2OpenThesisAdmin.get_supervisor.<locals>.<listcomp>)r   r   r   rt   r#   r#   r$   r   O  s    zOpenThesisAdmin.get_supervisorZ
Supervisorc                    s   t  |}|d= |S rR   rT   rW   rY   r#   r$   rV   S  s    zOpenThesisAdmin.get_actionsc                 C   s   d dd |j D S )Nr   c                 S   s   g | ]}|  qS r#   r   r   r#   r#   r$   rz   Z  s     z0OpenThesisAdmin.get_pub_type.<locals>.<listcomp>)r   r   r   rt   r#   r#   r$   r   Y  s    zOpenThesisAdmin.get_pub_typeType)r0   r1   r2   r5   rN   r   r   r   rV   r   r   r#   r#   rY   r$   r   E  s    r   c                   @   s&   e Zd ZeZdddiffZdZdZdS )PatentChildAdminNrJ   )rC   rb   app_dater^   
issue_datecountryrK   ri   r   r   )r0   r1   r2   r   rM   rN   rO   rP   r#   r#   r#   r$   r   ]  s    r   c                       sj   e Zd ZdZdZdddifdddiffZ fdd	Zd
dddgZegZ	dd Z
de
_G dd dZ  ZS )PatentAdmin)title_german
url_familyget_patentsrl   )rf   NrJ   ))r\   rg   )r   title_englishinventorownerabstract_germanabstract_englishapplication_fieldsrL   rh   ri   rl   Z
References)r   google_patentsorbitc                    s   t  |}|d= |S rR   rT   rW   rY   r#   r$   rV   t  s    zPatentAdmin.get_actionsrh   rf   r   r   c                 C   s   d dd |j D S )Nr   c                 S   s   g | ]
}|j qS r#   )rC   r   r#   r#   r$   rz     s     z+PatentAdmin.get_patents.<locals>.<listcomp>)r   patentchild_patentr   rt   r#   r#   r$   r     s    zPatentAdmin.get_patentsz
Patent-IDsc                   @   s   e Zd ZeZdS )zPatentAdmin.MetaN)r0   r1   r2   r   rM   r#   r#   r#   r$   rH     s   rH   )r0   r1   r2   r5   r4   rN   rV   r   r   r   r   r   rH   r   r#   r#   rY   r$   r   i  s"     r   )=Zdjango.contribr   modelsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   internal.modelsr   home.modelsr   djangor   Zmodules_webpager   r   r   django.httpr   csvdjango.utils.safestringr   django.db.modelsr   r   actionr%   r&   r'   
ModelAdminr(   siteregister	ModelFormr7   StackedInlinerI   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   <module>   sP   D





T


9$