class WorkflowImportSerializer(WorkflowExportSerializer): """ This serializer simply overwrites the actions field to make it writeable. The rest of the functionality is identical to the WorkflowExportSerializer """ actions = ActionSerializer(many=True, required=False)
class RuleSerializerDeep(serializers.ModelSerializer): condition=ConditionSerializer(required=True) actions=ActionSerializer(required=True, many=True) class Meta: model = Rule fields = ('id', 'description', 'ruleset', 'order', 'condition', 'actions', 'status')
def get_log(request): jwt_token = request.data.get('token') try: jogador = make_jogador(jwt_token) except: return Response({'error': 'Usuário não identificado'}, status=HTTP_403_FORBIDDEN) if (not jogador.sala_id): return Response({'error': 'Jogador não está dentro de uma sala'}, status=HTTP_403_FORBIDDEN) sala = Sala.objects.get(id=jogador.sala_id) actions = reversed(Action.objects.filter(room=sala).order_by('time')) serializer = ActionSerializer(actions, many=True) return Response(data=serializer.data, status=HTTP_200_OK)
def create(self, request, *args, **kwargs): video = request.data['file'] series_id = request.META.get('HTTP_SID') series = get_object_or_404(ActionSeries, id=series_id) folder_name = '{}_{}'.format(series.id, series.name) folder_path = path.join(MEDIA_ROOT, folder_name) if not path.isdir(folder_path): os.mkdir(folder_path) file_path = path.join(folder_path, video.name) file_url = '{}/{}'.format(folder_name, video.name) handle_uploaded_file(file_path, video) return Response(ActionSerializer(Action.objects.create(series=series, video=file_url)).data, 201)
def get_filtered_actions(self, workflow): # Get the subset of actions specified in the context action_list = self.context.get('selected_actions', []) if not action_list: # No action needs to be included, no need to call the action # serializer return [] # Execute the query set query_set = workflow.actions.filter(id__in=action_list) # Serialize the content and return data serializer = ActionSerializer(instance=query_set, many=True, required=False) return serializer.data
def create(self, validated_data, **kwargs): # Initial values workflow_obj = None try: workflow_obj = Workflow( user=self.context['user'], name=self.context['name'], description_text=validated_data['description_text'], nrows=0, ncols=0, attributes=validated_data['attributes'], query_builder_ops=validated_data.get('query_builder_ops', {})) workflow_obj.save() # Create the columns column_data = ColumnSerializer(data=validated_data.get( 'columns', []), many=True, context={'workflow': workflow_obj}) # And save its content if column_data.is_valid(): column_data.save() else: raise Exception('Unable to save column information') # If there is any column with position = 0, recompute (this is to # guarantee backward compatibility. if workflow_obj.columns.filter(position=0).exists(): for idx, c in enumerate(workflow_obj.columns.all()): c.position = idx + 1 c.save() # Load the data frame data_frame = validated_data.get('data_frame', None) if data_frame is not None: ops.store_dataframe_in_db(data_frame, workflow_obj.id) # Reconcile now the information in workflow and columns with the # one loaded workflow_obj.data_frame_table_name = \ pandas_db.create_table_name(workflow_obj.pk) workflow_obj.ncols = validated_data['ncols'] workflow_obj.nrows = validated_data['nrows'] workflow_obj.save() # Create the actions pointing to the workflow action_data = ActionSerializer(data=validated_data.get( 'actions', []), many=True, context={'workflow': workflow_obj}) if action_data.is_valid(): action_data.save() else: raise Exception('Unable to save column information') # Create the views pointing to the workflow view_data = ViewSerializer(data=validated_data.get('views', []), many=True, context={'workflow': workflow_obj}) if view_data.is_valid(): view_data.save() else: raise Exception('Unable to save column information') except Exception: # Get rid of the objects created if workflow_obj: if workflow_obj.has_data_frame(): pandas_db.delete_table(workflow_obj.id) if workflow_obj.id: workflow_obj.delete() raise return workflow_obj
def create(self, validated_data, **kwargs): workflow_obj = Workflow( user=self.context['user'], name=self.context['name'], description_text=validated_data['description_text'], nrows=0, ncols=0, attributes=validated_data['attributes'], query_builder_ops=validated_data.get('query_builder_ops', {}) ) workflow_obj.save() # Create the columns column_data = ColumnSerializer( data=validated_data.get('columns', []), many=True, context={'workflow': workflow_obj}) # And save its content if column_data.is_valid(): column_data.save() else: workflow_obj.delete() return None # Create the actions pointing to the workflow action_data = ActionSerializer( data=validated_data.get('actions', []), many=True, context={'workflow': workflow_obj} ) if action_data.is_valid(): action_data.save() else: workflow_obj.delete() return None # Create the views pointing to the workflow view_data = ViewSerializer( data=validated_data.get('views', []), many=True, context={'workflow': workflow_obj} ) if view_data.is_valid(): view_data.save() else: workflow_obj.delete() return None # Load the data frame data_frame = validated_data.get('data_frame', None) if data_frame is not None: ops.store_dataframe_in_db(data_frame, workflow_obj.id) # Reconcile now the information in workflow and columns with the # one loaded workflow_obj.data_frame_table_name = \ pandas_db.create_table_name(workflow_obj.pk) workflow_obj.ncols = validated_data['ncols'] workflow_obj.nrows = validated_data['nrows'] workflow_obj.save() return workflow_obj
def create(self, validated_data, **kwargs): """Create the new workflow.""" wflow_name = self.context.get('name') if not wflow_name: wflow_name = self.validated_data.get('name') if not wflow_name: raise Exception(_('Unexpected empty workflow name.')) if Workflow.objects.filter(name=wflow_name, user=self.context['user']).exists(): raise Exception( _('There is a workflow with this name. ' + 'Please provide a workflow name in the import page.')) # Initial values workflow_obj = None try: workflow_obj = Workflow( user=self.context['user'], name=wflow_name, description_text=validated_data['description_text'], nrows=0, ncols=0, attributes=validated_data['attributes'], query_builder_ops=validated_data.get('query_builder_ops', {}), ) workflow_obj.save() # Create the columns column_data = ColumnSerializer(data=validated_data.get( 'columns', []), many=True, context={'workflow': workflow_obj}) # And save its content if column_data.is_valid(): columns = column_data.save() else: raise Exception(_('Unable to save column information')) # If there is any column with position = 0, recompute (this is to # guarantee backward compatibility. if any(col.position == 0 for col in columns): for idx, col in enumerate(columns): col.position = idx + 1 col.save() # Load the data frame data_frame = validated_data.get('data_frame') if data_frame is not None: # Store the table in the DB store_table( data_frame, workflow_obj.get_data_frame_table_name(), dtype={ col.name: col.data_type for col in workflow_obj.columns.all() }, ) # Reconcile now the information in workflow and columns with # the one loaded workflow_obj.ncols = validated_data['ncols'] workflow_obj.nrows = validated_data['nrows'] workflow_obj.save() # Create the actions pointing to the workflow action_data = ActionSerializer(data=validated_data.get( 'actions', []), many=True, context={ 'workflow': workflow_obj, 'columns': columns }) if action_data.is_valid(): action_data.save() else: raise Exception(_('Unable to save column information')) # Create the views pointing to the workflow view_data = ViewSerializer(data=validated_data.get('views', []), many=True, context={ 'workflow': workflow_obj, 'columns': columns }) if view_data.is_valid(): view_data.save() else: raise Exception(_('Unable to save column information')) except Exception: # Get rid of the objects created if workflow_obj: if workflow_obj.id: workflow_obj.delete() raise return workflow_obj