U
    "gb                     @   s  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
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Zd d	lZG d
d deZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZ G dd dejZ!dd Z"G dd dejZ#G dd dejZ$d d! Z%G d"d# d#ejZ&G d$d% d%ejZ'G d&d' d'ejZ(d	S )(    )models)reverse)
Title_fullCountryRoomGenderStatusStatus_extern
Prenominal)PhoneNumberField)NewsPresentation)slugify)settings)FileSystemStorageNc                   @   s   e Zd ZdZdddZdS )OverwriteStorageu   
    Muda o comportamento padrão do Django e o faz sobrescrever arquivos de
    mesmo nome que foram carregados pelo usuário ao invés de renomeá-los.
    Nc                 C   s$   |  |r ttj| j| |S N)existsosremovepathjoinlocation)selfname
max_length r   #/var/www/nanotud/internal/models.pyget_available_name   s    
z#OverwriteStorage.get_available_name)N)__name__
__module____qualname____doc__r   r   r   r   r   r      s   r   c                   @   s   e Zd Zejdde dZejdddZejdddZejdddZ	ejdde dZ
ejdde dZejdde dZejdde dZejdde dZejdde dZejdde dZdS )CVzuploads/cv_files/T)	upload_toblankstorager$   r%   zuploads/cv_files/auto_includeN)r   r    r!   r   	FileFieldr   Ztex_filepdf_fileZ	pdf_shortZlog_fileZpublication_includeZconferences_includeZpatents_includeZpapers_selected_includeZphds_includeZtalks_includeZrest_includer   r   r   r   r#      s   r#   c                   @   s   e Zd ZejddddZejdddZejddd	ddd
Zej	dddZ
ejdddZejdejjdZdd Zdd Zdd ZG dd dZdS )HalslideUnique Named   Tr   uniqueuploads/internal/slides/$Image format: png; Video format: mp4r$   	help_textEditable file)Here you should upload the editable file.r$   r2   r%   null
   Display time of the slide in seconds. If the slide has video format the display time will be adjusted to video length automatically.defaultr2   Show on webpage
