Skip to content

Commit

Permalink
linting
Browse files Browse the repository at this point in the history
  • Loading branch information
saramonzon authored and svarona committed Aug 23, 2023
1 parent 984f081 commit f816605
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 40 deletions.
80 changes: 57 additions & 23 deletions wetlab/api/utils/sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ def create_city(data, apps_name):

def create_new_laboratory(lab_data):
"""Create new laboratory instance with the data collected in the request"""
if core.models.City.objects.filter(city_name__exact=lab_data["geo_loc_city"]).exists():
if core.models.City.objects.filter(
city_name__exact=lab_data["geo_loc_city"]
).exists():
city_id = (
core.models.City.objects.filter(city_name__exact=lab_data["geo_loc_city"])
.last()
Expand Down Expand Up @@ -79,17 +81,17 @@ def get_sample_fields(apps_name):
"Only recorded": {"field_name": "only_recorded"},
}
if core.models.SampleType.objects.filter(apps_name__exact=apps_name).exists():
s_type_objs = core.models.SampleType.objects.filter(apps_name__exact=apps_name).order_by(
"sample_type"
)
s_type_objs = core.models.SampleType.objects.filter(
apps_name__exact=apps_name
).order_by("sample_type")
sample_fields["Type of Sample"]["options"] = []
for s_type_obj in s_type_objs:
sample_fields["Type of Sample"]["options"].append(s_type_obj.get_name())
if core.models.Species.objects.filter(apps_name__exact=apps_name).exists():
sample_fields["Species"]["options"] = []
species_objs = core.models.Species.objects.filter(apps_name__exact=apps_name).order_by(
"species_name"
)
species_objs = core.models.Species.objects.filter(
apps_name__exact=apps_name
).order_by("species_name")
for species_obj in species_objs:
sample_fields["Species"]["options"].append(species_obj.get_name())
if core.models.LabRequest.objects.all().exists():
Expand Down Expand Up @@ -123,7 +125,9 @@ def get_sample_fields(apps_name):

def get_sample_project_obj(project_name):
"""Check if sampleProyect is defined in database"""
if core.models.SampleProjects.objects.filter(sample_project_name__exact=project_name).exists():
if core.models.SampleProjects.objects.filter(
sample_project_name__exact=project_name
).exists():
return core.models.SampleProjects.objects.filter(
sample_project_name__exact=project_name
).last()
Expand All @@ -134,7 +138,9 @@ def include_instances_in_sample(data, lab_data, apps_name):
"""Collect the instances before creating the sample instance
If laboratory will be created if it is not defined
"""
if core.models.LabRequest.objects.filter(lab_name__exact=data["lab_request"]).exists():
if core.models.LabRequest.objects.filter(
lab_name__exact=data["lab_request"]
).exists():
data["lab_request"] = (
core.models.LabRequest.objects.filter(lab_name__exact=data["lab_request"])
.last()
Expand All @@ -143,9 +149,13 @@ def include_instances_in_sample(data, lab_data, apps_name):
else:
lab_data["apps_name"] = apps_name
data["lab_request"] = create_new_laboratory(lab_data).get_id()
if core.models.SampleType.objects.filter(sample_type__exact=data["sample_type"]).exists():
if core.models.SampleType.objects.filter(
sample_type__exact=data["sample_type"]
).exists():
data["sample_type"] = (
core.models.SampleType.objects.filter(sample_type__exact=data["sample_type"])
core.models.SampleType.objects.filter(
sample_type__exact=data["sample_type"]
)
.last()
.get_sample_type_id()
)
Expand All @@ -156,15 +166,19 @@ def include_instances_in_sample(data, lab_data, apps_name):
# return str("sampleType " + data["sampleType"] + " is not defined in database")
if core.models.Species.objects.filter(species_name__exact=data["species"]).exists():
data["species"] = (
core.models.Species.objects.filter(species_name__exact=data["species"]).last().get_id()
core.models.Species.objects.filter(species_name__exact=data["species"])
.last()
.get_id()
)
else:
return str("species " + data["species"] + " is not defined in database")
if data["patient_core"] == "" or data["patient_core"].lower() == "null":
data["patient_core"] = None
else:
try:
data["patient_core"] = get_patient_obj(data["patient_core"]).get_patient_id()
data["patient_core"] = get_patient_obj(
data["patient_core"]
).get_patient_id()
except AttributeError:
return str(
"patient_core " + data["patient_core"] + " is not defined in database"
Expand All @@ -190,7 +204,9 @@ def include_instances_in_sample(data, lab_data, apps_name):
data["completed_date"] = datetime.now()
else:
data["sample_state"] = (
core.models.StatesForSample.objects.filter(sample_state_name="Defined").last().get_id()
core.models.StatesForSample.objects.filter(sample_state_name="Defined")
.last()
.get_id()
)
data["completed_date"] = None
return data
Expand All @@ -207,16 +223,22 @@ def include_coding(user_name, sample):
.last()
.unique_sample_id
)
c_data["unique_sample_id"] = core.utils.samples.increase_unique_value(last_unique_value)
c_data["unique_sample_id"] = core.utils.samples.increase_unique_value(
last_unique_value
)
c_data["sample_code_id"] = str(user_name + "_" + sample)
return c_data


def get_project_fields_id_and_name(p_obj):
"""Fetch the fields defined for project"""
fields = []
if core.models.SampleProjectsFields.objects.filter(sample_projects_id=p_obj).exists():
p_field_objs = core.models.SampleProjectsFields.objects.filter(sample_projects_id=p_obj)
if core.models.SampleProjectsFields.objects.filter(
sample_projects_id=p_obj
).exists():
p_field_objs = core.models.SampleProjectsFields.objects.filter(
sample_projects_id=p_obj
)
for p_field_obj in p_field_objs:
fields.append([p_field_obj.get_field_id(), p_field_obj.get_field_name()])
return fields
Expand All @@ -225,7 +247,9 @@ def get_project_fields_id_and_name(p_obj):
def get_patient_obj(patient):
"""Get the patient instance"""
if core.models.PatientCore.objects.filter(patient_code__iexact=patient).exists():
return core.models.PatientCore.objects.filter(patient_code__iexact=patient).last()
return core.models.PatientCore.objects.filter(
patient_code__iexact=patient
).last()
return False


Expand Down Expand Up @@ -372,7 +396,9 @@ def summarize_samples(data):
sample_projects_id=s_project_obj,
sample_project_field_description__iexact=data["sample_project_field"],
).exists():
return {"ERROR": wetlab.config.ERROR_API_NO_SAMPLE_PROJECT_FIELD_DEFINED}
return {
"ERROR": wetlab.config.ERROR_API_NO_SAMPLE_PROJECT_FIELD_DEFINED
}

