diff --git a/tracker/test/test_views.py b/tracker/test/test_views.py index 6d5f7ab..81f3025 100644 --- a/tracker/test/test_views.py +++ b/tracker/test/test_views.py @@ -76,3 +76,27 @@ class TrackerMapperTest(BaseTest): mantis_id=self.TASK_mantis ), ) + + def test_wf_id_task(self): + res = self.client.get( + reverse("tracker:mapper-id", args=[self.TASK_id]) + ) + self.assertEqual(res.status_code, 301) + self.assertEqual( + res.url, + tracker_settings.MANTIS_MAPPER_URL.format( + mantis_id=self.TASK_mantis + ), + ) + + def test_wf_id_issue(self): + res = self.client.get( + reverse("tracker:mapper-id", args=[self.ISSUE_id]) + ) + self.assertEqual(res.status_code, 301) + self.assertEqual( + res.url, + tracker_settings.MANTIS_MAPPER_URL.format( + mantis_id=self.ISSUE_mantis + ), + ) diff --git a/tracker/urls.py b/tracker/urls.py index ebb5e7c..ef46919 100644 --- a/tracker/urls.py +++ b/tracker/urls.py @@ -28,4 +28,9 @@ urlpatterns = [ views.WFTaskRedirectView.as_view(), name="mapper-tasks", ), + path( + "mapper//", + views.WFRedirectView.as_view(), + name="mapper-id", + ), ] diff --git a/tracker/views.py b/tracker/views.py index f107f00..befde17 100644 --- a/tracker/views.py +++ b/tracker/views.py @@ -50,3 +50,19 @@ class WFTaskRedirectView(RedirectView): mapper_type=MapperType.TASK, ) return self.url.format(mantis_id=issue.mantis_id) + + +class WFRedirectView(RedirectView): + permanent = True + query_string = True + url = tracker_settings.MANTIS_MAPPER_URL + + def get_redirect_url(self, *args, **kwargs): + wf = get_object_or_404( + TrackerMapper.objects.get_wf_qs( + [ + kwargs["workfront_id"], + ] + ) + ) + return self.url.format(mantis_id=wf.mantis_id)