Date addedr:   c                 C   s   | j S r   r   r   r   r   r   __str__C   s    zHalslide.__str__c                 C   s   t j| jj\}}| S r   r   r   splitextslider   lowerr   r   	extensionr   r   r   get_extensionF   s    zHalslide.get_extensionc                 C   s   dS )?Returns the url to access a detail record for this publication.z/halwayr   r?   r   r   r   get_absolute_urlJ   s    zHalslide.get_absolute_urlc                   @   s   e Zd ZddgZdS )zHalslide.Meta-show-dateNr   r    r!   orderingr   r   r   r   MetaN   s   rN   Nr   r    r!   r   	CharFieldr   r(   rC   Zslide_editableIntegerFieldtimeBooleanFieldshow	DateFielddatetimedatetodayr@   rG   rI   rN   r   r   r   r   r*   <   s   r*   c                   @   s   e Zd ZejddddZejdddZejddd	ddd
Zej	dddZ
ejdddZejdejjdZdd Zdd Zdd ZG dd dZdS )Researchslider+   r,   Tr-   r/   r0   r1   r3   r4   r5   r7   r8   r9   r;   r<   r=   c                 C   s   | j S r   r>   r?   r   r   r   r@   Y   s    zResearchslide.__str__c                 C   s   t j| jj\}}| S r   rA   rE   r   r   r   rG   \   s    zResearchslide.get_extensionc                 C   s   dS )rH   z
/resslidesr   r?   r   r   r   rI   `   s    zResearchslide.get_absolute_urlc                   @   s   e Zd ZddgZdS )zResearchslide.MetarJ   rK   NrL   r   r   r   r   rN   d   s   rN   NrO   r   r   r   r   rY   R   s   rY   c                   @   s   e Zd ZejddddZejdddZejddd	ddd
Zej	dddZ
ejdddZejdejjdZdd Zdd Zdd ZG dd dZdS )Teachingslider+   r,   Tr-   r/   r0   r1   r3   r4   r5   r7   r8   r9   r;   r<   r=   c                 C   s   | j S r   r>   r?   r   r   r   r@   n   s    zTeachingslide.__str__c                 C   s   t j| jj\}}| S r   rA   rE   r   r   r   rG   q   s    zTeachingslide.get_extensionc                 C   s   dS )rH   z	/tsslidesr   r?   r   r   r   rI   u   s    zTeachingslide.get_absolute_urlc                   @   s   e Zd ZddgZdS )zTeachingslide.MetarJ   rK   NrL   r   r   r   r   rN   y   s   rN   NrO   r   r   r   r   rZ   g   s   rZ   c                   @   s   e Zd ZejdddddddZejddddddZejdddZejdddZ	ej
d	dddd
Zej
d	dddd
ZejdddddZejddZejdddZejddejdddZejedddejdZejddddddZejdddddddZdd ZdS )DeviceZInventory_number2   NT)r   r:   r6   r%   r.   Namer   r6   r%     r   r:   r6   r%   ZPricer:   r6   r%   Fr=   zIn use)r:   verbose_nameMember)r:   	on_deleter6   r%   )r:   r6   r%   re   zUsage for chair related taskszi.e. presenter laptop)rc   r   r2   r6   r%   research.ResearchEquipmentz!research.ResearchEquipment_deviceZdevice_research_eqzResearch equipmentzUsed with which IT-devices?)throughrelated_namer%   rc   r2   c                 C   st   | j r&| jr&| jd | j  d | j S | j rB| jsB| jd | j  S | j s^| jr^| jd | j S | j sp| jsp| jS d S )Nz / Inv-nr.: z
 / S-nr.: )inventory_numberserial_numberr   r?   r   r   r   r@      s    zDevice.__str__)r   r    r!   r   rP   ri   rj   r   rQ   year	TextFielddescriptionhistorypricerS   defectusage
ForeignKeySET_DEFAULTmemberr   roomZ
chair_taskManyToManyFieldresearch_eqr@   r   r   r   r   r[   }   s   r[   c                   @   sn   e Zd ZdZejddejdZejdddZ	ej
ddddd	Zejd
dddd	Zej
ddddd	Zdd ZdS )
GroupTopicz: class needed to allow multiple file upload in class GroupGroupNr:   re   zuploads/group_images/Tr'      ra   r`   r\   c                 C   s   | j jS r   )groupr   r?   r   r   r   r@      s    zGroupTopic.__str__)r   r    r!   r"   r   rr   CASCADEr|   r(   imagerP   titlerl   rm   	copyrightr@   r   r   r   r   rx      s   rx   c                   @   sJ   e Zd ZejddejdZejddddddZej	ddddZ
d	d
 ZdS )Postnominalrd   Nrz      TzEnter the post-nominal here)r   r%   r:   r6   r2   )r%   r6   r:   c                 C   sH   | j jd k	r.| j jj d| j j d| j j S | j j d| j j S d S )N )rt   r   title_short
