U
    ¿d	                     @   sr   d Z ddl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 G d	d
 d
eZdddZdS )z

Appraise
    N)loads)
is_zipfile)ZipFile)BaseCommand)CommandError)Campaignc                   @   s    e Zd ZdZdd Zdd ZdS )CommandzValidates campaign data batchesc                 C   s   |j dtdd d S )Ncampaign_namez1Name of the campaign you want to process data for)typehelp)add_argumentstr)selfparser r   `/var/www/rival/public_html/translation-eval/Campaign/management/commands/validatecampaigndata.pyadd_arguments   s
    zCommand.add_argumentsc              
   O   sN   zt |d }W n* tk
r< } zt|W 5 d }~X Y nX t|| j d S )Nr	   )r   get_campaign_or_raiseLookupErrorr   _validate_campaign_datastdout)r   argsoptionscampaignerrorr   r   r   handle   s
    zCommand.handleN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c                 C   s(  d}| j jddd}|D ]}|jj}|j}|d| z|drt|sb|d| W qt|}dd |	 D }|D ]4}	|
|	d	}
tjd
krt|
 qt|
d	d qntt|
 d	d d|_|  |d7 }W q tk
r } zt|W 5 d}~X Y qX q|d| dS )z Validates campaign data batches.r   F)	dataValid	dataReadyzBatch name: {}z.zipz!Batch {0} not a valid ZIP archivec                 S   s   g | ]}| d r|qS )z.json)endswith).0xr   r   r   
<listcomp>5   s    
 z+_validate_campaign_data.<locals>.<listcomp>zutf-8)   	   r   )encodingT   NzValidated {0} batches)batchesfilterdataFilenamewriteformatr!   r   r   namelistreaddecodesysversion_infor   r   r   save	Exceptionr   )r   r   Zvalidated_batchesZbatches_to_checkbatch
batch_name
batch_file	batch_zipbatch_json_filesbatch_json_file
batch_datar   r   r   r   r   $   s6    


r   )N)__doc__r2   jsonr   zipfiler   r   django.core.management.baser   r   Campaign.modelsr   r   r   r   r   r   r   <module>   s   