def zone_write(request): if request.method == 'POST': dns_zone_id = request.data.get('dns_zone_id', 0) dns_reload = request.data.get('reload', 0) dns_reload = True if dns_reload else False dns_backup = request.data.get('backup', 0) dns_backup = True if dns_backup else False force = 1 owner = 0 if is_dba(request): owner = 3 force = 0 try: model = DnsZone.objects.get(id=dns_zone_id) except DnsZone.DoesNotExist: return Response('Zone文件不存在,可能已经删除', status=status.HTTP_404_NOT_FOUND) zone = Zone(model) zone.owner = owner zone.user = request.user.username try: zone.validate(dns_reload, dns_backup, force=force) except ZoneException as e: response = Response(str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR) else: response = Response('生效Zone文件成功', status=status.HTTP_200_OK) return response
def get_queryset(self): queryset = self.queryset if is_dba(self.request): owner = 3 # dns_owner表:DB管理员owner字段值 items = DnsOwner.objects.filter(owner=owner) zone_ids = set([item.dns_zone_id for item in items]) queryset = queryset.filter(id__in=zone_ids) return queryset
def get_queryset(self): queryset = self.queryset request = self.request dns_zone_id = request.GET.get('dns_zone_id', 0) owner = None if is_dba(request): # DB管理员所属组 owner = 3 # owner = 3 # debug_fxc if owner: queryset = queryset.filter(owner=owner) queryset = queryset.filter(dns_zone_id=dns_zone_id) return queryset
def record_list(request): if request.method == 'GET': dns_zone_id = request.GET.get('dns_zone_id', 0) owner = None if is_dba(request): # DB管理员所属组 owner = 3 # owner = 3 # debug search = request.GET.get('search', '').strip() try: model = DnsZone.objects.get(id=dns_zone_id) except DnsZone.DoesNotExist: return Response('Zone文件不存在', status=status.HTTP_404_NOT_FOUND) zone = Zone(model) if owner is not None: zone.owner = owner records = zone.get_records(search, whole=False) else: records = zone.get_records(search) id_ = request.GET.get('id', None) id_ = int(id_) if id_ and id_.isdigit() else None if id_ is not None: result = None for record in records: if record['id'] == id_: result = record break if result is not None: return Response(result, status=status.HTTP_200_OK) else: # 可能有问题!!!!! return Response('记录不存在,可能已被删除', status=status.HTTP_404_NOT_FOUND) else: return Response({'count': len(records), 'results': records})
def history(request): if request.method == 'GET': req = request.REQUEST limit = req.get('limit', 10) zone_id = req.get('dns_zone_id', 0) owner = None if is_dba(request): owner = 3 try: model = DnsZone.objects.get(id=zone_id) except DnsZone.DoesNotExist: return Response('Zone文件不存在,可能已经删除' + str(zone_id), status=status.HTTP_404_NOT_FOUND) zone = Zone(model) if owner is None: items = zone.get_history(limit=limit) else: zone.owner = owner items = zone.get_history(limit=limit, whole=False) lists = [] for item in items: old_data = item['old_data'] or {} new_data = item['new_data'] or {} old_domain = old_data.get('domain', '') old_ttl = old_data.get('ttl', '') old_rrtype = old_data.get('rrtype', '') old_rrdata = old_data.get('rrdata', '') new_domain = new_data.get('domain', '') new_ttl = new_data.get('ttl', '') new_rrtype = new_data.get('rrtype', '') new_rrdata = new_data.get('rrdata', '') diff = '' if old_domain != new_domain: diff += '域名: {0}\t=>\t{1}\n'.format(old_domain, new_domain) if old_ttl != new_ttl: diff += 'TTL: {0}\t=>\t{1}\n'.format(old_ttl, new_ttl) if old_rrtype != new_rrtype: diff += '类型: {0}\t=>\t{1}\n'.format(old_rrtype, new_rrtype) if old_rrdata != new_rrdata: diff += '值: {0}\t=>\t{1}\n'.format(old_rrdata, new_rrdata) lists.append({ 'id': item['id'], 'dns_zone_id': item['dns_zone_id'], 'dns_record_id': item['dns_record_id'], 'old_domain': old_domain, 'new_domain': new_domain, 'action': item['action'], 'username': item['username'], 'ctime': item['ctime_date'], 'stamp': stamp2str(item['ctime'], '%Y%m%d%H%M'), 'diff': diff }) return Response({ 'results': lists, 'count': len(lists) }, status=status.HTTP_200_OK)