given_name	last_namer?   r   r   r   r@      s    "zPostnominal.__str__)r   r    r!   r   rr   r}   rt   rP   lettersURLFieldurlr@   r   r   r   r   r      s   r   c                 C   s@   t | d | }tjj|d}| }|r<|t| j }|S )N_slug)r   rd   objectsfilterr   strfirstid)r   r   r   qsr   r   r   r   create_slug_member   s    r   c                   @   s   e Zd ZejddejdZejdddddZej	dddddZ
ejd	ddd
Zejdd	ddd
Zejdd	ddd
Zejdd	ddd
Zdd ZG dd dZdS )
Member_tacrd   Nrz   r{   Tra   Dater:   r%   r6   zuploads/members/tac/)r$   r%   r6   z
Document 1z
Document 2z
Document 3c                 C   s
   t | jS r   )r   date_newr?   r   r   r   r@      s    zMember_tac.__str__c                   @   s   e Zd ZdZdS )zMember_tac.MetazTAC meetingN)r   r    r!   rc   r   r   r   r   rN      s   rN   )r   r    r!   r   rr   r}   rt   rP   r   rU   r   r(   ZslidesZdocumentZ
document_2Z
document_3r@   rN   r   r   r   r   r      s   r   c                       s`  e Zd ZdZejdddZejddddddd	Zejd
ddZejddddddd	Z	ejdddddZ
ejdddddZejddddddZejdddddZejddddddZedddZejdddZejddZejdddZejddd d!Zejdd"d#d!Zejd$dddd%Zejd&dddd%Zejd'dddd%Zejd(ddd)d*d+Zejd,d-dddd.Z ejd/d-dddd.Z!ejd0d-dddd.Z"ejd1d-dddd.Z#ejd2d-dddd.Z$ejd3d-dddd.Z%ejd4d-dddd.Z&ejd5d-dddd.Z'ejd6d-dddd.Z(ejd7d-dddd.Z)ejd8d-dddd.Z*ejd9d-dddd.Z+ejd:d-dddd.Z,ejd;d-dddd.Z-ejd<d-dddd.Z.ejd=d-dddd.Z/ejd>d-dddd.Z0ejd?d-dddd.Z1ejd@d-ddddAdBZ2ej3e4dej5dddCZ6ejdDdEdddZ7ejdFd-dddd.Z8ej3e9dGej5ddHZ:ej3e;dIej5ddHZ<ej=e>dJdddKZ?ej3e@ddej5ddLZAej3eBejCddddMZDej=dNdOdPddQZEej=dNdddRZFej3eGejCddddMZHej=eIeIjJjKdSddQZLej=dTdddUdVZMej=dWdXdYddQZNej=dZd[d\ddQZOej=ePePjQjKd]dd^d_ZRej=ePePjSjKd`ddad_ZSejdbdcdddd.ZTedddZUejddd-dddd.ZVejded-dddd.ZWejdfd-dddd.ZXejdgd-dddd.ZYejdhd-dddd.ZZejdiddddd.Z[ejdjdEdddkdlZ\ejdmddddnZ]edodddZ^ej_dpdddd%Z`ejadddddqdrZbdsdt Zcdudv Zddwdx Zedydz Zfd{d| Zg fd}d~ZhG dd dZi  ZjS )rd   z)Model representing a single member entry.z
Given Namer\   r^   zAlternative given nameu   Name with ä,ü,ö... or ` usw.TN)r   r2   r6   r:   r%   z	Last NamezAlternative last namer   )r   r%   r:   r6   zExternal organisation)r   r6   r%   z#Shown label instead of external URL )r   r6   r%   r2   Z
Biographiei'  r   r%   r6   z	Job Emailz,For example: forename.lastname@tu-dresden.de)r:   r%   r6   r2   r_   zCActive Member? If it is deactivated the Member will pass to Alumni.r9   Fr=   zqOnly TRUE if this member was and is not at chair; Used for references from different classes i.e. Patent inventorzShow on webpage?z6Independent of "active", "visitor" or "extern related")r:   rc   r2   z,Set meta tags for Google, Twitter, Facebook?zActivate/Deactivate meta tagsZBirthdayrb   z
Entry Datez	Exit Datezuploads/members/img/zPhoto (ratio: 4:3)z$Please use height-width-ratio of 4:3)r$   r6   r%   rc   r2   z	FIS (TUD)r{   ra   ZLinkedinZXingZORCIDZResearchgateZpublonszResearch.comzGoogle ScholarZScopuszAd scientific indexzWeb of science (by Clarivate)ZGeprisZGithubZTwitterZ	WikipediaZBlueskyZ	InstagramzPrivate URLzJob URLzURL of profile of job website)r   r:   r6   r%   r2   )r:   re   r%   r6   zAdditional Infoi  Z	Education   )r:   re   r%      Zmember_room)rh   r:   r%   )r6   r:   re   r%   )re   r:   r6   r%   ry   ZGroup_group_leaderZmember_group_leaderrg   rh   r%   )r:   r%   Zmember_newsresearch.PublicationZmember_publication)r:   r%   rh   research.Projectzresearch.Project_project_memberZmember_projectrf   z-research.ResearchEquipment_responsible_personZmember_research_eqZmember_presentation_presentorZ	Presenter)rg   rh   r%   rc   Zmember_presentation_authorZAuthorzPSP ID (SAP)r,   zStreet namezStreet numberZCityZ
Postalcoder   zMatriculation numberzFurther informationz3Here you can add an additional adress, for example.r   r%   r6   r2   zPrivate Emailr   zMobile NumberzThesis defensez6URL where member is shown(if empty:givenName_lastName)r   r6   r%   r.   r2   c                 C   s<   | j dk	r&| j j d| j d| j S | j d| j S dS ))String for representing the Model object.Nr   )r   r   r   r   r?   r   r   r   r   %  s    
zMember.namec                 C   s   | j  d| j S r   r   r   r   r?   r   r   r   name_without_title,  s    zMember.name_without_titlec                 C   s   | j  d| j S r   r   r?   r   r   r   r@   0  s    zMember.__str__c                 C   s   t dt| jgdS )rH   member-detailargsr   r   r   r?   r   r   r   get_absolute_url_24  s    zMember.get_absolute_url_2c                 C   s   t dd| jidS )rH   r   r   kwargsr   r   r?   r   r   r   rI   9  s    zMember.get_absolute_urlc                    s$   | j st| j| j| _ t j||S r   )r   r   r   r   supersaver   r   r   	__class__r   r   r   >  s    zMember.savec                   @   s   e Zd ZdgZdS )zMember.Metaz-activeNrL   r   r   r   r   rN   C  s   rN   )kr   r    r!   r"   r   rP   r   Zgiven_name_altr   Zlast_name_altZsort_statusZorganisation_externZurl_label_externrl   Zbio
EmailFieldZjob_mailr   Z	job_phonerS   activeZvisitorZextern_relatedshow_publicZ	meta_tagsrU   Z	birth_dayZ
entry_dateZ	exit_date
ImageFieldr~   r   Ztud_fisZlinkedinZxingZorcidZresearchgateZresearcher_idresearchZgooglescholarZscopusZadscientificindexZweb_of_scienceZgeprisZgithubZtwitterwikiZblueskyZ	instagramZurl_privateZ
url_externrr   r
   rs   Z
