class GetVariableDetail(TestCase): def setUp(self): self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******') self.token = Token.objects.get(user=self.user.id) self.client = APIClient() self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key) self.dataset = Dataset(name='test_set', owner=self.user) self.dataset.save() self.variable = Variable(name='variable', dataset=self.dataset, datatype='string', values=['one', 'two', 'three']) self.variable.save() self.url = reverse('api:variable_by_dataset_detail', kwargs={'dataset_pk': self.dataset.id, 'pk':self.variable.id}) def test_get_variable_detail(self): response = self.client.get(self.url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['name'], self.variable.name) self.assertEqual(response.data['dataset'], self.variable.dataset.id) self.assertEqual(response.data['datatype'], self.variable.datatype) self.assertEqual(response.data['values'], self.variable.values) def test_modify_variable(self): data = {'name': 'changed_name', 'dataset':'changed_dataset', 'datatype':'float', 'subtype': 'continuous', 'values':[1, 2 , 3]} response = self.client.put(self.url, data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['name'], data['name']) self.assertEqual(response.data['dataset'], self.variable.dataset.id) self.assertEqual(response.data['datatype'], self.variable.datatype) self.assertEqual(response.data['values'], self.variable.values) self.assertEqual(response.data['subtype'], data['subtype']) def test_delete_variable(self): response = self.client.delete(self.url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
def setUp(self): self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******') self.token = Token.objects.get(user=self.user.id) self.client = APIClient() self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key) self.dataset = Dataset(name='test_set', owner=self.user) self.dataset.save() self.url = reverse('api:variable_by_dataset_list', kwargs={'dataset_pk': self.dataset.id}) self.variable1 = Variable(name='variable1', dataset=self.dataset, datatype='string', values=['one', 'two', 'three']) self.variable1.save() self.variable2 = Variable(name='variable2', dataset=self.dataset, datatype='integer', values=[1, 2, 3]) self.variable2.save()
class GetVariableList(TestCase): def setUp(self): self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******') self.token = Token.objects.get(user=self.user.id) self.client = APIClient() self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key) self.dataset = Dataset(name='test_set', owner=self.user) self.dataset.save() self.url = reverse('api:variable_by_dataset_list', kwargs={'dataset_pk': self.dataset.id}) self.variable1 = Variable(name='variable1', dataset=self.dataset, datatype='string', values=['one', 'two', 'three']) self.variable1.save() self.variable2 = Variable(name='variable2', dataset=self.dataset, datatype='integer', values=[1, 2, 3]) self.variable2.save() def test_get_variable_list(self): response = self.client.get(self.url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data.__len__(), 2)
def setUp(self): self.client = APIClient() self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******') self.url = reverse('analysis:one_sample_ttest') self.token = Token.objects.get(user=self.user.id) self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key) #create dataset and variables from test file this_dir = os.getcwd() self.dataset = Dataset(name='test_set', owner=self.user) self.dataset.save() with open(this_dir + '/analysis/tests/test_files/ttest_test_data.csv') as file_obj: file_obj = read_csv(file_obj, sep=',', header=0) for column in file_obj: (datatype, values) = return_type_and_format_values(file_obj[column]) values = values if values is not None else file_obj[column] datatype = datatype if datatype else 'undefined' subtype = return_default_subtype(datatype) v = Variable(name=column, dataset=self.dataset, datatype=datatype, subtype=subtype, values=values) v.save() self.variable_id = v.id self.mean = 46
def put(self, request, pk, format=None): dataset = self.get_object(pk) serializer = DatasetSerializer(dataset, data=request.DATA) if serializer.is_valid(): serializer.object.owner = User.objects.get(username=request.user.username) if request.FILES: file_obj = request.FILES['file'] file_obj = read_csv(file_obj, sep=',', header=0) serializer.save() Variable.objects.filter(dataset=dataset).delete() for column in file_obj: #todo: make this detect the datatype instead of saving everything as string. (datatype, values) = return_type_and_format_values(file_obj[column]) values = values if values is not None else file_obj[column] datatype = datatype if datatype else 'undefined' subtype = return_default_subtype(datatype) v = Variable(name=column, dataset=serializer.object, datatype=datatype, values=values) v.save() else: serializer.save() return Response(serializer.data, status=status.HTTP_200_OK) else: return Response(status=status.HTTP_400_BAD_REQUEST)
def post(self, request, format=None): serializer = DatasetSerializer(data=request.DATA) if serializer.is_valid(): serializer.object.owner = User.objects.get(username=request.user.username) if request.FILES: file_obj = request.FILES['file'] file_obj = read_csv(file_obj, sep=',', header=0) serializer.save() for column in file_obj: (datatype, values) = return_type_and_format_values(file_obj[column]) values = values if values is not None else file_obj[column] datatype = datatype if datatype else 'undefined' subtype = return_default_subtype(datatype) v = Variable(name=column, dataset=serializer.object, datatype=datatype, subtype=subtype, values=values) v.save() else: serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response(status=status.HTTP_400_BAD_REQUEST)
def handle(self, *args, **options): try: with open(options['estadobase']) as f: data = json.load(f) except Exception as inst: # print("[INFO] No se pudieron cargar las redes: {}".format(str(inst))) raise (Exception( "[INFO] No se pudo cargar el estado base: {}".format( str(inst)))) # USERS for user in data["users"]: try: u = User(username=user['username'], password=user["password"]) u.save() except Exception as inst: print(str(inst)) # GROUPS for group in data["groups"]: try: g = Group(name=group) g.save() except Exception as inst: print(str(inst)) # VARIABLE for var in data["variables"]: try: v = Variable(nombre=var["nombre"], descripcion=var["descripcion"]) v.save() except Exception as inst: print(str(inst)) # UNIDAD for uni in data["unidades"]: try: u = Unidad(abreviacion=uni["abreviacion"], nombre=uni["nombre"]) u.save() except Exception as inst: print(str(inst)) # PROYECTOS for proj in data["proyectos"]: try: user = User.objects.get(username=proj["propietario"]) group = Group.objects.get(name=proj["grupo"]) p = Proyecto(propietario=user, grupo=group, nombre=proj["nombre"]) p.save() except Exception as inst: print(str(inst)) # SENSORES for sen in data["sensores"]: try: proj = Proyecto.objects.get(nombre=sen["proyecto"]) var = Variable.objects.get(nombre=sen["variable"]) unit = Unidad.objects.get(abreviacion=sen["unidad"]) s = Sensor(nombre=sen["nombre"], descripcion=sen["descripcion"], uuid=sen["uuid"], variable=var, unidad=unit, proyecto=proj) s.save() except Exception as e: print(str(e)) # LECTURAS for s in Sensor.objects.all(): try: lec = Lectura(sensor=s, medido=datetime.now(), valor=random.random()) lec.save() except Exception as inst: print(str(inst))