U
    ¿d	                     @   sX   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	 Z	d
S )    )BaseCommand)CommandError)Campaign)_identify_super_users)CAMPAIGN_TASK_TYPESc                   @   s    e Zd ZdZdd Zdd ZdS )CommandzValidates campaign data batchesc                 C   sJ   |j dtdd dt }|j dtd|d |j dtdd	d
 d S )Ncampaign_namez1Name of the campaign you want to process data for)typehelpz, campaign_typezCampaign type: {0}z--max-countz1Defines maximum number of batches to be processed)r	   defaultr
   )add_argumentstrjoinr   keysformatint)selfparserZ_valid_task_types r   _/var/www/rival/public_html/translation-eval/Campaign/management/commands/ProcessCampaignData.pyadd_arguments   s"    zCommand.add_argumentsc           	   
   O   s   zt |d }W n* tk
r< } zt|W 5 d }~X Y nX t }| jd|d  | }|d }|d }t	|||| d S )Nr   zIdentified superuser: {0}r   r   	max_count)
r   get_campaign_or_raiseLookupErrorr   r   stdoutwriter   first_process_campaign_data)	r   argsoptionscampaignerror
superusers
batch_userr   r   r   r   r   handle!   s    zCommand.handleN)__name__
__module____qualname__r
   r   r&   r   r   r   r   r   
   s   r   c                 C   s   |t  krtd|| jjddD ]l}t |}zDz|
| ||| W n* tk
rv } zt|W 5 d}~X Y nX W 5 d|_|  |	  X q(td |   | 	  dS )zProcess campaign data.zBad campaign type {0}T)	dataValidNzCampaign activated)r   r   r   r   batchesfilterget	dataReadyactivatesaveimport_from_json	Exceptionprint)r"   r%   r   r   
batch_dataZtask_clser   r   r   r   4   s    
r   N)
django.core.management.baser   r   Campaign.modelsr   Campaign.utilsr   r   r   r   r   r   r   r   <module>   s   *