prenominalZadditional_infoZ	educationr   statusr	   Zstatus_externrv   r   ru   r   countryr   SET_NULLr   ZgroupLeadingr|   r   Zgenderr   rt   rg   newspublicationZproject_listrw   r   Z	presenterZ	presentorauthorZpsp_idZ
priv_phoneZpriv_streetZpriv_streetNumberZ	priv_cityZpriv_postalcodeZpriv_countryZpriv_matriculationnumberZprivate_infoZprivate_mailZprivate_mobileDateTimeFieldZthesis_defense	SlugFieldr   r   r   r@   r   rI   r   rN   __classcell__r   r   r   r   rd      s         rd   c                 C   sP   t | }t|dkr |dd }tjj|d}| }|rL|t| j }|S )N7   r   r\   r   )	r   lenry   r   r   r   r   r   r   )r   r   r   r   r   r   r   create_slug_groupF  s    r   c                       s<  e Zd ZejddddZejdddZeje	ddd	Z
d
dddgZejddedddZejdddZejdddZejdddZejddddZeje	e	jjdddZejdddddZejdddddZejd d!d"ddZejd#d$d%ddZejd&dddd'd(Zd)d* Zd+d, Zd-d. ZG d/d0 d0Z fd1d2Z   Z!S )3ry   r]   r{   Tr-   r;   r9   group_leaderN)rh   r:   )
experimentr   )theoryr   )Zexperiment_and_theoryzexperiment and theory)facilityr   r\   r   z
Group type)r   r:   choicesr2   r6   zActive Group?z-Related Group that is not based at the chair?zuploads/group_image/r'      r   group_memberr   r   zresearch.Publication_groupZgroup_publicationr   zresearch.Project_groupZgroup_projectzresearch.Thesiszresearch.Thesis_groupZgroup_thesiszresearch.Patentzresearch.Patent_groupZgroup_patent<   z+URL where group is shown(if empty:name[60])r   c                 C   s   | j S r   r>   r?   r   r   r   r@   b  s    zGroup.__str__c                 C   s   t dt| jgdS )Ngroup-detailr   r   r?   r   r   r   r   e  s    zGroup.get_absolute_url_2c                 C   s   t dd| jidS )Nr   r   r   r   r?   r   r   r   rI   h  s    zGroup.get_absolute_urlc                   @   s   e Zd ZdgZdZdZdS )z
Group.Metar   zGroup/Research linezGroups/Research linesN)r   r    r!   rM   rc   verbose_name_pluralr   r   r   r   rN   l  s   rN   c                    s    | j st| j| _ t j||S r   )r   r   r   r   r   r   r   r   r   r   q  s    z
Group.save)"r   r    r!   r   rl   r   rS   r   rv   rd   r   type_choicesrP   Z
group_typer   Zinternal_groupr(   r~   r   r|   rg   r   r   projectZthesispatentr   r   r@   r   rI   rN   r   r   r   r   r   r   ry   P  s(   ry   c                   @   s   e Zd ZejddejdZejdddddZej	dddZ
ejd	dd
ZejdddZejd	dd
ZejdddZejd	dd
ZejdddZejdddddZejdddZdd ZG dd dZdS )Shared_document_further_filesShared_documentNrz   r{   Tra   :  r   r%   uploads/shared_documents/r'   Downloadabler=   ,  Enter source URL here.r   zIndex for order of sections)r6   c                 C   s
   t | jS r   )r   r   r?   r   r   r   r@     s    z%Shared_document_further_files.__str__c                   @   s   e Zd ZdgZdZdS )z"Shared_document_further_files.Metaorder_indexzFurther filesN)r   r    r!   rM   rc   r   r   r   r   rN     s   rN   )r   r    r!   r   rr   r}   Zshared_documentrP   Z	sub_titlerl   rm   r(   r)   rS   pdf_file_to_downloadeditable_fileeditable_file_to_downloadzip_filezip_file_to_downloadr   r   rQ   r   r@   rN   r   r   r   r   r   x  s   r   c                   @   s   e Zd ZejdddZejdddZejdddd	Zejddd
