Browse Source

feat: Update organization URLs for Sentry 10 (#11852)

Lyn Nagara 6 years ago
parent
commit
46bbaf1876

+ 3 - 2
src/sentry/api/serializers/models/auth_provider.py

@@ -2,7 +2,6 @@ from __future__ import absolute_import
 
 import six
 
-from django.core.urlresolvers import reverse
 from django.db.models import F
 
 from sentry.api.serializers import Serializer, register
@@ -19,11 +18,13 @@ class AuthProviderSerializer(Serializer):
             flags=F('flags').bitand(~OrganizationMember.flags['sso:linked']),
         ).count()
 
+        login_url = organization.get_url()
+
         return {
             'id': six.text_type(obj.id),
             'provider_name': obj.provider,
             'pending_links_count': pending_links_count,
-            'login_url': absolute_uri(reverse('sentry-organization-home', args=[organization.slug])),
+            'login_url': absolute_uri(login_url),
             'default_role': organization.default_role,
             'require_link': not obj.flags.allow_unlinked,
         }

+ 8 - 0
src/sentry/models/organization.py

@@ -438,3 +438,11 @@ class Organization(Model):
             actor_key_id=api_key_id,
             ip_address=ip_address
         )
+
+    def get_url(self):
+        from sentry import features
+        if features.has('organizations:sentry10', self):
+            url = reverse('sentry-organization-issue-list', args=[self.slug])
+        else:
+            url = reverse('sentry-organization-home', args=[self.slug])
+        return url

+ 1 - 1
src/sentry/web/frontend/accept_organization_invite.py

@@ -98,7 +98,7 @@ class AcceptOrganizationInviteView(BaseView):
             helper.accept_invite()
 
             request.session.pop('can_register', None)
-            response = self.redirect(reverse('sentry-organization-home', args=[organization.slug]))
+            response = self.redirect(organization.get_url())
             return helper.remove_invite_cookie(response)
 
         context['form'] = form

+ 1 - 4
src/sentry/web/frontend/base.py

@@ -150,10 +150,7 @@ class OrganizationMixin(object):
         organization = self.get_active_organization(request)
 
         if organization:
-            if features.has('organizations:sentry10', organization, actor=request.user):
-                url = reverse('sentry-organization-issue-list', args=[organization.slug])
-            else:
-                url = reverse('sentry-organization-home', args=[organization.slug])
+            url = organization.get_url()
         elif not features.has('organizations:create'):
             return self.respond('sentry/no-organization-access.html', status=403)
         else:

+ 3 - 4
src/sentry/web/frontend/organization_auth_settings.py

@@ -147,8 +147,7 @@ class OrganizationAuthSettingsView(OrganizationView):
         context = {
             'form': form,
             'pending_links_count': pending_links_count,
-            'login_url':
-            absolute_uri(reverse('sentry-organization-home', args=[organization.slug])),
+            'login_url': absolute_uri(organization.get_url()),
             'auth_provider': auth_provider,
             'provider_name': provider.name,
             'content': response,
@@ -176,7 +175,7 @@ class OrganizationAuthSettingsView(OrganizationView):
                 organization,
                 actor=request.user
             ) and not is_active_superuser(request):
-                home_url = reverse('sentry-organization-home', args=[organization.slug])
+                home_url = organization.get_url()
                 messages.add_message(request, messages.ERROR, ERR_NO_SSO)
 
                 return HttpResponseRedirect(home_url)
@@ -214,5 +213,5 @@ class OrganizationAuthSettingsView(OrganizationView):
 
         # Otherwise user is in bad state since frontend/react should handle this case
         return HttpResponseRedirect(
-            reverse('sentry-organization-home', args=[organization.slug])
+            organization.get_url()
         )

+ 2 - 2
src/sentry/web/frontend/restore_organization.py

@@ -42,7 +42,7 @@ class RestoreOrganizationView(OrganizationView):
 
     def get(self, request, organization):
         if organization.status == OrganizationStatus.VISIBLE:
-            return self.redirect(reverse('sentry-organization-home', args=[organization.slug]))
+            return self.redirect(organization.get_url())
 
         context = {
             # If this were named 'organization', it triggers logic in the base
@@ -80,4 +80,4 @@ class RestoreOrganizationView(OrganizationView):
                     event=AuditLogEntryEvent.ORG_RESTORE,
                     data=organization.get_audit_log_data(),
                 )
-        return self.redirect(reverse('sentry-organization-home', args=[organization.slug]))
+        return self.redirect(organization.get_url())