From a9abc440cc0c411f9975e1827d71776364bdb659 Mon Sep 17 00:00:00 2001 From: Ken Raffenetti Date: Wed, 27 Sep 2006 22:23:58 +0000 Subject: changes in database models for zone information git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@2335 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Hostbase/hostbase/models.py | 11 +- src/lib/Server/Hostbase/hostbase/views.py | 63 ++++++--- .../Hostbase/hostbase/webtemplates/confirm.html | 3 +- .../Server/Hostbase/hostbase/webtemplates/dns.html | 3 +- .../Hostbase/hostbase/webtemplates/dnsedit.html | 3 +- .../Hostbase/hostbase/webtemplates/edit.html | 8 +- .../Hostbase/hostbase/webtemplates/errors.html | 3 +- .../Hostbase/hostbase/webtemplates/host.html | 3 +- .../Server/Hostbase/hostbase/webtemplates/navbar | 2 + .../Hostbase/hostbase/webtemplates/results.html | 3 +- .../Hostbase/hostbase/webtemplates/zoneedit.html | 146 +++++++++++++++++++++ .../Hostbase/hostbase/webtemplates/zones.html | 37 ++++++ .../Hostbase/hostbase/webtemplates/zoneview.html | 66 ++++++++++ src/lib/Server/Hostbase/urls.py | 4 +- src/lib/Server/Plugins/Hostbase.py | 2 +- 15 files changed, 318 insertions(+), 39 deletions(-) create mode 100644 src/lib/Server/Hostbase/hostbase/webtemplates/navbar create mode 100644 src/lib/Server/Hostbase/hostbase/webtemplates/zoneedit.html create mode 100644 src/lib/Server/Hostbase/hostbase/webtemplates/zones.html create mode 100644 src/lib/Server/Hostbase/hostbase/webtemplates/zoneview.html diff --git a/src/lib/Server/Hostbase/hostbase/models.py b/src/lib/Server/Hostbase/hostbase/models.py index 7c47b65bd..3216944ea 100644 --- a/src/lib/Server/Hostbase/hostbase/models.py +++ b/src/lib/Server/Hostbase/hostbase/models.py @@ -141,6 +141,15 @@ class Nameserver(models.Model): class Admin: pass +class ZoneAddress(models.Model): + ip_addr = models.IPAddressField() + + def __str__(self): + return self.ip_addr + + class Admin: + pass + class Zone(models.Model): zone = models.CharField(maxlength=64) serial = models.IntegerField() @@ -152,7 +161,7 @@ class Zone(models.Model): ttl = models.IntegerField() nameservers = models.ManyToManyField(Nameserver) mxs = models.ManyToManyField(MX) - addresses = models.ManyToManyField(IP, blank=True) + addresses = models.ManyToManyField(ZoneAddress, blank=True) aux = models.TextField(blank=True) def __str__(self): diff --git a/src/lib/Server/Hostbase/hostbase/views.py b/src/lib/Server/Hostbase/hostbase/views.py index 757b43da0..e9673e0a1 100644 --- a/src/lib/Server/Hostbase/hostbase/views.py +++ b/src/lib/Server/Hostbase/hostbase/views.py @@ -16,6 +16,9 @@ attribs = ['hostname', 'whatami', 'netgroup', 'security_class', 'support', 'csi', 'printq', 'primary_user', 'administrator', 'location', 'comments', 'status'] +zoneattribs = ['zone', 'admin', 'primary_master', 'expire', 'retry', + 'refresh', 'ttl', 'aux'] + dispatch = {'mac_addr':'i.mac_addr LIKE \'%%%%%s%%%%\'', 'ip_addr':'p.ip_addr LIKE \'%%%%%s%%%%\'', 'name':'n.name LIKE \'%%%%%s%%%%\'', @@ -712,28 +715,48 @@ def validate(request, new=False, host_id=None): return 0 return failures -def push(request): - if request.GET.has_key('sub'): - # do xmlrpc function here - return HttpResponse("TBD") - else: - temp = Template(open('%s/push.html' % templatedir).read()) - temp.dirtyhosts = Host.objects.filter(dirty=True) - return HttpResponse(str(temp)) - def zones(request): zones = Zone.objects.all() - temp = Template(open('%s/zones.html' % templatedir).read()) - temp.zones = zones - return HttpResponse(str(temp)) + return render_to_response('zones.html', + {'zones': zones}) def zoneview(request, zone_id): zone = Zone.objects.get(id=zone_id) - temp = Template(open('%s/zoneview.html' % templatedir).read()) - temp.zone = zone - aux = zone.aux.split('\n') - temp.aux = aux - temp.nameservers = zone.nameservers.all() - temp.mxs = zone.mxs.all() - temp.addresses = zone.addresses.all() - return HttpResponse(str(temp)) + return render_to_response('zoneview.html', + {'zone': zone, + 'nameservers': zone.nameservers.all(), + 'mxs': zone.mxs.all(), + 'addresses': zone.addresses.all() + }) + +def zoneedit(request, zone_id): + if request.has_key('sub'): + zone = Zone.objects.get(id=zone_id) + for attrib in zoneattribs: + if request.POST.has_key(attrib): + zone.__dict__[attrib] = request.POST[attrib] + count = 0 +## for nameserver in zone.nameservers.all(): +## nameserver.name = request.POST['nameserver%i' % count] +## nameserver.save() +## count += 1 +## count = 0 +## for mx in zone.mxs.all(): +## mx.priority = request.POST['priority%i' % count] +## mx.mx = request.POST['mx%i' % count] +## mx.save() +## count += 1 +## count = 0 +## for address in zone.addresses.all(): +## address.ip_addr = request.POST['address%i' % count] +## count += 1 + zone.save() + return HttpResponseRedirect('/hostbase/zones/%s/' % zone.id) + else: + zone = Zone.objects.get(id=zone_id) + return render_to_response('zoneedit.html', + {'zone': zone, + 'nameservers': zone.nameservers.all(), + 'mxs': zone.mxs.all(), + 'addresses': zone.addresses.all() + }) diff --git a/src/lib/Server/Hostbase/hostbase/webtemplates/confirm.html b/src/lib/Server/Hostbase/hostbase/webtemplates/confirm.html index e89c21247..c7761c3ea 100644 --- a/src/lib/Server/Hostbase/hostbase/webtemplates/confirm.html +++ b/src/lib/Server/Hostbase/hostbase/webtemplates/confirm.html @@ -8,8 +8,7 @@ {% endblock %} {% block sidebar %} -new search
-add a new host +{% include "navbar" %} {% endblock %} {% block content %} diff --git a/src/lib/Server/Hostbase/hostbase/webtemplates/dns.html b/src/lib/Server/Hostbase/hostbase/webtemplates/dns.html index 1ffb0297a..1db012852 100644 --- a/src/lib/Server/Hostbase/hostbase/webtemplates/dns.html +++ b/src/lib/Server/Hostbase/hostbase/webtemplates/dns.html @@ -8,8 +8,7 @@ {% endblock %} {% block sidebar %} -new search
-add a new host +{% include "navbar" %}