Changeset 6287
- Timestamp:
- Sep 18, 2008, 5:16:05 PM (17 years ago)
- Location:
- exodus
- Files:
-
- 1 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified exodus/models.py ¶
r6281 r6287 31 31 32 32 class Antenna(models.Model): 33 type = models.CharField(max_length=20 )33 type = models.CharField(max_length=20, unique=True) 34 34 gain = models.IntegerField(max_length=3) 35 35 … … 38 38 39 39 class Location(models.Model): 40 description = models.CharField(max_length=200 )40 description = models.CharField(max_length=200, unique=True) 41 41 Longitude = models.DecimalField(max_digits=8,decimal_places=6) 42 42 Latitude = models.DecimalField(max_digits=8,decimal_places=6) … … 48 48 #XXX: Name Domain perhaps? 49 49 class DnsServer(models.Model): 50 ipaddress = models.IPAddressField( unique=True)51 domainname = models.CharField(max_length=50 )50 ipaddress = models.IPAddressField() 51 domainname = models.CharField(max_length=50, unique=True) 52 52 53 53 def __str__(self): … … 55 55 56 56 class Network(models.Model): 57 name = models.CharField(max_length=50 )57 name = models.CharField(max_length=50, unique=True) 58 58 ipspacestart = models.IPAddressField() 59 59 netmask = models.IntegerField() … … 67 67 location = models.ForeignKey(Location) 68 68 status = models.CharField(max_length=10, choices=STATUS_CHOICES, default=1) 69 masterip = models.IPAddressField( )69 masterip = models.IPAddressField(unique=True) 70 70 network = models.ForeignKey(Network,default=1) 71 71 … … 78 78 class Interface(models.Model): 79 79 node = models.ForeignKey(Node) 80 type = models.CharField(max_length=10, choices=INTERFACE_TYPE_CHOICES) 80 81 iface = models.CharField(max_length=10, verbose_name="interface") 81 ip = models.IPAddressField( )82 ip = models.IPAddressField(unique=True) 82 83 netmask = models.IntegerField(default=30) 83 84 polar = models.CharField(blank=True, max_length=10, choices=POLAR_CHOICES) … … 86 87 channel = models.IntegerField(blank=True, null=True) 87 88 antenna = models.ForeignKey(Antenna, blank=True, null=True) 88 type = models.CharField(max_length=10, choices=INTERFACE_TYPE_CHOICES)89 89 shortdesc = models.CharField(blank=True, max_length=10) 90 90 desc = models.CharField(blank=True, max_length=100) … … 96 96 class InterfaceAlias(models.Model): 97 97 iface = models.ForeignKey(Interface,related_name='child') 98 ip = models.IPAddressField( )98 ip = models.IPAddressField(unique=True) 99 99 netmask = models.IntegerField(default=30) 100 100 shortdesc = models.CharField(blank=True, max_length=10) … … 108 108 class PublicAP(models.Model): 109 109 iface = models.ForeignKey(Interface) 110 ip = models.IPAddressField( )110 ip = models.IPAddressField(unique=True) 111 111 netmask = models.IntegerField(default=30) 112 112 dhcpstart = models.IPAddressField() … … 119 119 120 120 class DhcpStatic(models.Model): 121 hostname = models.CharField(max_length=10 )121 hostname = models.CharField(max_length=10,unique=True) 122 122 macaddress = models.CharField(max_length=17) 123 123 address = models.IPAddressField() -
TabularUnified exodus/templates/addnic.html ¶
r6254 r6287 3 3 {% block content %} 4 4 <h1>Create a Interface</h1> 5 {# XXX: Javascript to disable antenna details, when eth selected #} 5 6 6 7 <form method="post" action="."> -
TabularUnified exodus/templates/exodus-template.html ¶
r6254 r6287 18 18 <A class="menu" href="{% url exodus.views.addNode %}">Add Node</a><br> 19 19 <A class="menu" href="{% url exodus.views.addInterface %}">Add Interface</a><br> 20 <A class="menu" href="{% url exodus.views.addLink %}">Add Link</a><br>21 20 <A class="menu" href="{% url exodus.views.addPublicAP %}">Add PublicAP</a><br> 22 21 <p> … … 57 56 <tr> 58 57 <td class="disclaimer" colspan="2"> 59 <a class="disclaimer" href="http://www.wirelessleiden.nl/stichting/disclaimer.shtml">disclaimer © 200 6</a>58 <a class="disclaimer" href="http://www.wirelessleiden.nl/stichting/disclaimer.shtml">disclaimer © 2008</a> 60 59 | <a class="disclaimer" href="#top">top</a> 61 60 </td> -
TabularUnified exodus/templates/index.html ¶
r6183 r6287 4 4 5 5 <P class="blue">WirelessLeiden Exodus</P> 6 This is the WirelessLeiden Exodus site. Exodus is the next generation configuration 7 management database for WireslessLeiden. Development is still ongoing since not all 8 features of Genesis, our current management system, are available in genesis. 9 More documentation is being written. </br> 6 This is the WirelessLeiden Exodus site. 7 8 Exodus is the next generation configuration management database for 9 WireslessLeiden. Development is still ongoing since not all features of 10 Genesis, our current management system, are available in genesis. 11 <p /> 12 TODO: More documentation is being written. </br> 10 13 </br> 11 14 15 </p> 12 16 <strong>This site is under construction and not fully operational.</strong></br> 17 <br /> 18 For questions or remarks: <a href="mailto:techniek@lijst.wirelessleiden.nl?subject=exodus%20development">techniek@lijst.wirelessleiden.nl</a> Exodus code to be found in subversion at URL <a href="http://svn.wirelessleiden.nl/svn/code/exodus/">http://svn.wirelessleiden.nl/svn/code/exodus/</a>, please feel free to send patches or participate if needed. 13 19 14 For questions or remarks: <a href="mailto:roland@wirelessleiden.nl">roland@wirelessleiden.nl</a> 20 <p /> 21 Enjoy Exodus! 22 <br /> 23 <a href="mailto:roland@wirelessleiden.nl">Roland</a> and <a href="mailto:rick@wirelessleiden.nl">Rick</a> 15 24 16 25 {% endblock %} -
TabularUnified exodus/templates/node-detail.html ¶
r6283 r6287 11 11 12 12 Master ip: {{ object.masterip }} <br> 13 <a href="{% url exodus.views.editNode object%}">EDIT</a>13 <a href="{% url exodus.views.editNode object %}">EDIT</a> 14 14 </div> 15 15 … … 18 18 {% for nic in object.interface_set.all %} 19 19 <p> 20 <div style="border:1px solid #000000;"> 20 21 <h3>iface: {{ nic.iface }} </h3> 21 22 status: {{ nic.status }} <br> … … 30 31 Mode: {{ nic.mode }} <br> 31 32 {% endifnotequal %} 33 <a href="{% url exodus.views.editInterface nic %}">EDIT</a> 34 </div> 32 35 33 36 {% for interlink in nic.link.interface_set.all %} -
TabularUnified exodus/urls.py ¶
r6283 r6287 49 49 (r'^edit/location/(?P<object_id>.+)/$', 'exodus.views.addLocation'), 50 50 (r'^edit/node/(?P<objectId>.+)/$', 'exodus.views.editNode'), 51 (r'^edit/nic/(?P<object _id>.+)/$', 'exodus.views.addInterface'),51 (r'^edit/nic/(?P<objectId>.+)/$', 'exodus.views.editInterface'), 52 52 (r'^edit/interlink/(?P<object_id>.+)/$', 'exodus.views.addLink'), 53 53 (r'^edit/omni/(?P<object_id>.+)/$', 'exodus.views.addPublicAP'), -
TabularUnified exodus/views.py ¶
r6283 r6287 78 78 class Meta: 79 79 model = Interface 80 exclude = ( 'ssid', 'mode', 'channel' ) 80 exclude = ( 'ip', 'ssid', 'mode', 'channel', 'shortdesc' ) 81 82 def saveInterface(form): 83 instance = form.save(commit=False) 84 if str(instance.type) != "eth": 85 instance.ssid = newSSIDName(instance.node, instance.iface, 'unused') 86 instance.channel = '1' 87 instance.mode = 1 # set to master 88 if instance.link == None: 89 instance.link = instance 90 #XXX: Needs to be dynamic, using some logic 91 instance.ip = '172.16.0.1' 92 instance.save() 81 93 82 94 def addInterface(request): … … 84 96 form = addInterfaceForm(request.POST) 85 97 if form.is_valid(): 86 instance = form.save(commit=False) 87 if str(instance.type) != "eth": 88 instance.ssid = newSSIDName(instance.node, instance.iface, 'unused') 89 instance.channel = '1' 90 instance.mode = 1 # set to master 91 instance.save() 92 if instance.link == None: 93 instance.link = instance 94 instance.save() 98 saveInterface(form) 95 99 return HttpResponseRedirect("/exodus/") 96 100 else: 97 101 #XXX: Link, master interfaces only 98 newForm = Interface(shortdesc='boe') 99 form = addInterfaceForm(instance = newForm) 102 form = addInterfaceForm() 103 return render_to_response('addnic.html', {'form': form }) 104 105 def editInterface(request, objectId): 106 nodeName, interfaceName = objectId.split(':') 107 interface = Interface.objects.get(iface=interfaceName, node=nodename2id(nodeName)) 108 if request.POST: 109 form = addInterfaceForm(request.POST, instance=interface) 110 if form.is_valid(): 111 saveInterface(form) 112 return HttpResponseRedirect("/exodus/") 113 else: 114 #XXX: Link, master interfaces only 115 form = addInterfaceForm(instance = interface) 100 116 return render_to_response('addnic.html', {'form': form }) 101 117 … … 170 186 return render_to_response('addomni.html', {'form': form }) 171 187 172 def nodename _to_id(node):188 def nodename2id(node): 173 189 """Convert node name to ID if found in the database""" 174 try: 175 return Node.objects.get(name=node).id 176 except Node.DoesNotExist: 177 # Most likely valid id already 178 return node 179 190 return Node.objects.get(name=node).id 191 180 192 def conf_generator(node, template): 181 object_id = nodename _to_id(node)193 object_id = nodename2id(node) 182 194 object = Node.objects.get(pk=object_id) 183 195 … … 205 217 """5.X legacy rc.local conf generator""" 206 218 207 object_id = nodename _to_id(object_id)219 object_id = nodename2id(object_id) 208 220 object = Node.objects.get(pk=object_id) 209 221 object.name = Node.objects.get(pk=object_id).name … … 227 239 """5.X Legacy rc.node.local conf generator""" 228 240 229 object_id = nodename _to_id(object_id)241 object_id = nodename2id(object_id) 230 242 231 243 object.name = Node.objects.get(pk=object_id).name … … 240 252 """rc.node.local conf generator""" 241 253 242 object_id = nodename _to_id(object_id)254 object_id = nodename2id(object_id) 243 255 244 256 object = Node.objects.get(pk=object_id).interface_set.all()
Note:
See TracChangeset
for help on using the changeset viewer.