Esempio n. 1
0
    def get_domain_list(self, in_global_acl=False):
        search = request.args.get('search', None)

        if self.auth.account.account_type == 'senior_admin' or in_global_acl:
            query = ModelDomain.select()
            if (search is not None):
                search = search.replace('*', '%')
                query = query.where((ModelDomain.domain**('%' + search + '%')))
            return query

        # domain group maps query
        dgmq = DomainGroupMap.select(DomainGroupMap.domain_id).where(
            DomainGroupMap.group_id << self.get_group_maps())

        # domains query
        domainQuery = ModelDomain.select().where(
            ((ModelDomain.owner_id == self.auth.account.account_id) |
             (ModelDomain.domain_id << dgmq)))

        if (search is not None):
            search = search.replace('*', '%')
            domainQuery = domainQuery.where(
                (ModelDomain.domain**(search + '%')))

        return domainQuery
Esempio n. 2
0
    def get_domain_list(self):
        search = request.args.get('search', None)

        if self.auth.account.account_type == 'senior_admin':
            query = ModelDomain.select()
            if (search is not None):
                search = search.replace('*', '%')
                query = query.where(
                    (ModelDomain.domain ** ('%' + search + '%'))
                )
            return query

        # domain group maps query
        dgmq = DomainGroupMap.select(DomainGroupMap.domain_id).where(
            DomainGroupMap.group_id << self.get_group_maps()
        )

        # domains query
        domainQuery = ModelDomain.select().where(
            (
                (ModelDomain.owner_id == self.auth.account.account_id) |
                (ModelDomain.domain_id << dgmq)
            )
        )

        if (search is not None):
            search = search.replace('*', '%')
            domainQuery = domainQuery.where(
                (ModelDomain.domain ** (search + '%'))
            )

        return domainQuery
Esempio n. 3
0
    def delete(self, account_id):
        if self.auth.account.account_type != "senior_admin":
            abort(403, message="Insufficient privileges to delete account")

        if self.auth.account.account_id == account_id:
            abort(400, message="Sorry, you can't delete yourself")

        try:
            account = ModelAccount.get(ModelAccount.account_id == account_id)
        except peewee.DoesNotExist:
            abort(404, message="account does not exist")

        # update existing domains to be owned by account 0
        domains = ModelDomain.select().where(
            ModelDomain.owner_id == account_id
        )
        for domain in domains:
            domain.owner_id == 0
            domain.save()

        account.delete_instance()

        self.dns_log(
            0,
            (
                "deleted account " + account.first_name + " " +
                account.last_name + ", " + account.email
            )
        )

        return {'status': 'ok'}
Esempio n. 4
0
    def load_domains(self):
        # reset
        self.domains = {}

        # look up my group ids
        accountgroupmaps = AccountGroupMap.select(
            AccountGroupMap.group_id).where(
                AccountGroupMap.account_id == self.account_id)
        group_ids = []
        for map in accountgroupmaps:
            group_ids.append(map.group_id)

        # get domain group maps
        if group_ids:
            domaingroupmaps = DomainGroupMap.select(
                DomainGroupMap,
                Domain).where(DomainGroupMap.group_id << group_ids).join(
                    Domain,
                    on=Domain.domain_id == DomainGroupMap.domain_id,
                    attr='domain_id')

            # store the maps by domain id for the can_* methods below
            for map in domaingroupmaps:
                did = map.domain_id.domain_id
                if map.domain_id.domain_id not in self.domains:
                    self.domains[did] = {'domain': map.domain_id, 'maps': []}
                self.domains[did]["maps"].append(map)

        # grab domains this user owns
        domains = Domain.select(Domain).where(
            Domain.owner_id == self.account_id)

        for domain in domains:
            if domain.domain_id not in self.domains:
                self.domains[domain.domain_id] = {'domain': domain, 'maps': []}
Esempio n. 5
0
    def load_domains(self):
        # reset
        self.domains = {}

        # look up my group ids
        accountgroupmaps = AccountGroupMap.select(
            AccountGroupMap.group_id
        ).where(
            AccountGroupMap.account_id == self.account_id
        )
        group_ids = []
        for map in accountgroupmaps:
            group_ids.append(map.group_id)

        # get domain group maps
        if group_ids:
            domaingroupmaps = DomainGroupMap.select(
                DomainGroupMap, Domain
            ).where(
                DomainGroupMap.group_id << group_ids
            ).join(
                Domain,
                on=Domain.domain_id == DomainGroupMap.domain_id
            )

            # store the maps by domain id for the can_* methods below
            for map in domaingroupmaps:
                did = map.domain_id.domain_id
                if map.domain_id.domain_id not in self.domains:
                    self.domains[did] = {
                        'domain': map.domain_id,
                        'maps': []
                    }
                self.domains[did]["maps"].append(map)

        # grab domains this user owns
        domains = Domain.select(
            Domain
        ).where(
            Domain.owner_id == self.account_id
        )

        for domain in domains:
            if domain.domain_id not in self.domains:
                self.domains[domain.domain_id] = {
                    'domain': domain,
                    'maps': []
                }
Esempio n. 6
0
    def delete(self, account_id):
        if self.auth.account.account_type != "senior_admin":
            abort(403, message="Insufficient privileges to delete account")

        if self.auth.account.account_id == account_id:
            abort(400, message="Sorry, you can't delete yourself")

        try:
            account = ModelAccount.get(ModelAccount.account_id == account_id)
        except peewee.DoesNotExist:
            abort(404, message="account does not exist")

        # update existing domains to be owned by account 0
        domains = ModelDomain.select().where(
            ModelDomain.owner_id == account_id
        )
        for domain in domains:
            domain.owner_id == 0
            domain.save()

        account.delete_instance()

        return {'status': 'ok'}