def handle_success(self): messages.add_message( self.request, messages.SUCCESS, _('You have been added to the %r organization.') % (self.om.organization.name.encode('utf-8'), ) ) member_joined.send_robust( member=self.om, organization=self.om.organization, sender=self.instance)
def handle_success(self): messages.add_message( self.request, messages.SUCCESS, _('You have been added to the %r organization.') % (self.om.organization.name.encode('utf-8'), )) member_joined.send_robust(member=self.om, organization=self.om.organization, sender=self.instance)
def handle_success(self): member_joined.send_robust(member=self.om, organization=self.om.organization, sender=self.instance)
def handle(self, request, member_id, token): assert request.method in ('POST', 'GET') try: om = OrganizationMember.objects.select_related('organization').get(pk=member_id) except OrganizationMember.DoesNotExist: messages.add_message( request, messages.ERROR, ERR_INVITE_INVALID, ) return self.redirect(reverse('sentry')) if not om.is_pending: messages.add_message( request, messages.ERROR, ERR_INVITE_INVALID, ) return self.redirect(reverse('sentry')) if not constant_time_compare(om.token or om.legacy_token, token): messages.add_message( request, messages.ERROR, ERR_INVITE_INVALID, ) return self.redirect(reverse('sentry')) organization = om.organization qs = Project.objects.filter( organization=organization, ) project_list = list(qs[:25]) project_count = qs.count() org_requires_2fa = organization.flags.require_2fa.is_set user_has_2fa = Authenticator.objects.user_has_2fa(request.user.id) needs_2fa = org_requires_2fa and not user_has_2fa context = { 'org_name': organization.name, 'project_list': project_list, 'project_count': project_count, 'needs_authentication': not request.user.is_authenticated(), 'needs_2fa': needs_2fa, 'logout_url': u'{}?next={}'.format( reverse('sentry-logout'), request.path, ), 'login_url': u'{}?next={}'.format( reverse('sentry-login'), request.path, ), 'register_url': u'{}?next={}'.format( reverse('sentry-register'), request.path, ), } if not request.user.is_authenticated(): # Show login or register form auth.initiate_login(request, next_url=request.get_full_path()) request.session['can_register'] = True request.session['invite_email'] = om.email return self.respond('sentry/accept-organization-invite.html', context) if needs_2fa: # redirect to setup 2fa response = self.respond('sentry/accept-organization-invite.html', context) response.set_cookie(PENDING_INVITE, request.path, max_age=MAX_AGE) return response # if they're already a member of the organization its likely they're # using a shared account and either previewing this invite or # are incorrectly expecting this to create a new account for them context['existing_member'] = OrganizationMember.objects.filter( user=request.user.id, organization=om.organization_id, ).exists() form = self.get_form(request) if form.is_valid(): if OrganizationMember.objects.filter( organization=organization, user=request.user ).exists(): messages.add_message( request, messages.SUCCESS, _('You are already a member of the %r organization.') % (organization.name.encode('utf-8'), ) ) om.delete() else: om.user = request.user om.email = None om.save() self.create_audit_entry( request, organization=organization, target_object=om.id, target_user=request.user, event=AuditLogEntryEvent.MEMBER_ACCEPT, data=om.get_audit_log_data(), ) messages.add_message( request, messages.SUCCESS, _('You have been added to the %r organization.') % (organization.name.encode('utf-8'), ) ) member_joined.send_robust(member=om, organization=organization, sender=self) request.session.pop('can_register', None) response = self.redirect(reverse('sentry-organization-home', args=[organization.slug])) if PENDING_INVITE in request.COOKIES: response.delete_cookie(PENDING_INVITE) return response context['form'] = form return self.respond('sentry/accept-organization-invite.html', context)