# -*- coding: utf-8 -*- # import random from django.db import models from django.utils.translation import ugettext_lazy as _ from common.utils import get_logger from orgs.mixins.models import JMSOrgBaseModel from .gateway import Gateway logger = get_logger(__file__) __all__ = ['Domain'] class Domain(JMSOrgBaseModel): name = models.CharField(max_length=128, verbose_name=_('Name')) class Meta: verbose_name = _("Domain") unique_together = [('org_id', 'name')] ordering = ('name',) def __str__(self): return self.name def select_gateway(self): return self.random_gateway() def random_gateway(self): gateways = [gw for gw in self.active_gateways if gw.is_connective] if not gateways: logger.warn(f'Gateway all bad. domain={self}, gateway_num={len(gateways)}.') gateways = self.active_gateways if not gateways: logger.warn(f'Not active gateway. domain={self}') return None return random.choice(gateways) @property def active_gateways(self): return self.gateways.filter(is_active=True) @property def gateways(self): queryset = self.get_gateway_queryset().filter(domain=self) return queryset @classmethod def get_gateway_queryset(cls): return Gateway.objects.all()