def update(self, *args, **kwargs): status = self.validated_data.get('status', self.instance.status) num_rows = self.validated_data.get('num_rows', 0) if self.instance.status != status and status == 2: if self.instance.templates.all()[0].template_items.count() == 0: raise ValidationError('At least one template item is required') if self.instance.batch_files.count() == 0: task_data = { "project": self.instance.id, "status": 1, "data": {} } task_serializer = TaskSerializer(data=task_data) if task_serializer.is_valid(): task_serializer.create() else: raise ValidationError(task_serializer.errors) else: batch_file = self.instance.batch_files.first() data = batch_file.parse_csv() count = 0 for row in data: if count == num_rows: break task = {'project': self.instance.id, 'data': row} task_serializer = TaskSerializer(data=task) if task_serializer.is_valid(): task_serializer.create(**kwargs) count += 1 else: raise ValidationError(task_serializer.errors) self.instance.published_time = datetime.now() status += 1 self.instance.name = self.validated_data.get('name', self.instance.name) self.instance.price = self.validated_data.get('price', self.instance.price) self.instance.repetition = self.validated_data.get( 'repetition', self.instance.repetition) if status != self.instance.status \ and status in (models.Project.STATUS_PAUSED, models.Project.STATUS_IN_PROGRESS) and \ self.instance.status in (models.Project.STATUS_PAUSED, models.Project.STATUS_IN_PROGRESS): mturk_update_status.delay({ 'id': self.instance.id, 'status': status }) self.instance.status = status self.instance.save() return self.instance
def update(self, *args, **kwargs): status = self.validated_data.get('status', self.instance.status) num_rows = self.validated_data.get('num_rows', 0) if self.instance.status != status and status == 2: if self.instance.templates.all()[0].template_items.count() == 0: raise ValidationError('At least one template item is required') if self.instance.batch_files.count() == 0: task_data = { "project": self.instance.id, "status": 1, "data": {} } task_serializer = TaskSerializer(data=task_data) if task_serializer.is_valid(): task_serializer.create() else: raise ValidationError(task_serializer.errors) else: batch_file = self.instance.batch_files.first() data = batch_file.parse_csv() count = 0 for row in data: if count == num_rows: break task = { 'project': self.instance.id, 'data': row } task_serializer = TaskSerializer(data=task) if task_serializer.is_valid(): task_serializer.create(**kwargs) count += 1 else: raise ValidationError(task_serializer.errors) self.instance.published_time = datetime.now() status += 1 self.instance.name = self.validated_data.get('name', self.instance.name) self.instance.price = self.validated_data.get('price', self.instance.price) self.instance.repetition = self.validated_data.get('repetition', self.instance.repetition) if status != self.instance.status \ and status in (models.Project.STATUS_PAUSED, models.Project.STATUS_IN_PROGRESS) and \ self.instance.status in (models.Project.STATUS_PAUSED, models.Project.STATUS_IN_PROGRESS): mturk_update_status.delay({'id': self.instance.id, 'status': status}) self.instance.status = status self.instance.save() return self.instance
def create(self, **kwargs): templates = self.validated_data.pop('template') project = self.validated_data.pop('project') file_id = self.validated_data.pop('file_id') csv_data = [] if file_id is not None: uploaded_file = models.RequesterInputFile.objects.get(id=file_id) csv_data = uploaded_file.parse_csv() uploaded_file.delete() # module_tasks = self.validated_data.pop('module_tasks') module = models.Module.objects.create(deleted=False, project=project, owner=kwargs['owner'].requester, **self.validated_data) ''' experiment pool, default 6 ignored ''' experimental_models.ModulePool.objects.create(module=module, pool=6) for template in templates: template_items = template.pop('template_items') t = models.Template.objects.get_or_create(owner=kwargs['owner'], **template) models.ModuleTemplate.objects.get_or_create(module=module, template=t[0]) for item in template_items: models.TemplateItem.objects.get_or_create(template=t[0], **item) if module.has_data_set: for row in csv_data: task = { 'module': module.id, 'data': json.dumps(row) } task_serializer = TaskSerializer(data=task) if task_serializer.is_valid(): task_serializer.create(**kwargs) else: raise ValidationError(task_serializer.errors) else: task = { 'module': module.id, 'data': "{\"type\": \"static\"}" } task_serializer = TaskSerializer(data=task) if task_serializer.is_valid(): task_serializer.create(**kwargs) else: raise ValidationError(task_serializer.errors) return module
def create(self, **kwargs): templates = self.validated_data.pop('template') project = self.validated_data.pop('project') file_id = self.validated_data.pop('file_id') csv_data = [] if file_id is not None: uploaded_file = models.RequesterInputFile.objects.get(id=file_id) csv_data = uploaded_file.parse_csv() uploaded_file.delete() # module_tasks = self.validated_data.pop('module_tasks') module = models.Module.objects.create(deleted=False, project=project, owner=kwargs['owner'].requester, **self.validated_data) ''' experiment pool, default 6 ignored ''' experimental_models.ModulePool.objects.create(module=module, pool=6) for template in templates: template_items = template.pop('template_items') t = models.Template.objects.get_or_create(owner=kwargs['owner'], **template) models.ModuleTemplate.objects.get_or_create(module=module, template=t[0]) for item in template_items: models.TemplateItem.objects.get_or_create(template=t[0], **item) if module.has_data_set: for row in csv_data: task = {'module': module.id, 'data': json.dumps(row)} task_serializer = TaskSerializer(data=task) if task_serializer.is_valid(): task_serializer.create(**kwargs) else: raise ValidationError(task_serializer.errors) else: task = {'module': module.id, 'data': "{\"type\": \"static\"}"} task_serializer = TaskSerializer(data=task) if task_serializer.is_valid(): task_serializer.create(**kwargs) else: raise ValidationError(task_serializer.errors) return module
def create_task(project_id): task_data = {"project": project_id, "data": {}} task_serializer = TaskSerializer(data=task_data) if task_serializer.is_valid(): task_serializer.create() else: raise ValidationError(task_serializer.errors)
def create_task(project_id): task_data = { "project": project_id, "data": {} } task_serializer = TaskSerializer(data=task_data) if task_serializer.is_valid(): task_serializer.create() else: raise ValidationError(task_serializer.errors)
def update(self, *args, **kwargs): status = self.validated_data.get("status", self.instance.status) num_rows = self.validated_data.get("num_rows", 0) if self.instance.status != status and status == 2: if self.instance.templates.all()[0].template_items.count() == 0: raise ValidationError("At least one template item is required") if self.instance.batch_files.count() == 0: task_data = {"project": self.instance.id, "status": 1, "data": {}} task_serializer = TaskSerializer(data=task_data) if task_serializer.is_valid(): task_serializer.create() else: raise ValidationError(task_serializer.errors) else: batch_file = self.instance.batch_files.first() data = batch_file.parse_csv() count = 0 for row in data: if count == num_rows: break task = {"project": self.instance.id, "data": row} task_serializer = TaskSerializer(data=task) if task_serializer.is_valid(): task_serializer.create(**kwargs) count += 1 else: raise ValidationError(task_serializer.errors) self.instance.published_time = datetime.now() status += 1 self.instance.name = self.validated_data.get("name", self.instance.name) self.instance.price = self.validated_data.get("price", self.instance.price) self.instance.repetition = self.validated_data.get("repetition", self.instance.repetition) self.instance.status = status self.instance.save() return self.instance