From 4ca3fd6b8228e15d67702b8db51cde8ec9bd2162 Mon Sep 17 00:00:00 2001 From: fredkingham Date: Fri, 6 Apr 2018 14:50:43 +0100 Subject: [PATCH 1/2] removes the episode_history flag as this is not used anywhere --- CHANGELOG.md | 5 ++++ opal/managers.py | 8 +------ opal/models.py | 13 ---------- opal/tests/test_api.py | 2 -- opal/tests/test_episode.py | 48 +++---------------------------------- opal/tests/test_managers.py | 4 ++-- 6 files changed, 11 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d9495ccb..9930b32d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ A change to the order that APIs are registered with Django Rest Framework allows plugins to now override the core Opal application APIs. +#### removes the episode_history flag from episode serialization +removes it from `opal.managers.EpisodeQueryset.serialised` and `opal.models.Episode.to_dict` also removes the acompannying method +`opal.models.Episode._episode_history_to_dict` + + ### 0.10.0 (Major Release) This is a major release with breaking changes from upstream dependencies. diff --git a/opal/managers.py b/opal/managers.py index 8baf4a081..79971cc5a 100644 --- a/opal/managers.py +++ b/opal/managers.py @@ -60,13 +60,11 @@ def serialised_episode_subrecords(self, episodes, user): episode_subs[sub.episode_id][name].append(sub.to_dict(user)) return episode_subs - def serialised(self, user, episodes, - historic_tags=False, episode_history=False): + def serialised(self, user, episodes, historic_tags=False): """ Return a set of serialised EPISODES. If HISTORIC_TAGS is Truthy, return deleted tags as well. - If EPISODE_HISTORY is Truthy return historic episodes as well. """ patient_ids = [e.patient_id for e in episodes] patient_subs = defaultdict(lambda: defaultdict(list)) @@ -106,10 +104,6 @@ def serialised(self, user, episodes, d['tagging'] = [taggings[e.id]] d['tagging'][0]['id'] = e.id serialised.append(d) - - if episode_history: - d['episode_history'] = e._episode_history_to_dict(user) - return serialised def serialised_active(self, user, **kw): diff --git a/opal/models.py b/opal/models.py index 532fec066..fec77a5f9 100644 --- a/opal/models.py +++ b/opal/models.py @@ -854,17 +854,6 @@ def get_tag_names(self, user, historic=False): return list(qs.values_list("value", flat=True)) - def _episode_history_to_dict(self, user): - """ - Return a serialised version of this patient's episode history - """ - from opal.core.search.queries import episodes_for_user - - order = 'start', 'end' - episode_history = self.patient.episode_set.order_by(*order) - episode_history = episodes_for_user(episode_history, user) - return [e.to_dict(user, shallow=True) for e in episode_history] - def to_dict(self, user, shallow=False): """ Serialisation to JSON for Episodes @@ -898,8 +887,6 @@ def to_dict(self, user, shallow=False): ] d['tagging'] = self.tagging_dict(user) - - d['episode_history'] = self._episode_history_to_dict(user) return d diff --git a/opal/tests/test_api.py b/opal/tests/test_api.py index a9c00835b..da5b66f9c 100644 --- a/opal/tests/test_api.py +++ b/opal/tests/test_api.py @@ -644,8 +644,6 @@ def setUp(self): self.expected = self.episode.to_dict(self.user) self.expected["start"] = "14/01/2014" self.expected["end"] = "15/01/2014" - self.expected["episode_history"][0]["end"] = "15/01/2014" - self.expected["episode_history"][0]["start"] = "14/01/2014" def test_retrieve_episode(self): response = json.loads(api.EpisodeViewSet().retrieve(self.mock_request, pk=self.episode.pk).content.decode('UTF-8')) diff --git a/opal/tests/test_episode.py b/opal/tests/test_episode.py index 27ff81b62..e491adf55 100644 --- a/opal/tests/test_episode.py +++ b/opal/tests/test_episode.py @@ -148,50 +148,6 @@ def test_not_bulk_serialisable_episode_subrecords(self, episode_subrecords): to_dict = episode.to_dict(self.user) self.assertNotIn(InvisibleHatWearer.get_api_name(), to_dict) - - def test_to_dict_with_multiple_episodes(self): - self.episode.start = datetime.date(2015, 7, 25) - self.episode.save() - prev = self.patient.create_episode() - prev.start = datetime.date(2012, 7, 25) - prev.end = datetime.date(2012, 8, 12) - prev.active=False - prev.save() - - serialised = self.episode.to_dict(self.user) - self.assertEqual(2, len(serialised['episode_history'])) - self.assertEqual(datetime.date(2012, 7, 25), - serialised['episode_history'][0]['start']) - - def test_to_dict_episode_ordering(self): - patient = Patient.objects.create() - prev = patient.create_episode() - prev.start = datetime.date(2012, 7, 25) - prev.end = datetime.date(2012, 8, 12) - prev.active = False - prev.save() - - previouser = patient.create_episode() - previouser.start = datetime.date(2011, 7, 25) - previouser.active = False - previouser.save() - - episode = patient.create_episode() - episode.start = datetime.date(2014, 6, 23) - episode.save() - - serialised = episode.to_dict(self.user) - self.assertEqual(3, len(serialised['episode_history'])) - self.assertEqual(datetime.date(2011, 7, 25), - serialised['episode_history'][0]['start']) - self.assertEqual(datetime.date(2012, 7, 25), - serialised['episode_history'][1]['start']) - - def test_to_dict_episode_history_includes_no_dates(self): - prev = self.patient.create_episode() - serialised = self.episode.to_dict(self.user) - self.assertEqual(2, len(serialised['episode_history'])) - @patch('opal.models.episode_subrecords') def test_to_dict_episode_with_many_to_many(self, episode_subrecords): episode_subrecords.return_value = [HatWearer] @@ -201,7 +157,9 @@ def test_to_dict_episode_with_many_to_many(self, episode_subrecords): hw = HatWearer.objects.create(episode=prev) hw.hats.add(bowler, top) serialised = prev.to_dict(self.user) - self.assertEqual(serialised["hat_wearer"][0]["hats"], [u'bowler', u'top']) + self.assertEqual( + serialised["hat_wearer"][0]["hats"], [u'bowler', u'top'] + ) class EpisodeCategoryTestCase(OpalTestCase): diff --git a/opal/tests/test_managers.py b/opal/tests/test_managers.py index 483a99ddf..77190e65c 100644 --- a/opal/tests/test_managers.py +++ b/opal/tests/test_managers.py @@ -125,7 +125,7 @@ def test_serialised_equals_to_dict(self): """ Serialised is an optimisation """ as_dict = Episode.objects.serialised( - self.user, [self.episode], episode_history=True + self.user, [self.episode] ) expected = self.episode.to_dict(self.user) @@ -138,6 +138,6 @@ def test_serialised_mine_tag_other_user(self): user2 = self.make_user('the password', username='user2') self.episode.set_tag_names(tags, user2) as_dict = Episode.objects.serialised( - self.user, [self.episode], episode_history=False + self.user, [self.episode] ) self.assertEqual(as_dict[0]['tagging'][0], {'id': 1}) From 1286934a2741fdf10b8aaeefaa2e31f58b5a926a Mon Sep 17 00:00:00 2001 From: David Miller Date: Thu, 12 Apr 2018 22:47:06 +0100 Subject: [PATCH 2/2] Fixup: Rewrite episode_history changelog entry --- CHANGELOG.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9930b32d9..a54f0798c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,14 @@ A change to the order that APIs are registered with Django Rest Framework allows plugins to now override the core Opal application APIs. -#### removes the episode_history flag from episode serialization -removes it from `opal.managers.EpisodeQueryset.serialised` and `opal.models.Episode.to_dict` also removes the acompannying method -`opal.models.Episode._episode_history_to_dict` +#### Removes "episode_history" from episode serialization + +Serialised episodes previously contained a "shallow" copy of all other episodes in +a property named `episode_history`. This was primarially useful before we switched +from episode-oriented to patient-oriented detail views by default. + +This also includes a change to the signature of the `.serialised()` method of the +Episode manager, which no longer accepts a `episode_history` kwarg. ### 0.10.0 (Major Release)