U
    YHgV                     @   sb   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
Z
e	 Ze ZG dd dZdS )	    )sample)
app_logger)UserAttributes)ExperimentService)UserAttributeServiceNc                   @   s   e Zd Zdd Zdd ZdS )GroupAssignmentc                 C   s   g }i }t j }|D ]}|j}|||< q|D ]~}z>|j}|| }t|j}	|	d}
t	||
rn|
| W q. tk
r } ztd| d|  W 5 d }~X Y q.X q.q.|S )N	conditionzJGroup Assignment: Exception occurred while fetching attribute for user_id z. Error message: )r   queryget_all_user_attributesuser_idjsonloadsvaluegetuser_attribute_serviceZ*is_user_attribute_fulfilling_the_conditionappend	Exceptionr   error)selfexperiences_without_groupuser_attribute_conditioneligible_experiencesZuser_attribute_dictuser_attributesuser_attributer   
experienceZcondition_valueZconditions_listr    r   N/var/www/dostadmin/dostadmin/experiment_categories_handler/group_assignment.py5get_eligible_experience_for_user_attribute_conditions   s.    


 zEGroupAssignment.get_eligible_experience_for_user_attribute_conditionsc                    s   g }t |}t|D ]\}}t|jd }t|| }t||  fdd|D }	|	} D ]}
||
|j|jd qZ|t |d kr|	r|	D ]}
||
|j|jd qq|S )Nd   c                    s   g | ]}| kr|qS r   r   ).0expZassigned_experiencesr   r   
<listcomp>5   s     zZGroupAssignment.get_eligible_experience_for_user_percentage_conditions.<locals>.<listcomp>)r   experiment_id
group_name   )len	enumerateintr   r   r   r#   experiment_group_name)r   experiencesZuser_percentage_conditionsr   Znum_experiencesindexr   
percentageZnum_assignedZremaining_experiencesr   r   r!   r   6get_eligible_experience_for_user_percentage_conditions,   s4    

zFGroupAssignment.get_eligible_experience_for_user_percentage_conditionsN)__name__
__module____qualname__r   r-   r   r   r   r   r      s   r   )randomr   	dostadminr   Z"dostadmin.db_model.user_attributesr   0dostadmin.services.experiment.experiment_servicer   Z9dostadmin.services.user_attributes.user_attribute_servicer   r   r   experiment_servicer   r   r   r   r   <module>   s   