Skip to content
This repository has been archived by the owner on Aug 19, 2019. It is now read-only.

Commit

Permalink
Fix for old api endpoint (#41)
Browse files Browse the repository at this point in the history
* Fix for old api endpoint
  • Loading branch information
Bash-Maistora authored and Oleg Gerasimenko committed Jun 13, 2019
1 parent d2c1397 commit fa5abc3
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 22 deletions.
6 changes: 6 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ services:
- POSTGRES_PASSWORD=panelapp
- POSTGRES_USER=panelapp
- POSTGRES_DB=panelapp
volumes:
- db-data:/var/lib/postgresql/data
nginx:
image: nginx:1.15.1
ports:
Expand Down Expand Up @@ -51,3 +53,7 @@ services:
image: panelapp_celery_worker
command: bash -c "cd /app/panelapp; celery -A panelapp worker -E -l info"
ports: []

volumes:
db-data:
driver: local
1 change: 1 addition & 0 deletions panelapp/panels/tests/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ class Meta:
lambda x: fake.sentence(nb_words=6, variable_nb_words=True).strip(".")
)
genepanelsnapshot = factory.RelatedFactory(GenePanelSnapshotFactory)
old_pk = '553f9696bb5a1616e5ed41e3'


class PanelTypeFactory(factory.django.DjangoModelFactory):
Expand Down
5 changes: 5 additions & 0 deletions panelapp/webservices/tests/test_webservices.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,11 @@ def test_get_panel_pk(self):
)
self.assertEqual(r.status_code, 200)

def test_get_panel_by_old_pk(self):
r = self.client.get(reverse_lazy("webservices:get_panel", args=(self.gpes.panel.panel.old_pk,)))
self.assertEqual(r.status_code, 200)
self.assertTrue(b"Query Error" not in r.content)

def test_get_panel_version(self):
self.gpes.panel.increment_version()
del self.gpes.panel.panel.active_panel
Expand Down
57 changes: 35 additions & 22 deletions panelapp/webservices/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,30 +127,42 @@ def get_panel(request, panel_name):
if "version" in request.GET:
version = request.GET["version"]
try:
major_version = int(version.split(".")[0])
minor_version = int(version.split(".")[1])
except IndexError:
major_version, minor_version = version.split(".")
except ValueError:
return Response(
{"Query Error: The incorrect version requested"}, status=400
)

snap = HistoricalSnapshot.objects.filter(
panel__pk=panel_name,
major_version=major_version,
minor_version=minor_version,
).first()

if not snap:
return Response(
{
"Query Error: The version requested for panel:"
+ panel_name
+ " was not found."
}
)
json = snap.to_api_0()
return Response(json)

try:
int(panel_name)
queryset = GenePanelSnapshot.objects.get_active(all=True, internal=True, deleted=True).filter(panel__pk=panel_name)
except ValueError:
queryset = GenePanelSnapshot.objects.get_active(all=True, internal=True, deleted=True).filter(panel__old_pk=panel_name)

instance = queryset.first()
if instance.major_version != int(major_version) or instance.minor_version != int(minor_version):
if len(panel_name) == 24:
snap = HistoricalSnapshot.objects.filter(
panel__old_pk=panel_name,
major_version=major_version,
minor_version=minor_version,
).first()
else:
snap = HistoricalSnapshot.objects.filter(
panel__pk=panel_name,
major_version=major_version,
minor_version=minor_version,
).first()

if not snap:
return Response(
{
"Query Error: The version requested for panel:"
+ panel_name
+ " was not found."
}
)
json = snap.to_api_0()
return Response(json)
else:
queryset = GenePanelSnapshot.objects.get_active()

Expand Down Expand Up @@ -184,7 +196,8 @@ def get_panel(request, panel_name):
else:
queryset = queryset_name_exact

instance = queryset[0]
instance = queryset.first()

serializer = PanelSerializer(
filter_entity_list(instance.get_all_genes_extra, **filters),
filter_entity_list(instance.get_all_strs_extra, **filters),
Expand Down

0 comments on commit fa5abc3

Please sign in to comment.