s_project_field_objs = core.models.SampleProjectsFields.objects.filter(
sample_projects_id=s_project_obj,
Expand All @@ -387,7 +413,9 @@ def summarize_samples(data):
regions = [data["region"]]
else:
regions = (
core.models.StateInCountry.objects.all().values_list("state_name", flat=True).distinct()
core.models.StateInCountry.objects.all()
.values_list("state_name", flat=True)
.distinct()
)
for region in regions:
summarize["region"][region] = sample_objs.filter(
Expand All @@ -400,7 +428,9 @@ def summarize_samples(data):
summarize.pop("region", None)
else:
laboratories = (
core.models.LabRequest.objects.all().values_list("lab_name", flat=True).distinct()
core.models.LabRequest.objects.all()
.values_list("lab_name", flat=True)
.distinct()
)
for laboratory in laboratories:
summarize["laboratory"][laboratory] = sample_objs.filter(
Expand Down Expand Up @@ -513,7 +543,9 @@ def collect_statistics_information(data):
stats_data[par1_val][par2_val] = value
else:
for par1_val in par1_values:
stats_data[par1_val] = core.models.SampleProjectsFieldsValue.objects.filter(
stats_data[
par1_val
] = core.models.SampleProjectsFieldsValue.objects.filter(
sample_project_field_id__sample_projects_id=s_project_obj,
sample_project_field_id__sample_project_field_name__iexact=query_params[
0
Expand All @@ -531,7 +563,9 @@ def collect_statistics_information(data):
"fields_value": {},
}

num_samples = core.models.Samples.objects.filter(sample_project=s_project_obj).count()
num_samples = core.models.Samples.objects.filter(
sample_project=s_project_obj
).count()
s_project_field_objs = core.models.SampleProjectsFields.objects.filter(
sample_project_id=s_project_obj
)
Expand Down
62 changes: 45 additions & 17 deletions wetlab/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@
from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema
from rest_framework import status
from rest_framework.authentication import (BasicAuthentication,
SessionAuthentication)
from rest_framework.decorators import (api_view, authentication_classes,
permission_classes)
from rest_framework.authentication import BasicAuthentication, SessionAuthentication
from rest_framework.decorators import (
api_view,
authentication_classes,
permission_classes,
)
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response

Expand Down Expand Up @@ -178,7 +180,9 @@ def create_sample_data(request):
data = data.dict()
if "sample_name" not in data or "sample_project" not in data:
return Response(status=status.HTTP_400_BAD_REQUEST)
if core.models.Samples.objects.filter(sample_name__iexact=data["sample_name"]).exists():
if core.models.Samples.objects.filter(
sample_name__iexact=data["sample_name"]
).exists():
error = {"ERROR": "sample already defined"}
return Response(error, status=status.HTTP_400_BAD_REQUEST)
split_data = wetlab.api.utils.sample.split_sample_data(data)
Expand All @@ -194,17 +198,23 @@ def create_sample_data(request):
split_data["s_data"]["sample_user"] = request.user.pk
# Adding coding for sample
split_data["s_data"].update(
wetlab.api.utils.sample.include_coding(request.user.username, split_data["s_data"]["sample_name"])
wetlab.api.utils.sample.include_coding(
request.user.username, split_data["s_data"]["sample_name"]
)
)
sample_serializer = wetlab.api.serializers.CreateSampleSerializer(
data=split_data["s_data"]
)
sample_serializer = wetlab.api.serializers.CreateSampleSerializer(data=split_data["s_data"])
if not sample_serializer.is_valid():
return Response(
sample_serializer.errors, status=status.HTTP_400_BAD_REQUEST
)
new_sample_id = sample_serializer.save().get_sample_id()
for d_field in split_data["p_data"]:
d_field["sample_id"] = new_sample_id
s_project_serializer = wetlab.api.serializers.CreateProjectDataSerializer(data=d_field)
s_project_serializer = wetlab.api.serializers.CreateProjectDataSerializer(
data=d_field
)
if not s_project_serializer.is_valid():
return Response(
s_project_serializer.errors, status=status.HTTP_400_BAD_REQUEST
Expand All @@ -229,13 +239,17 @@ def fetch_run_information(request):
s_data = []
for sample in s_list:
sample = sample.strip()
if wetlab.models.SamplesInProject.objects.filter(sample_name__iexact=sample).exists():
if wetlab.models.SamplesInProject.objects.filter(
sample_name__iexact=sample
).exists():
s_found_objs = wetlab.models.SamplesInProject.objects.filter(
sample_name__iexact=sample
)
for s_found_obj in s_found_objs:
s_data.append(
wetlab.api.serializers.SampleRunInfoSerializers(s_found_obj, many=False).data
wetlab.api.serializers.SampleRunInfoSerializers(
s_found_obj, many=False
).data
)
else:
s_data.append({"sample_name": sample, "Run data": "Not found"})
Expand All @@ -254,8 +268,12 @@ def fetch_sample_information(request):
sample = request.GET["sample"]
if not core.modesl.Samples.objects.filter(sample_name__iexact=sample).exists():
return Response(status=status.HTTP_204_NO_CONTENT)
sample_obj = core.models.Samples.objects.filter(sample_name__iexact=sample).last()
sample_data = wetlab.api.serializers.SampleSerializer(sample_obj, many=False).data
sample_obj = core.models.Samples.objects.filter(
sample_name__iexact=sample
).last()
sample_data = wetlab.api.serializers.SampleSerializer(
sample_obj, many=False
).data
else:
if "sample_project_name" in request.GET:
project_name = request.GET["sample_project_name"]
Expand Down Expand Up @@ -300,7 +318,9 @@ def fetch_sample_information(request):
).data
else:
sample_obj = core.models.Samples.objects.prefetch_related("project_values")
sample_data = wetlab.api.serializers.SampleSerializer(sample_obj, many=True).data
sample_data = wetlab.api.serializers.SampleSerializer(
sample_obj, many=True
).data
return Response(sample_data, status=status.HTTP_200_OK)


Expand Down Expand Up @@ -329,7 +349,9 @@ def sample_fields(request):
def sample_project_fields(request):
if "project" in request.GET:
project = request.GET["project"].strip()
if core.models.SampleProjects.objects.filter(sample_project_name__iexact=project).exists():
if core.models.SampleProjects.objects.filter(
sample_project_name__iexact=project
).exists():
s_project_obj = core.models.SampleProjects.objects.filter(
sample_project_name__iexact=project
).last()
Expand All @@ -351,8 +373,12 @@ def get_lab_information_contact(request):
if "laboratory" in request.GET:
lab_name = request.GET["laboratory"].strip()
if core.models.LabRequest.objects.filter(lab_name__iexact=lab_name).exists():
lab_req_obj = core.models.LabRequest.objects.filter(lab_name__iexact=lab_name).last()
lab_req_serializer = core.models.LabRequestSerializer(lab_req_obj, many=False)
lab_req_obj = core.models.LabRequest.objects.filter(
lab_name__iexact=lab_name
).last()
lab_req_serializer = core.models.LabRequestSerializer(
lab_req_obj, many=False
)
return Response(lab_req_serializer.data, status=status.HTTP_200_OK)
else:
return Response(status=status.HTTP_204_NO_CONTENT)
Expand Down Expand Up @@ -393,7 +419,9 @@ def summarize_data_information(request):
)
@api_view(["GET"])
def statistic_information(request):
statistics_data = wetlab.api.utils.sample.collect_statistics_information(request.GET)
statistics_data = wetlab.api.utils.sample.collect_statistics_information(
request.GET
)
if "ERROR" in statistics_data:
return Response(status=status.HTTP_400_BAD_REQUEST)
if len(statistics_data) == 0:
Expand Down

0 comments on commit f816605

Please sign in to comment.