mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	actions: Split out zerver.actions.realm_domains.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		
							
								
								
									
										118
									
								
								zerver/actions/realm_domains.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								zerver/actions/realm_domains.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,118 @@
 | 
				
			|||||||
 | 
					from typing import Optional
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import orjson
 | 
				
			||||||
 | 
					from django.db import transaction
 | 
				
			||||||
 | 
					from django.utils.timezone import now as timezone_now
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from zerver.actions.realm_settings import do_set_realm_property
 | 
				
			||||||
 | 
					from zerver.models import (
 | 
				
			||||||
 | 
					    Realm,
 | 
				
			||||||
 | 
					    RealmAuditLog,
 | 
				
			||||||
 | 
					    RealmDomain,
 | 
				
			||||||
 | 
					    UserProfile,
 | 
				
			||||||
 | 
					    active_user_ids,
 | 
				
			||||||
 | 
					    get_realm_domains,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					from zerver.tornado.django_api import send_event
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@transaction.atomic(durable=True)
 | 
				
			||||||
 | 
					def do_add_realm_domain(
 | 
				
			||||||
 | 
					    realm: Realm, domain: str, allow_subdomains: bool, *, acting_user: Optional[UserProfile]
 | 
				
			||||||
 | 
					) -> (RealmDomain):
 | 
				
			||||||
 | 
					    realm_domain = RealmDomain.objects.create(
 | 
				
			||||||
 | 
					        realm=realm, domain=domain, allow_subdomains=allow_subdomains
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    RealmAuditLog.objects.create(
 | 
				
			||||||
 | 
					        realm=realm,
 | 
				
			||||||
 | 
					        acting_user=acting_user,
 | 
				
			||||||
 | 
					        event_type=RealmAuditLog.REALM_DOMAIN_ADDED,
 | 
				
			||||||
 | 
					        event_time=timezone_now(),
 | 
				
			||||||
 | 
					        extra_data=orjson.dumps(
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "realm_domains": get_realm_domains(realm),
 | 
				
			||||||
 | 
					                "added_domain": {"domain": domain, "allow_subdomains": allow_subdomains},
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ).decode(),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    event = dict(
 | 
				
			||||||
 | 
					        type="realm_domains",
 | 
				
			||||||
 | 
					        op="add",
 | 
				
			||||||
 | 
					        realm_domain=dict(
 | 
				
			||||||
 | 
					            domain=realm_domain.domain, allow_subdomains=realm_domain.allow_subdomains
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    transaction.on_commit(lambda: send_event(realm, event, active_user_ids(realm.id)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return realm_domain
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@transaction.atomic(durable=True)
 | 
				
			||||||
 | 
					def do_change_realm_domain(
 | 
				
			||||||
 | 
					    realm_domain: RealmDomain, allow_subdomains: bool, *, acting_user: Optional[UserProfile]
 | 
				
			||||||
 | 
					) -> None:
 | 
				
			||||||
 | 
					    realm_domain.allow_subdomains = allow_subdomains
 | 
				
			||||||
 | 
					    realm_domain.save(update_fields=["allow_subdomains"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    RealmAuditLog.objects.create(
 | 
				
			||||||
 | 
					        realm=realm_domain.realm,
 | 
				
			||||||
 | 
					        acting_user=acting_user,
 | 
				
			||||||
 | 
					        event_type=RealmAuditLog.REALM_DOMAIN_CHANGED,
 | 
				
			||||||
 | 
					        event_time=timezone_now(),
 | 
				
			||||||
 | 
					        extra_data=orjson.dumps(
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "realm_domains": get_realm_domains(realm_domain.realm),
 | 
				
			||||||
 | 
					                "changed_domain": {
 | 
				
			||||||
 | 
					                    "domain": realm_domain.domain,
 | 
				
			||||||
 | 
					                    "allow_subdomains": realm_domain.allow_subdomains,
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ).decode(),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    event = dict(
 | 
				
			||||||
 | 
					        type="realm_domains",
 | 
				
			||||||
 | 
					        op="change",
 | 
				
			||||||
 | 
					        realm_domain=dict(
 | 
				
			||||||
 | 
					            domain=realm_domain.domain, allow_subdomains=realm_domain.allow_subdomains
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    transaction.on_commit(
 | 
				
			||||||
 | 
					        lambda: send_event(realm_domain.realm, event, active_user_ids(realm_domain.realm_id))
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@transaction.atomic(durable=True)
 | 
				
			||||||
 | 
					def do_remove_realm_domain(
 | 
				
			||||||
 | 
					    realm_domain: RealmDomain, *, acting_user: Optional[UserProfile]
 | 
				
			||||||
 | 
					) -> None:
 | 
				
			||||||
 | 
					    realm = realm_domain.realm
 | 
				
			||||||
 | 
					    domain = realm_domain.domain
 | 
				
			||||||
 | 
					    realm_domain.delete()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    RealmAuditLog.objects.create(
 | 
				
			||||||
 | 
					        realm=realm,
 | 
				
			||||||
 | 
					        acting_user=acting_user,
 | 
				
			||||||
 | 
					        event_type=RealmAuditLog.REALM_DOMAIN_REMOVED,
 | 
				
			||||||
 | 
					        event_time=timezone_now(),
 | 
				
			||||||
 | 
					        extra_data=orjson.dumps(
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "realm_domains": get_realm_domains(realm),
 | 
				
			||||||
 | 
					                "removed_domain": {
 | 
				
			||||||
 | 
					                    "domain": realm_domain.domain,
 | 
				
			||||||
 | 
					                    "allow_subdomains": realm_domain.allow_subdomains,
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ).decode(),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if RealmDomain.objects.filter(realm=realm).count() == 0 and realm.emails_restricted_to_domains:
 | 
				
			||||||
 | 
					        # If this was the last realm domain, we mark the realm as no
 | 
				
			||||||
 | 
					        # longer restricted to domain, because the feature doesn't do
 | 
				
			||||||
 | 
					        # anything if there are no domains, and this is probably less
 | 
				
			||||||
 | 
					        # confusing than the alternative.
 | 
				
			||||||
 | 
					        do_set_realm_property(realm, "emails_restricted_to_domains", False, acting_user=acting_user)
 | 
				
			||||||
 | 
					    event = dict(type="realm_domains", op="remove", domain=domain)
 | 
				
			||||||
 | 
					    transaction.on_commit(lambda: send_event(realm, event, active_user_ids(realm.id)))
 | 
				
			||||||
@@ -2,7 +2,6 @@ import datetime
 | 
				
			|||||||
import logging
 | 
					import logging
 | 
				
			||||||
from typing import Any, Dict, List, Optional
 | 
					from typing import Any, Dict, List, Optional
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import orjson
 | 
					 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
from django.db import transaction
 | 
					from django.db import transaction
 | 
				
			||||||
from django.utils.timezone import now as timezone_now
 | 
					from django.utils.timezone import now as timezone_now
 | 
				
			||||||
@@ -13,7 +12,6 @@ from zerver.actions.realm_settings import (
 | 
				
			|||||||
    do_add_deactivated_redirect,
 | 
					    do_add_deactivated_redirect,
 | 
				
			||||||
    do_change_realm_plan_type,
 | 
					    do_change_realm_plan_type,
 | 
				
			||||||
    do_deactivate_realm,
 | 
					    do_deactivate_realm,
 | 
				
			||||||
    do_set_realm_property,
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from zerver.lib.bulk_create import create_users
 | 
					from zerver.lib.bulk_create import create_users
 | 
				
			||||||
from zerver.lib.server_initialization import create_internal_realm, server_initialized
 | 
					from zerver.lib.server_initialization import create_internal_realm, server_initialized
 | 
				
			||||||
@@ -25,17 +23,13 @@ from zerver.models import (
 | 
				
			|||||||
    Message,
 | 
					    Message,
 | 
				
			||||||
    Realm,
 | 
					    Realm,
 | 
				
			||||||
    RealmAuditLog,
 | 
					    RealmAuditLog,
 | 
				
			||||||
    RealmDomain,
 | 
					 | 
				
			||||||
    RealmUserDefault,
 | 
					    RealmUserDefault,
 | 
				
			||||||
    Stream,
 | 
					    Stream,
 | 
				
			||||||
    UserMessage,
 | 
					    UserMessage,
 | 
				
			||||||
    UserProfile,
 | 
					    UserProfile,
 | 
				
			||||||
    active_user_ids,
 | 
					 | 
				
			||||||
    get_realm,
 | 
					    get_realm,
 | 
				
			||||||
    get_realm_domains,
 | 
					 | 
				
			||||||
    get_system_bot,
 | 
					    get_system_bot,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from zerver.tornado.django_api import send_event
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def do_change_realm_subdomain(
 | 
					def do_change_realm_subdomain(
 | 
				
			||||||
@@ -247,108 +241,6 @@ def do_create_realm(
 | 
				
			|||||||
    return realm
 | 
					    return realm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@transaction.atomic(durable=True)
 | 
					 | 
				
			||||||
def do_add_realm_domain(
 | 
					 | 
				
			||||||
    realm: Realm, domain: str, allow_subdomains: bool, *, acting_user: Optional[UserProfile]
 | 
					 | 
				
			||||||
) -> (RealmDomain):
 | 
					 | 
				
			||||||
    realm_domain = RealmDomain.objects.create(
 | 
					 | 
				
			||||||
        realm=realm, domain=domain, allow_subdomains=allow_subdomains
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    RealmAuditLog.objects.create(
 | 
					 | 
				
			||||||
        realm=realm,
 | 
					 | 
				
			||||||
        acting_user=acting_user,
 | 
					 | 
				
			||||||
        event_type=RealmAuditLog.REALM_DOMAIN_ADDED,
 | 
					 | 
				
			||||||
        event_time=timezone_now(),
 | 
					 | 
				
			||||||
        extra_data=orjson.dumps(
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "realm_domains": get_realm_domains(realm),
 | 
					 | 
				
			||||||
                "added_domain": {"domain": domain, "allow_subdomains": allow_subdomains},
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ).decode(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    event = dict(
 | 
					 | 
				
			||||||
        type="realm_domains",
 | 
					 | 
				
			||||||
        op="add",
 | 
					 | 
				
			||||||
        realm_domain=dict(
 | 
					 | 
				
			||||||
            domain=realm_domain.domain, allow_subdomains=realm_domain.allow_subdomains
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    transaction.on_commit(lambda: send_event(realm, event, active_user_ids(realm.id)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return realm_domain
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@transaction.atomic(durable=True)
 | 
					 | 
				
			||||||
def do_change_realm_domain(
 | 
					 | 
				
			||||||
    realm_domain: RealmDomain, allow_subdomains: bool, *, acting_user: Optional[UserProfile]
 | 
					 | 
				
			||||||
) -> None:
 | 
					 | 
				
			||||||
    realm_domain.allow_subdomains = allow_subdomains
 | 
					 | 
				
			||||||
    realm_domain.save(update_fields=["allow_subdomains"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    RealmAuditLog.objects.create(
 | 
					 | 
				
			||||||
        realm=realm_domain.realm,
 | 
					 | 
				
			||||||
        acting_user=acting_user,
 | 
					 | 
				
			||||||
        event_type=RealmAuditLog.REALM_DOMAIN_CHANGED,
 | 
					 | 
				
			||||||
        event_time=timezone_now(),
 | 
					 | 
				
			||||||
        extra_data=orjson.dumps(
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "realm_domains": get_realm_domains(realm_domain.realm),
 | 
					 | 
				
			||||||
                "changed_domain": {
 | 
					 | 
				
			||||||
                    "domain": realm_domain.domain,
 | 
					 | 
				
			||||||
                    "allow_subdomains": realm_domain.allow_subdomains,
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ).decode(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    event = dict(
 | 
					 | 
				
			||||||
        type="realm_domains",
 | 
					 | 
				
			||||||
        op="change",
 | 
					 | 
				
			||||||
        realm_domain=dict(
 | 
					 | 
				
			||||||
            domain=realm_domain.domain, allow_subdomains=realm_domain.allow_subdomains
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    transaction.on_commit(
 | 
					 | 
				
			||||||
        lambda: send_event(realm_domain.realm, event, active_user_ids(realm_domain.realm_id))
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@transaction.atomic(durable=True)
 | 
					 | 
				
			||||||
def do_remove_realm_domain(
 | 
					 | 
				
			||||||
    realm_domain: RealmDomain, *, acting_user: Optional[UserProfile]
 | 
					 | 
				
			||||||
) -> None:
 | 
					 | 
				
			||||||
    realm = realm_domain.realm
 | 
					 | 
				
			||||||
    domain = realm_domain.domain
 | 
					 | 
				
			||||||
    realm_domain.delete()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    RealmAuditLog.objects.create(
 | 
					 | 
				
			||||||
        realm=realm,
 | 
					 | 
				
			||||||
        acting_user=acting_user,
 | 
					 | 
				
			||||||
        event_type=RealmAuditLog.REALM_DOMAIN_REMOVED,
 | 
					 | 
				
			||||||
        event_time=timezone_now(),
 | 
					 | 
				
			||||||
        extra_data=orjson.dumps(
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "realm_domains": get_realm_domains(realm),
 | 
					 | 
				
			||||||
                "removed_domain": {
 | 
					 | 
				
			||||||
                    "domain": realm_domain.domain,
 | 
					 | 
				
			||||||
                    "allow_subdomains": realm_domain.allow_subdomains,
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ).decode(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if RealmDomain.objects.filter(realm=realm).count() == 0 and realm.emails_restricted_to_domains:
 | 
					 | 
				
			||||||
        # If this was the last realm domain, we mark the realm as no
 | 
					 | 
				
			||||||
        # longer restricted to domain, because the feature doesn't do
 | 
					 | 
				
			||||||
        # anything if there are no domains, and this is probably less
 | 
					 | 
				
			||||||
        # confusing than the alternative.
 | 
					 | 
				
			||||||
        do_set_realm_property(realm, "emails_restricted_to_domains", False, acting_user=acting_user)
 | 
					 | 
				
			||||||
    event = dict(type="realm_domains", op="remove", domain=domain)
 | 
					 | 
				
			||||||
    transaction.on_commit(lambda: send_event(realm, event, active_user_ids(realm.id)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def get_topic_messages(user_profile: UserProfile, stream: Stream, topic_name: str) -> List[Message]:
 | 
					def get_topic_messages(user_profile: UserProfile, stream: Stream, topic_name: str) -> List[Message]:
 | 
				
			||||||
    query = UserMessage.objects.filter(
 | 
					    query = UserMessage.objects.filter(
 | 
				
			||||||
        user_profile=user_profile,
 | 
					        user_profile=user_profile,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,6 +17,11 @@ from zerver.actions.create_user import (
 | 
				
			|||||||
    do_create_user,
 | 
					    do_create_user,
 | 
				
			||||||
    do_reactivate_user,
 | 
					    do_reactivate_user,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					from zerver.actions.realm_domains import (
 | 
				
			||||||
 | 
					    do_add_realm_domain,
 | 
				
			||||||
 | 
					    do_change_realm_domain,
 | 
				
			||||||
 | 
					    do_remove_realm_domain,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
from zerver.actions.realm_icon import do_change_icon_source
 | 
					from zerver.actions.realm_icon import do_change_icon_source
 | 
				
			||||||
from zerver.actions.realm_playgrounds import do_add_realm_playground, do_remove_realm_playground
 | 
					from zerver.actions.realm_playgrounds import do_add_realm_playground, do_remove_realm_playground
 | 
				
			||||||
from zerver.actions.realm_settings import (
 | 
					from zerver.actions.realm_settings import (
 | 
				
			||||||
@@ -43,7 +48,6 @@ from zerver.actions.user_settings import (
 | 
				
			|||||||
    do_regenerate_api_key,
 | 
					    do_regenerate_api_key,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from zerver.actions.users import do_change_user_role, do_deactivate_user
 | 
					from zerver.actions.users import do_change_user_role, do_deactivate_user
 | 
				
			||||||
from zerver.lib.actions import do_add_realm_domain, do_change_realm_domain, do_remove_realm_domain
 | 
					 | 
				
			||||||
from zerver.lib.message import get_last_message_id
 | 
					from zerver.lib.message import get_last_message_id
 | 
				
			||||||
from zerver.lib.stream_traffic import get_streams_traffic
 | 
					from zerver.lib.stream_traffic import get_streams_traffic
 | 
				
			||||||
from zerver.lib.streams import create_stream_if_needed
 | 
					from zerver.lib.streams import create_stream_if_needed
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,6 +54,11 @@ from zerver.actions.message_flags import do_update_message_flags
 | 
				
			|||||||
from zerver.actions.muted_users import do_mute_user, do_unmute_user
 | 
					from zerver.actions.muted_users import do_mute_user, do_unmute_user
 | 
				
			||||||
from zerver.actions.presence import do_update_user_presence, do_update_user_status
 | 
					from zerver.actions.presence import do_update_user_presence, do_update_user_status
 | 
				
			||||||
from zerver.actions.reactions import do_add_reaction, do_remove_reaction
 | 
					from zerver.actions.reactions import do_add_reaction, do_remove_reaction
 | 
				
			||||||
 | 
					from zerver.actions.realm_domains import (
 | 
				
			||||||
 | 
					    do_add_realm_domain,
 | 
				
			||||||
 | 
					    do_change_realm_domain,
 | 
				
			||||||
 | 
					    do_remove_realm_domain,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
from zerver.actions.realm_emoji import check_add_realm_emoji, do_remove_realm_emoji
 | 
					from zerver.actions.realm_emoji import check_add_realm_emoji, do_remove_realm_emoji
 | 
				
			||||||
from zerver.actions.realm_icon import do_change_icon_source
 | 
					from zerver.actions.realm_icon import do_change_icon_source
 | 
				
			||||||
from zerver.actions.realm_linkifiers import (
 | 
					from zerver.actions.realm_linkifiers import (
 | 
				
			||||||
@@ -109,7 +114,6 @@ from zerver.actions.users import (
 | 
				
			|||||||
    do_update_outgoing_webhook_service,
 | 
					    do_update_outgoing_webhook_service,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from zerver.actions.video_calls import do_set_zoom_token
 | 
					from zerver.actions.video_calls import do_set_zoom_token
 | 
				
			||||||
from zerver.lib.actions import do_add_realm_domain, do_change_realm_domain, do_remove_realm_domain
 | 
					 | 
				
			||||||
from zerver.lib.drafts import do_create_drafts, do_delete_draft, do_edit_draft
 | 
					from zerver.lib.drafts import do_create_drafts, do_delete_draft, do_edit_draft
 | 
				
			||||||
from zerver.lib.event_schema import (
 | 
					from zerver.lib.event_schema import (
 | 
				
			||||||
    check_alert_words,
 | 
					    check_alert_words,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,10 +26,11 @@ from zerver.actions.message_send import (
 | 
				
			|||||||
    internal_send_stream_message_by_name,
 | 
					    internal_send_stream_message_by_name,
 | 
				
			||||||
    send_rate_limited_pm_notification_to_bot_owner,
 | 
					    send_rate_limited_pm_notification_to_bot_owner,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					from zerver.actions.realm_domains import do_add_realm_domain
 | 
				
			||||||
from zerver.actions.realm_settings import do_set_realm_property
 | 
					from zerver.actions.realm_settings import do_set_realm_property
 | 
				
			||||||
from zerver.actions.streams import do_change_stream_post_policy
 | 
					from zerver.actions.streams import do_change_stream_post_policy
 | 
				
			||||||
from zerver.actions.users import do_change_can_forge_sender, do_deactivate_user
 | 
					from zerver.actions.users import do_change_can_forge_sender, do_deactivate_user
 | 
				
			||||||
from zerver.lib.actions import do_add_realm_domain, do_create_realm
 | 
					from zerver.lib.actions import do_create_realm
 | 
				
			||||||
from zerver.lib.addressee import Addressee
 | 
					from zerver.lib.addressee import Addressee
 | 
				
			||||||
from zerver.lib.cache import cache_delete, get_stream_cache_key
 | 
					from zerver.lib.cache import cache_delete, get_stream_cache_key
 | 
				
			||||||
from zerver.lib.exceptions import JsonableError
 | 
					from zerver.lib.exceptions import JsonableError
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,9 +2,10 @@ import orjson
 | 
				
			|||||||
from django.core.exceptions import ValidationError
 | 
					from django.core.exceptions import ValidationError
 | 
				
			||||||
from django.db.utils import IntegrityError
 | 
					from django.db.utils import IntegrityError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from zerver.actions.realm_domains import do_change_realm_domain, do_remove_realm_domain
 | 
				
			||||||
from zerver.actions.realm_settings import do_set_realm_property
 | 
					from zerver.actions.realm_settings import do_set_realm_property
 | 
				
			||||||
from zerver.actions.users import do_change_user_role
 | 
					from zerver.actions.users import do_change_user_role
 | 
				
			||||||
from zerver.lib.actions import do_change_realm_domain, do_create_realm, do_remove_realm_domain
 | 
					from zerver.lib.actions import do_create_realm
 | 
				
			||||||
from zerver.lib.domains import validate_domain
 | 
					from zerver.lib.domains import validate_domain
 | 
				
			||||||
from zerver.lib.email_validation import email_allowed_for_realm
 | 
					from zerver.lib.email_validation import email_allowed_for_realm
 | 
				
			||||||
from zerver.lib.test_classes import ZulipTestCase
 | 
					from zerver.lib.test_classes import ZulipTestCase
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,12 @@ from django.core.exceptions import ValidationError
 | 
				
			|||||||
from django.http import HttpRequest, HttpResponse
 | 
					from django.http import HttpRequest, HttpResponse
 | 
				
			||||||
from django.utils.translation import gettext as _
 | 
					from django.utils.translation import gettext as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from zerver.actions.realm_domains import (
 | 
				
			||||||
 | 
					    do_add_realm_domain,
 | 
				
			||||||
 | 
					    do_change_realm_domain,
 | 
				
			||||||
 | 
					    do_remove_realm_domain,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
from zerver.decorator import require_realm_admin
 | 
					from zerver.decorator import require_realm_admin
 | 
				
			||||||
from zerver.lib.actions import do_add_realm_domain, do_change_realm_domain, do_remove_realm_domain
 | 
					 | 
				
			||||||
from zerver.lib.domains import validate_domain
 | 
					from zerver.lib.domains import validate_domain
 | 
				
			||||||
from zerver.lib.exceptions import JsonableError
 | 
					from zerver.lib.exceptions import JsonableError
 | 
				
			||||||
from zerver.lib.request import REQ, has_request_variables
 | 
					from zerver.lib.request import REQ, has_request_variables
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user