U
    sc_                     @   s8   d dl mZ d dlmZ d dlmZ dd Zdd ZdS )	    )serializers"QUESTION_FORMAT_SERIALIZER_CHOICES)dic_validetorc           
   
   C   s  t | tk	rtddit| dkr4tddidtd}dtd}dtd	d
 ddt d}dtd}|g}|||g}| D ]}t	|||ddddd qg }| D ]h}|d |krtdd|d  di|
|d  d|kr|d D ]}	t |	tk	rtddiqqd S )Nuser_inputszuser_inputs should be a listr   z#At least one user_input is requiredindex)keytypeanswer_textanswer_text_formatc                 S   s   | t kS )Nr   )format r   +/var/www/wikiazma_server/quiz/validators.py<lambda>       z'user_inputs_validator.<locals>.<lambda>z$answer_text_format should be one of z, )r   r	   	validatorvalidator_error_messageselected_choicesT)datarequired_itemsoptional_items	error_keymanycontainer_nameraise_error_for_unexpected_keyzDuplicate index=""z*selected_choices must be a list of strings)r	   listr   ValidationErrorlenintstrjoinr   r   append)
r   r   r
   r   r   r   r   
user_inputZuser_input_question_prioritiesZanswer_indexr   r   r   user_inputs_validator   s8    




 r$   c                 C   s   d| krd| krt ddid| kr<d| kr<t ddid| krZd| krZt ddid| krxd| krxt ddid| krd| krd| krt dd	id S )
Nentrance_tokentokenz?Only one of these fields should be given: token, entrance_tokenquiz_idquiz_sheet_idz@Only one of these fields should be given: quiz_id, quiz_sheet_idzAOnly one of these fields should be given: quiz_id, entrance_tokenzGOnly one of these fields should be given: quiz_sheet_id, entrance_tokenzKOne of these fields should be given: quiz_id, quiz_sheet_id, entrance_token)r   r   )r   r   r   r   4token_quiz_id_quiz_sheet_id_entrance_token_validator/   s    r)   N)rest_frameworkr   question.modelsr   utils.validatorsr   r$   r)   r   r   r   r   <module>   s   (