
    dhT>                        d dl mZ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             Z& ej%        d          d             Z' ej%        d          d             Z( G d dej)                  Z*ej+        ,                    ee*            G d dej-                  Z. G d dej/                  Z0 G d dej)                  Z1 G d dej/                  Z2 G d dej)                  Z3 G d d ej)                  Z4 G d! d"ej/                  Z5 G d# d$ej/                  Z6 G d% d&ej/                  Z7 G d' d(ej)                  Z8 G d) d*ej)                  Z9 G d+ d,ej)                  Z: G d- d.ej)                  Z; G d/ d0ej/                  Z< G d1 d2ej)                  Z=ej+        ,                    ee1           ej+        ,                    ee3           ej+        ,                    ee4           ej+        ,                    ee8           ej+        ,                    ee9           ej+        ,                    ee:           ej+        ,                    ee;           ej+        ,                    ee=           d	S )3    )adminmessages   )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                 $    t          |           d S N)r   
modeladminrequestquerysets      "/var/www/nanotud/research/admin.pyadd_publicationr(      s    """""    zSet Slugc                 $    t          |           d S r"   )r   r#   s      r'   add_slugr+      s    Xr)   z2Add titles from Google Scholar for Author and Yearc                 $    t          |           d S r"   )r   r#   s      r'   add_dois_scholarr-      s    (#####r)   c                   ,    e Zd ZddgZddgZg dZegZdS )Add_PublicationAdminaddedcommentyear)titledoir2   authorr0   doi_in_pubsN)__name__
__module____qualname__readonly_fieldslist_filterlist_displayr(   actions r)   r'   r/   r/      s5        y)O6"KJJJLGGGr)   r/   c                   (    e Zd Z G d d          ZdS )Form_PublicationAdminc            	           e Zd Z ej        ddd           ej        ddd           ej        ddd           ej        ddi           ej        ddi           ej        ddi          dZd	S )
Form_PublicationAdmin.Meta   P   )rowscols)attrs   size5)r3   author_listabstractpagenumbervolumeN)r7   r8   r9   r   Textarea	TextInputwidgetsr>   r)   r'   MetarB   '   s        #U^!B*?*?@@@)5>"0E0EFFF&Qr-B-BCCC$U_FC=999&ufc];;;&ufc];;;
 
r)   rS   N)r7   r8   r9   rS   r>   r)   r'   r@   r@   &   s<        
 
 
 
 
 
 
 
 
 
r)   r@   c                   (    e Zd ZeZdddiffZdZdZdS )JournalCoverAdminNfields)r4   urlcover_imager   )r7   r8   r9   r   model	fieldsetsmin_numextrar>   r)   r'   rU   rU   4   s9        
E4 I
 G
EEEr)   rU   c                        e Zd Z fdZdZg dZdZdddiffZg dZd	Z	e
gZeZd
gZ fdZd Zde_        de_        d Zd Zde_        de_        de_         xZS )PublicationAdminc                 P    t                                          |          }|d= |S Ndelete_selectedsuperget_actionsselfr%   r=   	__class__s      r'   rd   zPublicationAdmin.get_actionsA   (    ''%%g..%&r)   )r3   approved
cvselected	get_coverpub_dater2   open_accessrO   journal_shortrM   r4   get_cover_imagepub_typecreated_date	arxiv_url)r3   r4   rK   rn   journal)ri   rj   grouprp   	chair_pubrm   NrV   )ri   )r4   rp   r3   rK   r5   rt   projectrL   rj   )rn   rs   rO   )rM   r2   rl   rX   ru   )pdf_file
pdf_publicrr   )open_access_urlrm   slug)r5   rt   rv   rl   export_as_docxc                     t                                          |          }|                    t          dt	          d                              }|S )N%journalCover_publication__cover_imageF)-journalCover_publication__cover_image__isnull)filter	has_cover)rc   get_querysetannotater   r   )rf   r%   qsrg   s      r'   r   zPublicationAdmin.get_querysetV   s\    WW!!'**[[7uMMM    
 
 	r)   c                     |j         dk    S )Nr   r   rf   objs     r'   rk   zPublicationAdmin.get_cover`   s    }q  r)   Tr   c                 .    |j         |j         dk    rdS dS )N TF)rX   r   s     r'   ro   z PublicationAdmin.get_cover_imagek   s     ?&3?B+>+>45r)   c                    | j         j        }d |j        D             }t          d          }d                    |          |d<   |D ]}|D ]}|dk    rt          ||          }|dk    rt          ||          }	|dk    rt          ||          }
|
d k    rd	}
|d
k    rt          ||          }|d k    rd	}|dk    rt          ||          j        }|dk    rt          ||          }|d k    rd	}|                    |dz   |	z   dz   |
z   dz   t          |          z   dz   t          |          z   dz   t          |          z   dz              |S )Nc                     g | ]	}|j         
S r>   )name).0fields     r'   
<listcomp>z3PublicationAdmin.export_as_docx.<locals>.<listcomp>t   s    ;;;euz;;;r)   ztext/csv)content_typezattachment; filename={}.txtzContent-DispositionrK   r3   rn   r   rO   rl   rM   z.  z (z) z.


)	rY   _metarV   r   formatgetattrr2   writestr)rf   r%   r&   metafield_namesresponser   r   authorsr3   rn   rO   rl   rM   s                 r'   r{   zPublicationAdmin.export_as_docxq   s   z;;t{;;;Z888*G*N*Nt*T*T&' 	~ 	~C$ + +-''%c511G'>>"3..E/))#*3#6#6M$d**"M(??#C//Ft||BV*$$%c5117H&==!#u--DTzz4NN74<-d2=@DS[[PQUUVYZbVcVccdhhilmqirirrs||}}}}r)   z!Export selected (format for IFWW)zImage?zOn journal cover?)r7   r8   r9   rd   r<   search_fieldsr;   rZ   filter_horizontaldate_hierarchyrU   inlinesr@   formr=   r   rk   booleanadmin_order_fieldro   r{   short_description__classcell__rg   s   @r'   r^   r^   @   s            
 BLKKKMYK b I 322N !G	DG    ! ! !I"-I    6 (KN$(0O%"5Ir)   r^   c                   $    e Zd ZeZdddiffZdZdS )ProjectFileAdminNrV   ))file	copyrightr3   r    r   )r7   r8   r9   r	   rY   rZ   r\   r>   r)   r'   r   r      s4        EF I
 EEEr)   r   c                        e Zd ZdZg d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g dZegZd Z	 fdZ
de	_         xZS )ProjectAdmin)	r   project_acragency
project_id
start_dateend_datefunding_sumget_project_memberrz   )r   r   agency__nameproject_member__last_nameproject_member__given_nameNrV   )show_publicr   superordinateProjectr   r   r    acknowledgement)info_url
gepris_url
agency_urlproject_memberrt   rz   Project funding details)r   r   r   funding_scheme
funding_idr   zRelated ressources)	equipmentzRelated publications)publicationImages))image_projectcopyright_image_project)image_descrcopyright_image_descr)r   rt   r   r   c                 n    d                     d |j                                        D                       S )N, c                 6    g | ]}|                                 S r>   __str__r   cs     r'   r   z3ProjectAdmin.get_project_member.<locals>.<listcomp>   s     HHH!!))++HHHr)   )joinr   allr   s     r'   r   zProjectAdmin.get_project_member   s2    yyHHs/A/E/E/G/GHHHIIIr)   c                 P    t                                          |          }|d= |S r`   rb   re   s      r'   rd   zProjectAdmin.get_actions   rh   r)   zProject member)r7   r8   r9   r<   r   rZ   r   r   r   r   rd   r   r   r   s   @r'   r   r      s         CLrrrM  I  'k)  ".$  $*&  o 
I" KJJ GJ J J    
 *:(((((r)   r   c                   *    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   NrV   ))r   r   r   r   r    r   r   )r   r   funding_acrr   r   coordinated_by)r7   r8   r9   r<   rZ   r>   r)   r'   r   r      sB        WLk  'o) 	
IIIr)   r   c                   (    e Zd ZeZdddiffZdZdZdS )!ResearchEquipment_maintainceAdminNrV   dateworksnotesroomimager   r   )r7   r8   r9   r   rY   rZ   r[   r\   r>   r)   r'   r   r      s9        
&EI I
 G
EEEr)   r   c                   (    e Zd ZeZdddiffZdZdZdS )"ResearchEquipment_calibrationAdminNrV   r   r   )r7   r8   r9   r   rY   rZ   r[   r\   r>   r)   r'   r   r      s9        
'EI I
 G
EEEr)   r   c                   ,    e Zd ZeZdddiffZdZdZdZdS ) ResearchEquipment_inventoryAdminNrV   )r   r   r   r   )r   r   )	r7   r8   r9   r   rY   rZ   r:   r[   r\   r>   r)   r'   r   r      s>        
%EB I
  OG
EEEr)   r   c                        e Zd ZdgZdZg dZdddiffZg dZee	e
gZ fdZd	 Zd
 Zd Zd Zd Zd Zde_        de_        de_        de_        de_        de_         xZS )ResearchEquipmentAdmin
show_image)r   name_commonactiveinventory_nrr   get_responsible_personget_categoriespriceget_inventoryget_maintainceget_calibration)r   r   r   responsible_person__last_nameresponsible_person__given_nameNrV   )r   )r   r   r   )r   r   )manufacturerrY   )facilitypartnerr   category)r    technicalSpecsdevicemaintenance)r   techPortalTUD_urlr   rt   rv   responsible_person)rt   rv   r   r   r   c                 P    t                                          |          }|d= |S r`   rb   re   s      r'   rd   z"ResearchEquipmentAdmin.get_actions   rh   r)   c                     |j         rBt          |j         d          r-t          d                    |j         j                            S dS )NrW   z"<img src="{url}" height="128px" />)rW   r   )r   hasattrr   r   rW   r   s     r'   r   z!ResearchEquipmentAdmin.show_image   sX    9 	E22 	AHHim I      2r)   c                 n    d                     d |j                                        D                       S )Nr   c                 6    g | ]}|                                 S r>   r   r   s     r'   r   zAResearchEquipmentAdmin.get_responsible_person.<locals>.<listcomp>  s     LLL!!))++LLLr)   )r   r   r   r   s     r'   r   z-ResearchEquipmentAdmin.get_responsible_person  s2    yyLLs/E/I/I/K/KLLLMMMr)   c                 n    d                     d |j                                        D                       S )Nr   c                 6    g | ]}|                                 S r>   r   r   s     r'   r   z9ResearchEquipmentAdmin.get_categories.<locals>.<listcomp>  s     BBB!!))++BBBr)   )r   r   r   r   s     r'   r   z%ResearchEquipmentAdmin.get_categories  s1    yyBBs|/?/?/A/ABBBCCCr)   c                     |j                                         r1t          |j                                         d         j                  S dS Nr   r   )researchequipment_inventoryr   r   r   r   s     r'   r   z$ResearchEquipmentAdmin.get_inventory  sC    *..00 	s6::<<Q?DEEE2r)   c                     |j                                         r1t          |j                                         d         j                  S dS r  )researchequipment_maintaincer   r   r   r   s     r'   r   z%ResearchEquipmentAdmin.get_maintaince  sC    +//11 	s7;;==a@EFFF2r)   c                     |j                                         r1t          |j                                         d         j                  S dS r  )researchequipment_calibrationr   r   r   r   s     r'   r   z&ResearchEquipmentAdmin.get_calibration  sC    ,0022 	s8<<>>qAFGGG2r)   zResponsible personCategoryzLast date of inventoryzLast date of maintaincezLast date of calibrationzCurrent photo)r7   r8   r9   r:   r<   r   rZ   r   r   r   r   r   rd   r   r   r   r   r   r   r   r   r   s   @r'   r   r      s       #nO nLzzzM  l 
I
 SRR/0QRtuG    
  N N ND D D
    
   .B,%/N$$<M#%>N$&@O%"1J     r)   r   c                   ,    e Zd ZdZdgZdddiffZdgZdS )Equipment_CategoryAdmin)r   order_indexr   NrV   )r   r   r  r   )r7   r8   r9   r<   r   rZ   r   r>   r)   r'   r
  r
  $  s@        )LHM< 
I
 #mr)   r
  c                        e Zd ZdZdZdddiffZg dZd Zde_         fd	Z	 e
j        d
          d             Z xZS )ThesisAdmin)r3   display_authorsr   r   def_dateslub)rp   r  rt   NrV   )rp   rz   )r   r   r  )
universityfacultyr3   )
author_newauthor_manual)
supervisorsupervisor_manual)reviewerreviewer_manualfunction_cunibertigradert   rL   rX   ru   rv   rw   r  qucosarigorosum_notes)r  r  r  rv   rt   c                 n    d                     d |j                                        D                       S )Nr   c              3   4   K   | ]}t          |          V  d S r"   )r   )r   r5   s     r'   	<genexpr>z.ThesisAdmin.display_authors.<locals>.<genexpr>9  s(      HHVHHHHHHr)   )r   r  r   r   s     r'   r  zThesisAdmin.display_authors8  s1    yyHH3>3E3E3G3GHHHHHHr)   r   c                 P    t                                          |          }|d= |S r`   rb   re   s      r'   rd   zThesisAdmin.get_actions<  rh   r)   zcreate slugsr   c                     d}|D ]"}|j         s|                                 |dz  }#|                     || dt          j                   d S )Nr   r   z slugs created)level)rz   savemessage_userr   SUCCESS)rf   r%   r&   counterthesiss        r'   regenerate_slugszThesisAdmin.regenerate_slugsB  ss     	 	F; 1&&&" 	 	
 	
 	
 	
 	
r)   )r7   r8   r9   r<   r;   rZ   r   r  r   rd   r   actionr(  r   r   s   @r'   r  r  /  s        ZL1K  X I
 ONNI I I(1O%     U\n---

 

 .-

 

 

 

 

r)   r  c                   d     e Zd Zg dZdddiffZg dZd Zde_         fdZd	 Z	d
e_         xZ
S )OpenThesisAdmin)r3   publicget_supervisorget_pub_typetheoryexperimentalNrV   ))r/  r0  publication_typer,  r3   r  rL   rw   )rX   r   rv   rt   r   )r  rv   rt   r   c                 n    d                     d |j                                        D                       S )Nr   c                 6    g | ]}|                                 S r>   r   r   s     r'   r   z2OpenThesisAdmin.get_supervisor.<locals>.<listcomp>^  s     DDD!!))++DDDr)   )r   r  r   r   s     r'   r-  zOpenThesisAdmin.get_supervisor]  s1    yyDDs~/A/A/C/CDDDEEEr)   
Supervisorc                 P    t                                          |          }|d= |S r`   rb   re   s      r'   rd   zOpenThesisAdmin.get_actionsa  rh   r)   c                 n    d                     d |j                                        D                       S )Nr   c                 6    g | ]}|                                 S r>   r   r   s     r'   r   z0OpenThesisAdmin.get_pub_type.<locals>.<listcomp>h  s     JJJ!!))++JJJr)   )r   r1  r   r   s     r'   r.  zOpenThesisAdmin.get_pub_typeg  s2    yyJJs/C/G/G/I/IJJJKKKr)   Type)r7   r8   r9   r<   rZ   r   r-  r   rd   r.  r   r   s   @r'   r+  r+  S  s        ^^^L   y I
 EDDF F F%1N$    L L L%+N$$$$$r)   r+  c                   (    e Zd ZeZdddiffZdZdZdS )PatentChildAdminNrV   )rN   rp   app_daterl   
issue_datecountryrW   rw   r   r   )r7   r8   r9   r   rY   rZ   r[   r\   r>   r)   r'   r:  r:  k  s9        
El I
 G
EEEr)   r:  c                   |     e Zd ZdZdZdddifdddiffZ fdZ	 g d	ZegZ	d
 Z
de
_         G d d          Z xZS )PatentAdmin)title_german
url_familyget_patentsrz   )rt   NrV   ))rj   ru   )r@  title_englishinventorownerabstract_germanabstract_englishapplication_fieldsrX   rv   rw   rz   
References)rA  google_patentsorbitc                 P    t                                          |          }|d= |S r`   rb   re   s      r'   rd   zPatentAdmin.get_actions  rh   r)   )rv   rt   rD  rE  c                 n    d                     d |j                                        D                       S )Nr   c                     g | ]	}|j         
S r>   )rN   r   s     r'   r   z+PatentAdmin.get_patents.<locals>.<listcomp>  s    IIIq!(IIIr)   )r   patentchild_patentr   r   s     r'   rB  zPatentAdmin.get_patents  s2    yyIIC,B,F,F,H,HIIIJJJr)   z
Patent-IDsc                       e Zd ZeZdS )PatentAdmin.MetaN)r7   r8   r9   r   rY   r>   r)   r'   rS   rQ    s        r)   rS   )r7   r8   r9   r<   r;   rZ   rd   r   r:  r   rB  r   rS   r   r   s   @r'   r?  r?  w  s        FLK  N  A 	I     =<< GK K K$0K!           r)   r?  )>django.contribr   r   modelsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   internal.modelsr   home.modelsr   djangor   modules_webpager   r   r   django.httpr   csvdjango.utils.safestringr   django.db.modelsr   r   r)  r(   r+   r-   
ModelAdminr/   siteregister	ModelFormr@   StackedInlinerU   r^   r   r   r   r   r   r   r   r
  r  r+  r:  r?  r>   r)   r'   <module>ra     s   * * * * * * * * M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M  M " " " " " "             Q Q Q Q Q Q Q Q Q Q $ $ $ $ $ $ 



 - - - - - - % % % % % % % % 5666# # 76# *%%%  &% NOOO$ $ PO$         5+       
  O$8 9 9 9	
 	
 	
 	
 	
EO 	
 	
 	
    +   N6 N6 N6 N6 N6u' N6 N6 N6h    u*   : : : : :5# : : :>	
 	
 	
 	
 	
E, 	
 	
 	
    (;       )<   	 	 	 	 	u': 	 	 	62 62 62 62 62U- 62 62 62r$ $ $ $ $e. $ $ $
 
 
 
 
%" 
 
 
H, , , , ,e& , , ,0    u*       %"   H 
  K!1 2 2 2 
  G\ * * * 
  $&; < < < 
  %'= > > > 
  &(? @ @ @ 
  FK ( ( ( 
  K 1 1 1 
  FK ( ( ( ( (r)   