def schema_context(schema_name): previous_tenant = connection.get_tenant() try: connection.set_schema(schema_name) yield finally: connection.set_tenant(previous_tenant)
def tenant_context(tenant): previous_tenant = connection.get_tenant() try: connection.set_tenant(tenant) yield finally: connection.set_tenant(previous_tenant)
def get_tenant_name(): from django.db import connection try: tenant_name = connection.get_tenant().name except AttributeError: tenant_name = None return tenant_name
def admin_password_reset( request, is_admin_site=False, template_name='registration/password_reset_form.html', email_template_name='registration/password_reset_email.html', subject_template_name='registration/password_reset_subject.txt', password_reset_form=PasswordResetForm, token_generator=default_token_generator, post_reset_redirect=None, from_email=None, extra_context=None): """ This is a copy of django.contrib.auth.views.password_reset but this forces the domain to the one specified in current tenant. """ if post_reset_redirect is None: post_reset_redirect = reverse('password_reset_done') else: post_reset_redirect = resolve_url(post_reset_redirect) if request.method == "POST": form = password_reset_form(request.POST) if form.is_valid(): opts = { 'use_https': request.is_secure(), 'token_generator': token_generator, 'from_email': from_email, 'email_template_name': email_template_name, 'subject_template_name': subject_template_name, 'request': request, } tenant = connection.get_tenant() domain_override = tenant.domain_url opts = dict(opts, domain_override=domain_override) form.save(**opts) return HttpResponseRedirect(post_reset_redirect) else: form = password_reset_form() context = { 'form': form, } if extra_context is not None: context.update(extra_context) return TemplateResponse(request, template_name, context)
def admin_password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html', email_template_name='registration/password_reset_email.html', subject_template_name='registration/password_reset_subject.txt', password_reset_form=PasswordResetForm, token_generator=default_token_generator, post_reset_redirect=None, from_email=None, current_app=None, extra_context=None): """ This is a copy of django.contrib.auth.views.password_reset but this forces the domain to the one specified in current tenant. """ if post_reset_redirect is None: post_reset_redirect = reverse('password_reset_done') else: post_reset_redirect = resolve_url(post_reset_redirect) if request.method == "POST": form = password_reset_form(request.POST) if form.is_valid(): opts = { 'use_https': request.is_secure(), 'token_generator': token_generator, 'from_email': from_email, 'email_template_name': email_template_name, 'subject_template_name': subject_template_name, 'request': request, } tenant = connection.get_tenant() domain_override = tenant.domain_url opts = dict(opts, domain_override=domain_override) form.save(**opts) return HttpResponseRedirect(post_reset_redirect) else: form = password_reset_form() context = { 'form': form, } if extra_context is not None: context.update(extra_context) return TemplateResponse(request, template_name, context, current_app=current_app)
def has_permission(self, request, view): #print(connection.get_tenant()) return connection.get_tenant() == 'public' and permissions.IsAdminUser( request.user)