def add_user_dns_zone(user_id, domain_id, ttl, retry, refresh, rname, expire, record_ttl, comment=""): if is_positive_numeric(user_id) is not True: raise Invalid("User id must be positive integer") elif is_positive_numeric(domain_id) is not True: raise Invalid("User id must be positive integer") domain_q = DomainDatabase.query() domain_q = domain_q.filter(DomainDatabase.user_id == user_id) domain_q = domain_q.filter(DomainDatabase.id == domain_id) try: domain = domain_q.one() except NoResultFound: raise DoesNotExist("Domain id=%s does not exist" % domain_id) try: get_dns_zone(user_id, domain_id) raise AlreadyExist("DNS zone already added for domain id=%s" % domain_id) except DoesNotExist: pass zone = DNSZoneDatabase() zone.domain_id = domain.id zone.refresh = refresh zone.retry = retry zone.expire = expire zone.ttl = ttl zone.rname = rname zone.record_ttl = record_ttl zone.comment = comment zone.save() return zone
def delete_dns_zone(user_id, domain_id): """ Delete dns zone and all it's records """ if is_positive_numeric(user_id) is not True: raise Invalid("User id must be positive integer") elif is_positive_numeric(domain_id) is not True: raise Invalid("User id must be positive integer") zone = get_dns_zone(user_id, domain_id) records = DNSRecordDatabase.query().filter(DNSRecordDatabase.dns_zone_id == zone.id).all() for record in records: record.delete() zone.delete() return
def get_dns_zone(user_id, domain_id, limit=None, offset=None): if is_positive_numeric(user_id) is not True: raise Invalid("User id must be positive integer") elif is_positive_numeric(domain_id) is not True: raise Invalid("User id must be positive integer") zonequery = DNSZoneDatabase.query() zonequery = zonequery.filter(DNSZoneDatabase.domain_id == domain_id) zonequery = zonequery.filter(DNSZoneDatabase.domain.has(DomainDatabase.user_id == user_id)) zonequery = do_limits(zonequery, limit, offset) try: return zonequery.one() except NoResultFound: pass raise DoesNotExist("DNS entry for domain %s does not exist" % domain_id)
def delete_dns_zone(user_id, domain_id): """ Delete dns zone and all it's records """ if is_positive_numeric(user_id) is not True: raise Invalid('User id must be positive integer') elif is_positive_numeric(domain_id) is not True: raise Invalid('User id must be positive integer') zone = get_dns_zone(user_id, domain_id) records = DNSRecordDatabase.query().filter( DNSRecordDatabase.dns_zone_id == zone.id).all() for record in records: record.delete() zone.delete() return
def get_dns_zone(user_id, domain_id, limit=None, offset=None): if is_positive_numeric(user_id) is not True: raise Invalid('User id must be positive integer') elif is_positive_numeric(domain_id) is not True: raise Invalid('User id must be positive integer') zonequery = DNSZoneDatabase.query() zonequery = zonequery.filter(DNSZoneDatabase.domain_id == domain_id) zonequery = zonequery.filter( DNSZoneDatabase.domain.has(DomainDatabase.user_id == user_id)) zonequery = do_limits(zonequery, limit, offset) try: return zonequery.one() except NoResultFound: pass raise DoesNotExist("DNS entry for domain %s does not exist" % domain_id)
def do_limits(query, limit, offset=None): """ Apply limit and offset to query @raises Invalid: if limit is not None of positive integer """ if limit: if is_positive_numeric(limit) is not True: raise Invalid('Limit must be positive integer') query = query.limit(int(limit)) if offset: if is_positive_numeric(offset) is not True: raise Invalid('Lower limit must be positive integer') query = query.offset(int(offset)) return query
def get_domains(user_id=None, limit=None, offset=None): query = DomainDatabase.query() if user_id is not None: if is_positive_numeric(user_id) is not True: raise Invalid('User id must be positive integer') query = query.filter(DomainDatabase.user_id == user_id) query = do_limits(query, limit, offset) return query.all()
def get_domains(user_id=None, limit=None, offset=None): query = DomainDatabase.query() if user_id is not None: if is_positive_numeric(user_id) is not True: raise Invalid('User id must be positive integer') query = query.filter(DomainDatabase.user_id==user_id) query = do_limits(query, limit, offset) return query.all()
def get_user_domains(user_id, limit=None, offset=None): """ Get user `user_id` domains. @param user_id: user user_id @type user_id: positive integer @param limit: how many entries to return @type limit: positive integer @param offset: offset in limit @type offset: positive integer """ if is_positive_numeric(user_id) is not True: raise Invalid('User id must be positive integer') return get_domains(user_id=user_id, limit=limit, offset=offset)
def add_user_dns_zone(user_id, domain_id, ttl, retry, refresh, rname, expire, record_ttl, comment=''): if is_positive_numeric(user_id) is not True: raise Invalid('User id must be positive integer') elif is_positive_numeric(domain_id) is not True: raise Invalid('User id must be positive integer') domain_q = DomainDatabase.query() domain_q = domain_q.filter(DomainDatabase.user_id == user_id) domain_q = domain_q.filter(DomainDatabase.id == domain_id) try: domain = domain_q.one() except NoResultFound: raise DoesNotExist("Domain id=%s does not exist" % domain_id) try: get_dns_zone(user_id, domain_id) raise AlreadyExist("DNS zone already added for domain id=%s" % domain_id) except DoesNotExist: pass zone = DNSZoneDatabase() zone.domain_id = domain.id zone.refresh = refresh zone.retry = retry zone.expire = expire zone.ttl = ttl zone.rname = rname zone.record_ttl = record_ttl zone.comment = comment zone.save() return zone