mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 08:26:11 +00:00
models: Rename RealmAlias model to RealmDomain.
Includes a migration.
This commit is contained in:
committed by
Tim Abbott
parent
7c43aa1372
commit
ac2172e233
@@ -63,7 +63,7 @@ that we process them in `do_export_realm()`:
|
|||||||
|
|
||||||
#### Public Realm Data
|
#### Public Realm Data
|
||||||
|
|
||||||
`Realm/RealmAlias/RealmEmoji/RealmFilter/DefaultStream`.
|
`Realm/RealmDomain/RealmEmoji/RealmFilter/DefaultStream`.
|
||||||
|
|
||||||
#### Cross Realm Data
|
#### Cross Realm Data
|
||||||
|
|
||||||
@@ -261,7 +261,7 @@ We have code in place to exclude `password` and `api_key` from
|
|||||||
|
|
||||||
### Public Realm Data
|
### Public Realm Data
|
||||||
|
|
||||||
- models: `Realm/RealmAlias/RealmEmoji/RealmFilter/DefaultStream`
|
- models: `Realm/RealmDomain/RealmEmoji/RealmFilter/DefaultStream`
|
||||||
- asserts: `realm.json`
|
- asserts: `realm.json`
|
||||||
|
|
||||||
All of these tables are public (per-realm), and they are keyed by
|
All of these tables are public (per-realm), and they are keyed by
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ from zerver.lib.message import (
|
|||||||
render_markdown,
|
render_markdown,
|
||||||
)
|
)
|
||||||
from zerver.lib.realm_icon import realm_icon_url
|
from zerver.lib.realm_icon import realm_icon_url
|
||||||
from zerver.models import Realm, RealmEmoji, Stream, UserProfile, UserActivity, RealmAlias, \
|
from zerver.models import Realm, RealmEmoji, Stream, UserProfile, UserActivity, RealmDomain, \
|
||||||
Subscription, Recipient, Message, Attachment, UserMessage, RealmAuditLog, UserHotspot, \
|
Subscription, Recipient, Message, Attachment, UserMessage, RealmAuditLog, UserHotspot, \
|
||||||
Client, DefaultStream, UserPresence, Referral, PushDeviceToken, MAX_SUBJECT_LENGTH, \
|
Client, DefaultStream, UserPresence, Referral, PushDeviceToken, MAX_SUBJECT_LENGTH, \
|
||||||
MAX_MESSAGE_LENGTH, get_client, get_stream, get_recipient, get_huddle, \
|
MAX_MESSAGE_LENGTH, get_client, get_stream, get_recipient, get_huddle, \
|
||||||
@@ -3219,11 +3219,11 @@ def get_emails_from_user_ids(user_ids):
|
|||||||
|
|
||||||
def get_realm_aliases(realm):
|
def get_realm_aliases(realm):
|
||||||
# type: (Realm) -> List[Dict[str, Text]]
|
# type: (Realm) -> List[Dict[str, Text]]
|
||||||
return list(realm.realmalias_set.values('domain', 'allow_subdomains'))
|
return list(realm.realmdomain_set.values('domain', 'allow_subdomains'))
|
||||||
|
|
||||||
def do_add_realm_alias(realm, domain, allow_subdomains):
|
def do_add_realm_alias(realm, domain, allow_subdomains):
|
||||||
# type: (Realm, Text, bool) -> (RealmAlias)
|
# type: (Realm, Text, bool) -> (RealmDomain)
|
||||||
alias = RealmAlias.objects.create(realm=realm, domain=domain,
|
alias = RealmDomain.objects.create(realm=realm, domain=domain,
|
||||||
allow_subdomains=allow_subdomains)
|
allow_subdomains=allow_subdomains)
|
||||||
event = dict(type="realm_domains", op="add",
|
event = dict(type="realm_domains", op="add",
|
||||||
alias=dict(domain=alias.domain,
|
alias=dict(domain=alias.domain,
|
||||||
@@ -3232,7 +3232,7 @@ def do_add_realm_alias(realm, domain, allow_subdomains):
|
|||||||
return alias
|
return alias
|
||||||
|
|
||||||
def do_change_realm_alias(alias, allow_subdomains):
|
def do_change_realm_alias(alias, allow_subdomains):
|
||||||
# type: (RealmAlias, bool) -> None
|
# type: (RealmDomain, bool) -> None
|
||||||
alias.allow_subdomains = allow_subdomains
|
alias.allow_subdomains = allow_subdomains
|
||||||
alias.save(update_fields=['allow_subdomains'])
|
alias.save(update_fields=['allow_subdomains'])
|
||||||
event = dict(type="realm_domains", op="change",
|
event = dict(type="realm_domains", op="change",
|
||||||
@@ -3241,11 +3241,11 @@ def do_change_realm_alias(alias, allow_subdomains):
|
|||||||
send_event(event, active_user_ids(alias.realm))
|
send_event(event, active_user_ids(alias.realm))
|
||||||
|
|
||||||
def do_remove_realm_alias(alias):
|
def do_remove_realm_alias(alias):
|
||||||
# type: (RealmAlias) -> None
|
# type: (RealmDomain) -> None
|
||||||
realm = alias.realm
|
realm = alias.realm
|
||||||
domain = alias.domain
|
domain = alias.domain
|
||||||
alias.delete()
|
alias.delete()
|
||||||
if RealmAlias.objects.filter(realm=realm).count() == 0 and realm.restricted_to_domain:
|
if RealmDomain.objects.filter(realm=realm).count() == 0 and realm.restricted_to_domain:
|
||||||
# If this was the last realm alias, we mark the realm as no
|
# If this was the last realm alias, we mark the realm as no
|
||||||
# longer restricted to domain, because the feature doesn't do
|
# longer restricted to domain, because the feature doesn't do
|
||||||
# anything if there are no domains, and this is probably less
|
# anything if there are no domains, and this is probably less
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ from zerver.lib.avatar_hash import user_avatar_hash
|
|||||||
from zerver.lib.create_user import random_api_key
|
from zerver.lib.create_user import random_api_key
|
||||||
from zerver.models import UserProfile, Realm, Client, Huddle, Stream, \
|
from zerver.models import UserProfile, Realm, Client, Huddle, Stream, \
|
||||||
UserMessage, Subscription, Message, RealmEmoji, RealmFilter, \
|
UserMessage, Subscription, Message, RealmEmoji, RealmFilter, \
|
||||||
RealmAlias, Recipient, DefaultStream, get_user_profile_by_id, \
|
RealmDomain, Recipient, DefaultStream, get_user_profile_by_id, \
|
||||||
UserPresence, UserActivity, UserActivityInterval, get_user_profile_by_email, \
|
UserPresence, UserActivity, UserActivityInterval, get_user_profile_by_email, \
|
||||||
get_display_recipient, Attachment
|
get_display_recipient, Attachment
|
||||||
from zerver.lib.parallel import run_parallel
|
from zerver.lib.parallel import run_parallel
|
||||||
@@ -54,7 +54,7 @@ MessageOutput = Dict[str, Any]
|
|||||||
|
|
||||||
realm_tables = [("zerver_defaultstream", DefaultStream),
|
realm_tables = [("zerver_defaultstream", DefaultStream),
|
||||||
("zerver_realmemoji", RealmEmoji),
|
("zerver_realmemoji", RealmEmoji),
|
||||||
("zerver_realmalias", RealmAlias),
|
("zerver_realmdomain", RealmDomain),
|
||||||
("zerver_realmfilter", RealmFilter)] # List[Tuple[TableName, Any]]
|
("zerver_realmfilter", RealmFilter)] # List[Tuple[TableName, Any]]
|
||||||
|
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ ALL_ZERVER_TABLES = [
|
|||||||
'zerver_preregistrationuser_streams',
|
'zerver_preregistrationuser_streams',
|
||||||
'zerver_pushdevicetoken',
|
'zerver_pushdevicetoken',
|
||||||
'zerver_realm',
|
'zerver_realm',
|
||||||
'zerver_realmalias',
|
'zerver_realmdomain',
|
||||||
'zerver_realmemoji',
|
'zerver_realmemoji',
|
||||||
'zerver_realmfilter',
|
'zerver_realmfilter',
|
||||||
'zerver_recipient',
|
'zerver_recipient',
|
||||||
@@ -386,8 +386,8 @@ def get_realm_config():
|
|||||||
)
|
)
|
||||||
|
|
||||||
Config(
|
Config(
|
||||||
table='zerver_realmalias',
|
table='zerver_realmdomain',
|
||||||
model=RealmAlias,
|
model=RealmDomain,
|
||||||
normal_parent=realm_config,
|
normal_parent=realm_config,
|
||||||
parent_key='realm_id__in',
|
parent_key='realm_id__in',
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from django.conf import settings
|
|||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.core.management.base import BaseCommand, CommandParser
|
from django.core.management.base import BaseCommand, CommandParser
|
||||||
from zerver.lib.actions import Realm, do_create_realm, set_default_streams
|
from zerver.lib.actions import Realm, do_create_realm, set_default_streams
|
||||||
from zerver.models import RealmAlias, can_add_alias, get_realm
|
from zerver.models import RealmDomain, can_add_alias, get_realm
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from django.db import connection
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from zerver.models import Realm, Stream, UserProfile, Recipient, Subscription, \
|
from zerver.models import Realm, Stream, UserProfile, Recipient, Subscription, \
|
||||||
Message, UserMessage, Huddle, DefaultStream, RealmAlias, RealmFilter, Client
|
Message, UserMessage, Huddle, DefaultStream, RealmDomain, RealmFilter, Client
|
||||||
from zerver.lib.export import do_import_realm
|
from zerver.lib.export import do_import_realm
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@@ -59,7 +59,7 @@ Usage: ./manage.py import [--destroy-rebuild-database] [--import-into-nonempty]
|
|||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
# type: (*Any, **Any) -> None
|
# type: (*Any, **Any) -> None
|
||||||
models_to_import = [Realm, Stream, UserProfile, Recipient, Subscription,
|
models_to_import = [Realm, Stream, UserProfile, Recipient, Subscription,
|
||||||
Client, Message, UserMessage, Huddle, DefaultStream, RealmAlias,
|
Client, Message, UserMessage, Huddle, DefaultStream, RealmDomain,
|
||||||
RealmFilter]
|
RealmFilter]
|
||||||
|
|
||||||
if len(args) == 0:
|
if len(args) == 0:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from django.core.management.base import BaseCommand
|
|||||||
from django.db.utils import IntegrityError
|
from django.db.utils import IntegrityError
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
from zerver.models import get_realm, can_add_alias, \
|
from zerver.models import get_realm, can_add_alias, \
|
||||||
Realm, RealmAlias
|
Realm, RealmDomain
|
||||||
from zerver.lib.actions import get_realm_aliases
|
from zerver.lib.actions import get_realm_aliases
|
||||||
from zerver.lib.domains import validate_domain
|
from zerver.lib.domains import validate_domain
|
||||||
import sys
|
import sys
|
||||||
@@ -60,7 +60,7 @@ class Command(BaseCommand):
|
|||||||
if not can_add_alias(domain):
|
if not can_add_alias(domain):
|
||||||
print(_("The domain %(domain)s belongs to another organization.") % {'domain': domain})
|
print(_("The domain %(domain)s belongs to another organization.") % {'domain': domain})
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
RealmAlias.objects.create(realm=realm, domain=domain,
|
RealmDomain.objects.create(realm=realm, domain=domain,
|
||||||
allow_subdomains=options["allow_subdomains"])
|
allow_subdomains=options["allow_subdomains"])
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
except IntegrityError:
|
except IntegrityError:
|
||||||
@@ -68,9 +68,9 @@ class Command(BaseCommand):
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
elif options["op"] == "remove":
|
elif options["op"] == "remove":
|
||||||
try:
|
try:
|
||||||
RealmAlias.objects.get(realm=realm, domain=domain).delete()
|
RealmDomain.objects.get(realm=realm, domain=domain).delete()
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
except RealmAlias.DoesNotExist:
|
except RealmDomain.DoesNotExist:
|
||||||
print("No such entry found!")
|
print("No such entry found!")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
|
|||||||
19
zerver/migrations/0071_rename_realmalias_to_realmdomain.py
Normal file
19
zerver/migrations/0071_rename_realmalias_to_realmdomain.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.5 on 2017-03-31 14:21
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('zerver', '0070_userhotspot'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameModel(
|
||||||
|
old_name='RealmAlias',
|
||||||
|
new_name='RealmDomain',
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -270,7 +270,7 @@ def get_realm(string_id):
|
|||||||
def completely_open(realm):
|
def completely_open(realm):
|
||||||
# type: (Realm) -> bool
|
# type: (Realm) -> bool
|
||||||
# This realm is completely open to everyone on the internet to
|
# This realm is completely open to everyone on the internet to
|
||||||
# join. E-mail addresses do not need to match a realmalias and
|
# join. E-mail addresses do not need to match a realmdomain and
|
||||||
# an invite from an existing user is not required.
|
# an invite from an existing user is not required.
|
||||||
if not realm:
|
if not realm:
|
||||||
return False
|
return False
|
||||||
@@ -300,7 +300,7 @@ def name_changes_disabled(realm):
|
|||||||
return settings.NAME_CHANGES_DISABLED
|
return settings.NAME_CHANGES_DISABLED
|
||||||
return settings.NAME_CHANGES_DISABLED or realm.name_changes_disabled
|
return settings.NAME_CHANGES_DISABLED or realm.name_changes_disabled
|
||||||
|
|
||||||
class RealmAlias(models.Model):
|
class RealmDomain(models.Model):
|
||||||
realm = models.ForeignKey(Realm) # type: Realm
|
realm = models.ForeignKey(Realm) # type: Realm
|
||||||
# should always be stored lowercase
|
# should always be stored lowercase
|
||||||
domain = models.CharField(max_length=80, db_index=True) # type: Text
|
domain = models.CharField(max_length=80, db_index=True) # type: Text
|
||||||
@@ -313,7 +313,7 @@ def can_add_alias(domain):
|
|||||||
# type: (Text) -> bool
|
# type: (Text) -> bool
|
||||||
if settings.REALMS_HAVE_SUBDOMAINS:
|
if settings.REALMS_HAVE_SUBDOMAINS:
|
||||||
return True
|
return True
|
||||||
if RealmAlias.objects.filter(domain=domain).exists():
|
if RealmDomain.objects.filter(domain=domain).exists():
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -341,7 +341,7 @@ def get_realm_by_email_domain(email):
|
|||||||
raise GetRealmByDomainException(
|
raise GetRealmByDomainException(
|
||||||
"Cannot get realm from email domain when settings.REALMS_HAVE_SUBDOMAINS = True")
|
"Cannot get realm from email domain when settings.REALMS_HAVE_SUBDOMAINS = True")
|
||||||
domain = email_to_domain(email)
|
domain = email_to_domain(email)
|
||||||
query = RealmAlias.objects.select_related('realm')
|
query = RealmDomain.objects.select_related('realm')
|
||||||
# Search for the longest match. If found return immediately. Since in case of
|
# Search for the longest match. If found return immediately. Since in case of
|
||||||
# settings.REALMS_HAVE_SUBDOMAINS=True, we have a unique mapping between the
|
# settings.REALMS_HAVE_SUBDOMAINS=True, we have a unique mapping between the
|
||||||
# realm and domain so don't worry about `allow_subdomains` being True or False.
|
# realm and domain so don't worry about `allow_subdomains` being True or False.
|
||||||
@@ -369,7 +369,7 @@ def email_allowed_for_realm(email, realm):
|
|||||||
if not realm.restricted_to_domain:
|
if not realm.restricted_to_domain:
|
||||||
return True
|
return True
|
||||||
domain = email_to_domain(email)
|
domain = email_to_domain(email)
|
||||||
query = RealmAlias.objects.filter(realm=realm)
|
query = RealmDomain.objects.filter(realm=realm)
|
||||||
if query.filter(domain=domain).exists():
|
if query.filter(domain=domain).exists():
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@@ -382,7 +382,7 @@ def email_allowed_for_realm(email, realm):
|
|||||||
|
|
||||||
def list_of_domains_for_realm(realm):
|
def list_of_domains_for_realm(realm):
|
||||||
# type: (Realm) -> List[Dict[str, Union[str, bool]]]
|
# type: (Realm) -> List[Dict[str, Union[str, bool]]]
|
||||||
return list(RealmAlias.objects.filter(realm=realm).values('domain', 'allow_subdomains'))
|
return list(RealmDomain.objects.filter(realm=realm).values('domain', 'allow_subdomains'))
|
||||||
|
|
||||||
class RealmEmoji(ModelReprMixin, models.Model):
|
class RealmEmoji(ModelReprMixin, models.Model):
|
||||||
author = models.ForeignKey('UserProfile', blank=True, null=True)
|
author = models.ForeignKey('UserProfile', blank=True, null=True)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from django.utils import timezone
|
|||||||
|
|
||||||
from zerver.models import (
|
from zerver.models import (
|
||||||
get_client, get_realm, get_recipient, get_stream, get_user_profile_by_email,
|
get_client, get_realm, get_recipient, get_stream, get_user_profile_by_email,
|
||||||
Message, RealmAlias, Recipient, UserMessage, UserPresence, UserProfile
|
Message, RealmDomain, Recipient, UserMessage, UserPresence, UserProfile
|
||||||
)
|
)
|
||||||
|
|
||||||
from zerver.lib.actions import (
|
from zerver.lib.actions import (
|
||||||
@@ -1155,7 +1155,7 @@ class EventsRegisterTest(ZulipTestCase):
|
|||||||
('allow_subdomains', equals(True)),
|
('allow_subdomains', equals(True)),
|
||||||
])),
|
])),
|
||||||
])
|
])
|
||||||
alias = RealmAlias.objects.get(realm=realm, domain='zulip.org')
|
alias = RealmDomain.objects.get(realm=realm, domain='zulip.org')
|
||||||
events = self.do_test(lambda: do_change_realm_alias(alias, True))
|
events = self.do_test(lambda: do_change_realm_alias(alias, True))
|
||||||
error = schema_checker('events[0]', events[0])
|
error = schema_checker('events[0]', events[0])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ from zerver.lib.test_classes import (
|
|||||||
|
|
||||||
from zerver.models import (
|
from zerver.models import (
|
||||||
MAX_MESSAGE_LENGTH, MAX_SUBJECT_LENGTH,
|
MAX_MESSAGE_LENGTH, MAX_SUBJECT_LENGTH,
|
||||||
Message, Realm, Recipient, Stream, UserMessage, UserProfile, Attachment, RealmAlias,
|
Message, Realm, Recipient, Stream, UserMessage, UserProfile, Attachment, RealmDomain,
|
||||||
get_realm, get_stream, get_user_profile_by_email,
|
get_realm, get_stream, get_user_profile_by_email,
|
||||||
Reaction, sew_messages_and_reactions
|
Reaction, sew_messages_and_reactions
|
||||||
)
|
)
|
||||||
@@ -149,7 +149,7 @@ class TestCrossRealmPMs(ZulipTestCase):
|
|||||||
def make_realm(self, domain):
|
def make_realm(self, domain):
|
||||||
# type: (Text) -> Realm
|
# type: (Text) -> Realm
|
||||||
realm = Realm.objects.create(string_id=domain, invite_required=False)
|
realm = Realm.objects.create(string_id=domain, invite_required=False)
|
||||||
RealmAlias.objects.create(realm=realm, domain=domain)
|
RealmDomain.objects.create(realm=realm, domain=domain)
|
||||||
return realm
|
return realm
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
@@ -12,17 +12,17 @@ from zerver.lib.domains import validate_domain
|
|||||||
from zerver.lib.test_classes import ZulipTestCase
|
from zerver.lib.test_classes import ZulipTestCase
|
||||||
from zerver.models import email_allowed_for_realm, get_realm, \
|
from zerver.models import email_allowed_for_realm, get_realm, \
|
||||||
get_realm_by_email_domain, get_user_profile_by_email, \
|
get_realm_by_email_domain, get_user_profile_by_email, \
|
||||||
GetRealmByDomainException, RealmAlias
|
GetRealmByDomainException, RealmDomain
|
||||||
|
|
||||||
import ujson
|
import ujson
|
||||||
|
|
||||||
|
|
||||||
class RealmAliasTest(ZulipTestCase):
|
class RealmDomainTest(ZulipTestCase):
|
||||||
def test_list_aliases(self):
|
def test_list_aliases(self):
|
||||||
# type: () -> None
|
# type: () -> None
|
||||||
self.login("iago@zulip.com")
|
self.login("iago@zulip.com")
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
RealmAlias.objects.create(realm=realm, domain='acme.com', allow_subdomains=True)
|
RealmDomain.objects.create(realm=realm, domain='acme.com', allow_subdomains=True)
|
||||||
result = self.client_get("/json/realm/domains")
|
result = self.client_get("/json/realm/domains")
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
received = ujson.dumps(ujson.loads(result.content)['domains'], sort_keys=True)
|
received = ujson.dumps(ujson.loads(result.content)['domains'], sort_keys=True)
|
||||||
@@ -53,7 +53,7 @@ class RealmAliasTest(ZulipTestCase):
|
|||||||
result = self.client_post("/json/realm/domains", info=data)
|
result = self.client_post("/json/realm/domains", info=data)
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
self.assertTrue(RealmAlias.objects.filter(realm=realm, domain='acme.com',
|
self.assertTrue(RealmDomain.objects.filter(realm=realm, domain='acme.com',
|
||||||
allow_subdomains=True).exists())
|
allow_subdomains=True).exists())
|
||||||
|
|
||||||
result = self.client_post("/json/realm/domains", info=data)
|
result = self.client_post("/json/realm/domains", info=data)
|
||||||
@@ -73,7 +73,7 @@ class RealmAliasTest(ZulipTestCase):
|
|||||||
# type: () -> None
|
# type: () -> None
|
||||||
self.login("iago@zulip.com")
|
self.login("iago@zulip.com")
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
RealmAlias.objects.create(realm=realm, domain='acme.com',
|
RealmDomain.objects.create(realm=realm, domain='acme.com',
|
||||||
allow_subdomains=False)
|
allow_subdomains=False)
|
||||||
data = {
|
data = {
|
||||||
'allow_subdomains': ujson.dumps(True),
|
'allow_subdomains': ujson.dumps(True),
|
||||||
@@ -81,7 +81,7 @@ class RealmAliasTest(ZulipTestCase):
|
|||||||
url = "/json/realm/domains/acme.com"
|
url = "/json/realm/domains/acme.com"
|
||||||
result = self.client_patch(url, data)
|
result = self.client_patch(url, data)
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
self.assertTrue(RealmAlias.objects.filter(realm=realm, domain='acme.com',
|
self.assertTrue(RealmDomain.objects.filter(realm=realm, domain='acme.com',
|
||||||
allow_subdomains=True).exists())
|
allow_subdomains=True).exists())
|
||||||
|
|
||||||
url = "/json/realm/domains/non-existent.com"
|
url = "/json/realm/domains/non-existent.com"
|
||||||
@@ -93,21 +93,21 @@ class RealmAliasTest(ZulipTestCase):
|
|||||||
# type: () -> None
|
# type: () -> None
|
||||||
self.login("iago@zulip.com")
|
self.login("iago@zulip.com")
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
RealmAlias.objects.create(realm=realm, domain='acme.com')
|
RealmDomain.objects.create(realm=realm, domain='acme.com')
|
||||||
result = self.client_delete("/json/realm/domains/non-existent.com")
|
result = self.client_delete("/json/realm/domains/non-existent.com")
|
||||||
self.assertEqual(result.status_code, 400)
|
self.assertEqual(result.status_code, 400)
|
||||||
self.assert_json_error(result, 'No entry found for domain non-existent.com.')
|
self.assert_json_error(result, 'No entry found for domain non-existent.com.')
|
||||||
|
|
||||||
result = self.client_delete("/json/realm/domains/acme.com")
|
result = self.client_delete("/json/realm/domains/acme.com")
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
self.assertFalse(RealmAlias.objects.filter(domain='acme.com').exists())
|
self.assertFalse(RealmDomain.objects.filter(domain='acme.com').exists())
|
||||||
self.assertTrue(realm.restricted_to_domain)
|
self.assertTrue(realm.restricted_to_domain)
|
||||||
|
|
||||||
def test_delete_all_aliases(self):
|
def test_delete_all_aliases(self):
|
||||||
# type: () -> None
|
# type: () -> None
|
||||||
self.login("iago@zulip.com")
|
self.login("iago@zulip.com")
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
query = RealmAlias.objects.filter(realm=realm)
|
query = RealmDomain.objects.filter(realm=realm)
|
||||||
|
|
||||||
self.assertTrue(realm.restricted_to_domain)
|
self.assertTrue(realm.restricted_to_domain)
|
||||||
for alias in query.all():
|
for alias in query.all():
|
||||||
@@ -124,9 +124,9 @@ class RealmAliasTest(ZulipTestCase):
|
|||||||
realm2, created = do_create_realm('testrealm2', 'Test Realm 2')
|
realm2, created = do_create_realm('testrealm2', 'Test Realm 2')
|
||||||
realm3, created = do_create_realm('testrealm3', 'Test Realm 3')
|
realm3, created = do_create_realm('testrealm3', 'Test Realm 3')
|
||||||
|
|
||||||
alias1 = RealmAlias.objects.create(realm=realm1, domain='test1.com', allow_subdomains=True)
|
alias1 = RealmDomain.objects.create(realm=realm1, domain='test1.com', allow_subdomains=True)
|
||||||
alias2 = RealmAlias.objects.create(realm=realm2, domain='test2.test1.com', allow_subdomains=False)
|
alias2 = RealmDomain.objects.create(realm=realm2, domain='test2.test1.com', allow_subdomains=False)
|
||||||
RealmAlias.objects.create(realm=realm3, domain='test3.test2.test1.com', allow_subdomains=True)
|
RealmDomain.objects.create(realm=realm3, domain='test3.test2.test1.com', allow_subdomains=True)
|
||||||
|
|
||||||
def assert_and_check(email, realm_string_id):
|
def assert_and_check(email, realm_string_id):
|
||||||
# type: (Text, Optional[Text]) -> None
|
# type: (Text, Optional[Text]) -> None
|
||||||
@@ -163,8 +163,8 @@ class RealmAliasTest(ZulipTestCase):
|
|||||||
realm1, created = do_create_realm('testrealm1', 'Test Realm 1', restricted_to_domain=True)
|
realm1, created = do_create_realm('testrealm1', 'Test Realm 1', restricted_to_domain=True)
|
||||||
realm2, created = do_create_realm('testrealm2', 'Test Realm 2', restricted_to_domain=True)
|
realm2, created = do_create_realm('testrealm2', 'Test Realm 2', restricted_to_domain=True)
|
||||||
|
|
||||||
alias = RealmAlias.objects.create(realm=realm1, domain='test1.com', allow_subdomains=False)
|
alias = RealmDomain.objects.create(realm=realm1, domain='test1.com', allow_subdomains=False)
|
||||||
RealmAlias.objects.create(realm=realm2, domain='test2.test1.com', allow_subdomains=True)
|
RealmDomain.objects.create(realm=realm2, domain='test2.test1.com', allow_subdomains=True)
|
||||||
|
|
||||||
self.assertEqual(email_allowed_for_realm('user@test1.com', realm1), True)
|
self.assertEqual(email_allowed_for_realm('user@test1.com', realm1), True)
|
||||||
self.assertEqual(email_allowed_for_realm('user@test2.test1.com', realm1), False)
|
self.assertEqual(email_allowed_for_realm('user@test2.test1.com', realm1), False)
|
||||||
@@ -181,7 +181,7 @@ class RealmAliasTest(ZulipTestCase):
|
|||||||
# type: () -> None
|
# type: () -> None
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
with self.settings(REALMS_HAVE_SUBDOMAINS=True), self.assertRaises(IntegrityError):
|
with self.settings(REALMS_HAVE_SUBDOMAINS=True), self.assertRaises(IntegrityError):
|
||||||
RealmAlias.objects.create(realm=realm, domain='zulip.com', allow_subdomains=True)
|
RealmDomain.objects.create(realm=realm, domain='zulip.com', allow_subdomains=True)
|
||||||
|
|
||||||
def test_validate_domain(self):
|
def test_validate_domain(self):
|
||||||
# type: () -> None
|
# type: () -> None
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ from zerver.views.registration import confirmation_key
|
|||||||
from zerver.models import (
|
from zerver.models import (
|
||||||
get_realm, get_prereg_user_by_email, get_user_profile_by_email,
|
get_realm, get_prereg_user_by_email, get_user_profile_by_email,
|
||||||
get_unique_open_realm, completely_open,
|
get_unique_open_realm, completely_open,
|
||||||
PreregistrationUser, Realm, RealmAlias, Recipient,
|
PreregistrationUser, Realm, RealmDomain, Recipient,
|
||||||
Referral, ScheduledJob, UserProfile, UserMessage,
|
Referral, ScheduledJob, UserProfile, UserMessage,
|
||||||
Stream, Subscription, ScheduledJob
|
Stream, Subscription, ScheduledJob
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ from zerver.lib.test_classes import (
|
|||||||
from zerver.lib.test_runner import slow
|
from zerver.lib.test_runner import slow
|
||||||
|
|
||||||
from zerver.models import UserProfile, Recipient, \
|
from zerver.models import UserProfile, Recipient, \
|
||||||
Realm, RealmAlias, UserActivity, \
|
Realm, RealmDomain, UserActivity, \
|
||||||
get_user_profile_by_email, get_realm, get_client, get_stream, \
|
get_user_profile_by_email, get_realm, get_client, get_stream, \
|
||||||
Message, get_context_for_message
|
Message, get_context_for_message
|
||||||
|
|
||||||
@@ -216,7 +216,7 @@ class AdminCreateUserTest(ZulipTestCase):
|
|||||||
self.assert_json_error(result,
|
self.assert_json_error(result,
|
||||||
"Email 'romeo@not-zulip.com' not allowed for realm 'zulip'")
|
"Email 'romeo@not-zulip.com' not allowed for realm 'zulip'")
|
||||||
|
|
||||||
RealmAlias.objects.create(realm=get_realm('zulip'), domain='zulip.net')
|
RealmDomain.objects.create(realm=get_realm('zulip'), domain='zulip.net')
|
||||||
|
|
||||||
# HAPPY PATH STARTS HERE
|
# HAPPY PATH STARTS HERE
|
||||||
valid_params = dict(
|
valid_params = dict(
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from zerver.decorator import zulip_login_required, process_client
|
|||||||
from zerver.forms import ToSForm
|
from zerver.forms import ToSForm
|
||||||
from zerver.lib.realm_icon import realm_icon_url
|
from zerver.lib.realm_icon import realm_icon_url
|
||||||
from zerver.models import Message, UserProfile, Stream, Subscription, Huddle, \
|
from zerver.models import Message, UserProfile, Stream, Subscription, Huddle, \
|
||||||
Recipient, Realm, UserMessage, DefaultStream, RealmEmoji, RealmAlias, \
|
Recipient, Realm, UserMessage, DefaultStream, RealmEmoji, RealmDomain, \
|
||||||
RealmFilter, PreregistrationUser, UserActivity, \
|
RealmFilter, PreregistrationUser, UserActivity, \
|
||||||
UserPresence, get_recipient, name_changes_disabled, email_to_username, \
|
UserPresence, get_recipient, name_changes_disabled, email_to_username, \
|
||||||
list_of_domains_for_realm
|
list_of_domains_for_realm
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ from zerver.lib.utils import statsd
|
|||||||
from zerver.lib.validator import \
|
from zerver.lib.validator import \
|
||||||
check_list, check_int, check_dict, check_string, check_bool
|
check_list, check_int, check_dict, check_string, check_bool
|
||||||
from zerver.models import Message, UserProfile, Stream, Subscription, \
|
from zerver.models import Message, UserProfile, Stream, Subscription, \
|
||||||
Realm, RealmAlias, Recipient, UserMessage, bulk_get_recipients, get_recipient, \
|
Realm, RealmDomain, Recipient, UserMessage, bulk_get_recipients, get_recipient, \
|
||||||
get_user_profile_by_email, get_stream, \
|
get_user_profile_by_email, get_stream, \
|
||||||
parse_usermessage_flags, \
|
parse_usermessage_flags, \
|
||||||
email_to_domain, get_realm, get_active_streams, \
|
email_to_domain, get_realm, get_active_streams, \
|
||||||
@@ -777,10 +777,10 @@ def same_realm_zephyr_user(user_profile, email):
|
|||||||
|
|
||||||
domain = email_to_domain(email)
|
domain = email_to_domain(email)
|
||||||
|
|
||||||
# Assumes allow_subdomains=False for all RealmAlias's corresponding to
|
# Assumes allow_subdomains=False for all RealmDomain's corresponding to
|
||||||
# these realms.
|
# these realms.
|
||||||
return user_profile.realm.is_zephyr_mirror_realm and \
|
return user_profile.realm.is_zephyr_mirror_realm and \
|
||||||
RealmAlias.objects.filter(realm=user_profile.realm, domain=domain).exists()
|
RealmDomain.objects.filter(realm=user_profile.realm, domain=domain).exists()
|
||||||
|
|
||||||
def same_realm_irc_user(user_profile, email):
|
def same_realm_irc_user(user_profile, email):
|
||||||
# type: (UserProfile, Text) -> bool
|
# type: (UserProfile, Text) -> bool
|
||||||
@@ -794,9 +794,9 @@ def same_realm_irc_user(user_profile, email):
|
|||||||
|
|
||||||
domain = email_to_domain(email).replace("irc.", "")
|
domain = email_to_domain(email).replace("irc.", "")
|
||||||
|
|
||||||
# Assumes allow_subdomains=False for all RealmAlias's corresponding to
|
# Assumes allow_subdomains=False for all RealmDomain's corresponding to
|
||||||
# these realms.
|
# these realms.
|
||||||
return RealmAlias.objects.filter(realm=user_profile.realm, domain=domain).exists()
|
return RealmDomain.objects.filter(realm=user_profile.realm, domain=domain).exists()
|
||||||
|
|
||||||
def same_realm_jabber_user(user_profile, email):
|
def same_realm_jabber_user(user_profile, email):
|
||||||
# type: (UserProfile, Text) -> bool
|
# type: (UserProfile, Text) -> bool
|
||||||
@@ -809,9 +809,9 @@ def same_realm_jabber_user(user_profile, email):
|
|||||||
# Zulip users, this is where you would do any translation.
|
# Zulip users, this is where you would do any translation.
|
||||||
domain = email_to_domain(email)
|
domain = email_to_domain(email)
|
||||||
|
|
||||||
# Assumes allow_subdomains=False for all RealmAlias's corresponding to
|
# Assumes allow_subdomains=False for all RealmDomain's corresponding to
|
||||||
# these realms.
|
# these realms.
|
||||||
return RealmAlias.objects.filter(realm=user_profile.realm, domain=domain).exists()
|
return RealmDomain.objects.filter(realm=user_profile.realm, domain=domain).exists()
|
||||||
|
|
||||||
# We do not @require_login for send_message_backend, since it is used
|
# We do not @require_login for send_message_backend, since it is used
|
||||||
# both from the API and the web service. Code calling
|
# both from the API and the web service. Code calling
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from zerver.lib.actions import do_add_realm_alias, do_change_realm_alias, \
|
|||||||
from zerver.lib.domains import validate_domain
|
from zerver.lib.domains import validate_domain
|
||||||
from zerver.lib.response import json_error, json_success
|
from zerver.lib.response import json_error, json_success
|
||||||
from zerver.lib.validator import check_bool, check_string
|
from zerver.lib.validator import check_bool, check_string
|
||||||
from zerver.models import can_add_alias, RealmAlias, UserProfile
|
from zerver.models import can_add_alias, RealmDomain, UserProfile
|
||||||
|
|
||||||
from typing import Text
|
from typing import Text
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ def create_alias(request, user_profile, domain=REQ(validator=check_string), allo
|
|||||||
validate_domain(domain)
|
validate_domain(domain)
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
return json_error(_('Invalid domain: {}').format(e.messages[0]))
|
return json_error(_('Invalid domain: {}').format(e.messages[0]))
|
||||||
if RealmAlias.objects.filter(realm=user_profile.realm, domain=domain).exists():
|
if RealmDomain.objects.filter(realm=user_profile.realm, domain=domain).exists():
|
||||||
return json_error(_("The domain %(domain)s is already a part of your organization.") % {'domain': domain})
|
return json_error(_("The domain %(domain)s is already a part of your organization.") % {'domain': domain})
|
||||||
if not can_add_alias(domain):
|
if not can_add_alias(domain):
|
||||||
return json_error(_("The domain %(domain)s belongs to another organization.") % {'domain': domain})
|
return json_error(_("The domain %(domain)s belongs to another organization.") % {'domain': domain})
|
||||||
@@ -40,9 +40,9 @@ def create_alias(request, user_profile, domain=REQ(validator=check_string), allo
|
|||||||
def patch_alias(request, user_profile, domain, allow_subdomains=REQ(validator=check_bool)):
|
def patch_alias(request, user_profile, domain, allow_subdomains=REQ(validator=check_bool)):
|
||||||
# type: (HttpRequest, UserProfile, Text, bool) -> (HttpResponse)
|
# type: (HttpRequest, UserProfile, Text, bool) -> (HttpResponse)
|
||||||
try:
|
try:
|
||||||
alias = RealmAlias.objects.get(realm=user_profile.realm, domain=domain)
|
alias = RealmDomain.objects.get(realm=user_profile.realm, domain=domain)
|
||||||
do_change_realm_alias(alias, allow_subdomains)
|
do_change_realm_alias(alias, allow_subdomains)
|
||||||
except RealmAlias.DoesNotExist:
|
except RealmDomain.DoesNotExist:
|
||||||
return json_error(_('No entry found for domain %(domain)s.' % {'domain': domain}))
|
return json_error(_('No entry found for domain %(domain)s.' % {'domain': domain}))
|
||||||
return json_success()
|
return json_success()
|
||||||
|
|
||||||
@@ -51,8 +51,8 @@ def patch_alias(request, user_profile, domain, allow_subdomains=REQ(validator=ch
|
|||||||
def delete_alias(request, user_profile, domain):
|
def delete_alias(request, user_profile, domain):
|
||||||
# type: (HttpRequest, UserProfile, Text) -> (HttpResponse)
|
# type: (HttpRequest, UserProfile, Text) -> (HttpResponse)
|
||||||
try:
|
try:
|
||||||
alias = RealmAlias.objects.get(realm=user_profile.realm, domain=domain)
|
alias = RealmDomain.objects.get(realm=user_profile.realm, domain=domain)
|
||||||
do_remove_realm_alias(alias)
|
do_remove_realm_alias(alias)
|
||||||
except RealmAlias.DoesNotExist:
|
except RealmDomain.DoesNotExist:
|
||||||
return json_error(_('No entry found for domain %(domain)s.' % {'domain': domain}))
|
return json_error(_('No entry found for domain %(domain)s.' % {'domain': domain}))
|
||||||
return json_success()
|
return json_success()
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from django.core.management.base import BaseCommand, CommandParser
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from zerver.models import Message, UserProfile, Stream, Recipient, UserPresence, \
|
from zerver.models import Message, UserProfile, Stream, Recipient, UserPresence, \
|
||||||
Subscription, get_huddle, Realm, UserMessage, RealmAlias, \
|
Subscription, get_huddle, Realm, UserMessage, RealmDomain, \
|
||||||
clear_database, get_client, get_user_profile_by_id, \
|
clear_database, get_client, get_user_profile_by_id, \
|
||||||
email_to_username
|
email_to_username
|
||||||
from zerver.lib.actions import STREAM_ASSIGNMENT_COLORS, do_send_messages, \
|
from zerver.lib.actions import STREAM_ASSIGNMENT_COLORS, do_send_messages, \
|
||||||
@@ -125,12 +125,12 @@ class Command(BaseCommand):
|
|||||||
zulip_realm = Realm.objects.create(
|
zulip_realm = Realm.objects.create(
|
||||||
string_id="zulip", name="Zulip Dev", restricted_to_domain=True,
|
string_id="zulip", name="Zulip Dev", restricted_to_domain=True,
|
||||||
invite_required=False, org_type=Realm.CORPORATE)
|
invite_required=False, org_type=Realm.CORPORATE)
|
||||||
RealmAlias.objects.create(realm=zulip_realm, domain="zulip.com")
|
RealmDomain.objects.create(realm=zulip_realm, domain="zulip.com")
|
||||||
if options["test_suite"]:
|
if options["test_suite"]:
|
||||||
mit_realm = Realm.objects.create(
|
mit_realm = Realm.objects.create(
|
||||||
string_id="zephyr", name="MIT", restricted_to_domain=True,
|
string_id="zephyr", name="MIT", restricted_to_domain=True,
|
||||||
invite_required=False, org_type=Realm.CORPORATE)
|
invite_required=False, org_type=Realm.CORPORATE)
|
||||||
RealmAlias.objects.create(realm=mit_realm, domain="mit.edu")
|
RealmDomain.objects.create(realm=mit_realm, domain="mit.edu")
|
||||||
|
|
||||||
# Create test Users (UserProfiles are automatically created,
|
# Create test Users (UserProfiles are automatically created,
|
||||||
# as are subscriptions to the ability to receive personals).
|
# as are subscriptions to the ability to receive personals).
|
||||||
|
|||||||
Reference in New Issue
Block a user