U
    ¿d)                     @   s   d 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	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mZ ddlmZ ddlmZ ddlmZ dZdZG dd deZdd ZdS )z>
Appraise evaluation framework

See LICENSE for usage details
    )datetime)path)User)BaseCommand)CommandError)Count)Q)OperationalError)ProgrammingError)Market)Metadata)MultiModalAssessmentResult)MultiModalAssessmentTask)TASK_DEFINITIONS)TextPairWithImagezINFO: zWARN: c                   @   s    e Zd ZdZdd Zdd ZdS )Commandz2Updates object instances required for EvalData appc                 C   s   d S N )selfparserr   r   `/var/www/rival/public_html/translation-eval/EvalData/management/commands/UpdateEvalDataModels.pyadd_arguments!   s    zCommand.add_argumentsc                 O   s   t | j d S r   )_update_eval_data_modelsstdout)r   argsoptionsr   r   r   handle$   s    zCommand.handleN)__name__
__module____qualname__helpr   r   r   r   r   r   r      s   r   c           *      C   s`  d tt}| | | d d}dd |D dd |D  }tjjdd}| sld	}| | d S |D ]\}}zz|t	jj||dd}| st	||d|d d}|
  |}n|d }tjj|d}	|	 st|ddd|d d}
|

  W n& ttfk
r   d ||}Y nX W 5 d
 ||}X | | qptD ]\}}}}}}}|j}|j}|j}td ||| t }|jjdd}|jddd t }td|d||  |jtd dtd dB }td|d|  d}d}g }g }g }t }|jddd d!}|jt|d"}|D ]V}|d# d$|d!  krb|d rz||d  |d%7 }n|d  r&||d  q&|jj|d&}|jddd |jj|d&} | jddd t }td|d||  |d' dddi}!|jjf |!}"|"jdd( t }#td|d|#|  |jjdd)}$|$jdd( t }%td*|d|%|#  q@d}&d+d |&D }'|'D ]\}}zzt	jj||d,d}| st	||d,|d d}|
  |}n|d }tjj|d}	|	 st|d-dd|d d}
|

  W n& ttfk
r   d ||}Y nX W 5 d
 ||}X | | qbd}(d.d |(D })|)D ]\}}zzt	jj||d/d}| st	||d/|d d}|
  |}n|d }tjj|d}	|	 st|d0dd|d d}
|

  W n& ttfk
r   d ||}Y nX W 5 d
 ||}X | | qJt }tjddd d!}|jtd1d"}|D ]V}|d# d$|d!  kr|d r||d  |d%7 }n|d  rJ||d  qJtjj|d&}|jddd tjj|d&} | jddd t }td2||  tjjddd3}"|"jdd( t }#td4|#|  tjjdd)}$|$jdd( t }%td5|%|#  | d6 d S )7Nz
[{0}]

z	
[INIT]

r   c                 S   s   g | ]}|d fqS engr   .0xr   r   r   
<listcomp>/   s     z,_update_eval_data_models.<locals>.<listcomp>c                 S   s   g | ]}d |fqS r!   r   r#   r   r   r   r&   /   s    T)is_superuserzFailure to identify superuserz)Success processing source={0}, target={1}ZNewsTask)sourceLanguageCodetargetLanguageCode
domainNamer   )r(   r)   r*   	createdBy)marketZNewsTest2017z1.0official)r,   
corpusNameversionInfosourcer+   z)Failure processing source={0}, target={1}zProcessing {}/{}/{}F)	completed)	activatedr1   z  Processed	instances)item)taskz  Identified badidr2   r1   requiredAnnotations)resultsr8   d      )id__inZ__campaign__activated)r2   )Zcampaign__activatedz  Processed relatedc                 S   s   g | ]}d |fqS r!   r   r#   r   r   r   r&      s     ZMetricsTaskZMetricsTest2017c                 S   s   g | ]}d |fqS r!   r   r#   r   r   r   r&      s     ZMultiModalTaskZMultiModalTest2017$evaldata_multimodalassessmentresultsz,Processed MultiModalAssessmentTask instances)Z7evaldata_multimodalassessmenttasks__campaign__activatedr2   z%Processed TextPairWithImage instancesz4Processed related MultiModalAssessmentTask instancesz	
[DONE]

)formatr   basename__file__writer   objectsfilterexistsr   saver   r	   r
   r   r   printr   nowupdater   countvaluesannotater   appendr   r   )*r   _msgZnews_task_languagesZnews_task_pairs
superusersr0   targetr,   Z
new_marketmetadataZnew_metadata_task_clsZ
result_clsZitem_clsZevaldata_task_strZevaldata_result_strZ	task_nameZresult_name	item_namet1r8   t2Zbad_resultsZactivated_itemscompleted_tasksZtasks_to_completeZtasks_to_activateZitems_to_activate	task_datar5   ZttcZttafiltersZ	item_datat3task_idsZt4Zmetrics_task_languagesZmetrics_task_pairsZmultimodal_task_languagesZmultimodal_task_pairsr   r   r   r   (   s   


   


  



   


 r   N)__doc__r   osr   django.contrib.auth.modelsr   django.core.management.baser   r   django.db.modelsr   r   django.db.utilsr	   r
   EvalData.modelsr   r   r   r   r   r   ZINFO_MSGZWARNING_MSGr   r   r   r   r   r   <module>   s&   