Z	ej
dddZejddd
Zej
dddZejddd
Zej
dddZejdddddZdd Zdd ZG dd dZdS )r   r]   r{   r^   r   Tr   r   zThe storage requirements should not be to large. You can convert the Videos with https://handbrake.fr/ . The resolution should not be less than 1920x1080 pixels. 30 FPS should be enough.)r$   r%   r2   r'   r   r=   r   r   r   c                 C   s   | j S r   r>   r?   r   r   r   r@     s    zShared_document.__str__c                 C   s   t dt| jgdS )Nzshared_document-detailr   r   r?   r   r   r   rI     s    z Shared_document.get_absolute_urlc                   @   s   e Zd ZdZdZdgZdS )zShared_document.MetazShared documentzShared documentsr   N)r   r    r!   rc   r   rM   r   r   r   r   rN     s   rN   N)r   r    r!   r   rl   r   rm   r(   Z
video_filer)   rS   r   r   r   r   r   r   r   r@   rI   rN   r   r   r   r   r     s   r   ))	django.dbr   django.urlsr   home.modelsr   r   r   r   r   r	   r
   Zphonenumber_field.modelfieldsr   Zexternal.modelsr   r   django.template.defaultfiltersr   django.confr   django.core.files.storager   r   rV   r   Modelr#   r*   rY   rZ   r[   rx   r   r   r   rd   r   ry   r   r   r   r   r   r   <module>   s2   $ 

 
(