Changeset 6344
- Timestamp:
- Oct 6, 2008, 10:29:11 PM (16 years ago)
- Location:
- trunk/exodus
- Files:
-
- 3 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/exodus/templates/exodus-template.html
r6325 r6344 16 16 <A class="menu" href="{% url root %}">Exodus</a><br> 17 17 <A class="menu" href="{% url exodus.views.viewNodelist %}">Node List</a><br> 18 <A class="menu" href="{% url exodus.views.generic Location "add" "new" %}">Add Location</a><br>18 <A class="menu" href="{% url exodus.views.genericModel "add" "location" "new" %}">Add Location</a><br> 19 19 <A class="menu" href="{% url exodus.views.genericNode "add" "new" %}">Add Node</a><br> 20 <center>--- Admin ---</center> 21 <A class="menu" href="{% url exodus.views.viewList "location" %}">Location List</a><br> 22 <A class="menu" href="{% url exodus.views.viewList "network" %}">Network List</a><br> 23 <A class="menu" href="{% url exodus.views.viewList "dnsServer" %}">DNS List</a><br> 20 24 </div> 21 25 </td> -
trunk/exodus/templates/viewList.html
r6342 r6344 2 2 3 3 {% block content %} 4 <a href="{% url exodus.views.viewNodelist %}">Node List</a>5 4 6 <div style="border:1px solid #000000;"> 7 <h1> {{ node.name }} </h1> 8 <h3> Location </h3> 9 Description: {{ node.location.description }} <br> 10 Longitude: {{ node.location.longitude }} <br> 11 Latitude: {{ node.location.latitude }} <br> 5 <P class="blue">{{ modelName }} List </P> 6 {# XXX: Not DRY #} 7 <a href="/add/{{ modelURL }}/new/">New {{ modelName }}</a><p /> 12 8 13 Master ip: {{ node.masterip }} <br> 14 <a href="{% url exodus.views.genericNode "edit" node.name %}">EDIT</a> 15 <a href="{% url exodus.views.genericNode "delete" node.name %}">DELETE</a> 16 </div> 17 18 <h2>Interfaces</h2> 19 <a href="{% url exodus.views.genericInterface "add" node.name "new" %}">Add new interface</a><p /> 20 21 {% for nic in node.interface_set.all %} 22 <div style="border:1px solid #000000;"> 23 <div style="border:1px solid #000000;"> 24 <h3>iface: {{ nic.iface }} </h3> 25 <a href="{% url exodus.views.genericPublicAP "add" node.name nic.iface "new" %}">Add new public access point</a><p /> 26 Description: {{ nic.shortdesc }} <br> 27 IP: {{ nic.ip }}/{{ nic.netmask }}<br /> 28 Type: {% ifequal nic nic.link %}Master{% else %}Slave {% endifequal %}<br /> 29 30 {% ifnotequal nic.type "eth" %} 31 SSID: {{ nic.ssid }} <br> 32 Channel: {{ nic.channel }} <br> 33 Antenna: {{ nic.antenna }} <br> 34 Polar: {{ nic.polar }} <br> 35 Mode: {{ nic.mode }} <br> 36 {% endifnotequal %} 37 <a href="{% url exodus.views.genericInterface "edit" node.name nic.iface %}">EDIT</a> 38 <a href="{% url exodus.views.genericInterface "delete" node.name nic.iface %}">DELETE</a> 39 </div> 40 41 {% for interlink in nic.link.interface_set.all %} 42 {% ifnotequal interlink nic %} 43 <ul> 44 <li>Interlink to Node: <a href="{% url exodus.views.viewNode interlink.node %}"> 45 {{ interlink.node }}</a> </li> 46 <li>Link Name: {{ interlink }}</li> 47 <li>IP: {{ interlink.ip }}/{{ interlink.netmask }} </li> 48 </ul> 49 {% endifnotequal %} 50 {% endfor %} 51 <ol> 52 {% for accessPoint in nic.ap.all %} 53 <div style="border:1px solid #000000;"> 54 <p /> 55 <li>Public Access Point: {{ accessPoint.ip}}/{{accessPoint.netmask }} 56 <a href="{% url exodus.views.genericPublicAP "edit" node.name nic.iface accessPoint.pk %}">EDIT</a> 57 <a href="{% url exodus.views.genericPublicAP "delete" node.name nic.iface accessPoint.pk %}">DELETE</a> 58 {% for dhcp in accessPoint.dhcpstatic.all %} 59 <ul> 60 <li>Hostname: {{ dhcp.hostname }} </li> 61 <li>MacAddress: {{ dhcp.macaddress }} </li> 62 </ul> 63 {% endfor %} 64 </li> 65 <p /> 66 </div> 67 {% endfor %} 68 </ol> 69 </div> 70 <p /> 71 {% endfor %} 9 {% if objects %} 10 <table border="0" cellpadding="1"> 11 {% for object in objects %} 12 <tr> 13 <td> 14 {{ object }} 15 </td> 16 <td> 17 : 18 <a href="{% url exodus.views.genericModel "edit" modelURL object %}">EDIT</a> 19 <a href="{% url exodus.views.genericModel "delete" modelURL object %}">DELETE</a> 20 </td> 21 </tr> 22 {% endfor %} 23 </table> 24 {% else %} 25 <p class="blue"> No {{ modelName }} are available </p> 26 {% endif %} 72 27 73 28 {% endblock %} 29 -
trunk/exodus/urls.py
r6332 r6344 17 17 url(r'^$', 'exodus.urls.direct_to_template', {'template': 'index.html'}, "root"), 18 18 (r'^view/nodelist/$', 'exodus.views.viewNodelist'), 19 (r'^view/list/(?P<model>.+)/$', 'exodus.views.viewList'), 19 20 (r'^view/node/(?P<node>.+)/$', 'exodus.views.viewNode'), 20 21 … … 23 24 24 25 # Generic urls 25 (r'^ location/(?P<mode>(add|edit|delete))/(?P<location>.+)/$', 'exodus.views.genericLocation'),26 (r'^ node/(?P<mode>(add|edit|delete))/(?P<node>.+)/$', 'exodus.views.genericNode'),27 (r'^ nic/(?P<mode>(add|edit|delete))/(?P<node>.+)/(?P<interface>.+)/$', 'exodus.views.genericInterface'),28 (r'^ dhcp/(?P<mode>(add|edit|delete))/(?P<node>.+)/(?P<interface>.+)/(?P<publicAP>.+)/$', 'exodus.views.genericPublicAP'),26 (r'^(?P<mode>(add|edit|delete))/(?P<model>.+)/(?P<object>.+)/$', 'exodus.views.genericModel'), 27 (r'^(?P<mode>(add|edit|delete))/node/(?P<node>.+)/$', 'exodus.views.genericNode'), 28 (r'^(?P<mode>(add|edit|delete))/nic/(?P<node>.+)/(?P<interface>.+)/$', 'exodus.views.genericInterface'), 29 (r'^(?P<mode>(add|edit|delete))/dhcp/(?P<node>.+)/(?P<interface>.+)/(?P<publicAP>.+)/$', 'exodus.views.genericPublicAP'), 29 30 30 31 # 3th party/embedded database browser -
trunk/exodus/views.py
r6327 r6344 5 5 from django.template import Context, loader 6 6 from django.shortcuts import render_to_response 7 from django.core.urlresolvers import reverse 7 from django.core.urlresolvers import reverse, NoReverseMatch 8 8 from django.forms.formsets import formset_factory 9 9 from django import forms … … 41 41 if self.form.is_valid(): 42 42 # Set response on forehand, to allow override in procedure 43 self.response = HttpResponseRedirect(reverse('exodus.views.viewNode', args=[self.node.name])) 43 try: 44 self.response = HttpResponseRedirect(reverse('exodus.views.viewNode', args=[self.node.name])) 45 except (AttributeError, NoReverseMatch): 46 self.response = HttpResponseRedirect(reverse('exodus.views.viewNodelist')) 44 47 45 48 #Checking whether data did change … … 203 206 _instance.masterip = freeMasterIP(_instance) 204 207 _instance.save() 208 self.response = HttpResponseRedirect(reverse('exodus.views.viewNode', args=[_instance.name])) 205 209 206 210 def _delete(self): … … 239 243 240 244 def _add(self): 241 self._saveInterface()245 _instance = self.form.save() 242 246 # After adding a location, allow adding a Node with this location 243 247 self.response = HttpResponseRedirect( 244 reverse('exodus.views.genericNode', args=["add", "new"]) + "?location=%i" % self._instance.pk)248 reverse('exodus.views.genericNode', args=["add", "new"]) + "?location=%i" % _instance.pk) 245 249 246 250 def _delete(self): … … 283 287 mimetype='text/plain') 284 288 289 def genericLocation(request, location, mode): 290 handler = LocationHandler(request, location, mode) 291 return handler.render_to_response() 292 293 def genericModel(request, model, mode, object): 294 """Wrapper, to get to the function needed""" 295 model = model.capitalize() 296 model = eval(model + 'Handler') 297 handler = model(request, object, mode) 298 return handler.render_to_response() 299 300 def viewList(request, model): 301 """Standard interface for simple overview pages, with view/edit/delete buttons on it""" 302 modelURL = model 303 model = model[0].upper() + model[1::] 304 modelName = model 305 model = eval(model) 306 objects = model.objects.all() 307 return render_to_response('viewList.html', {'objects': objects, 'modelURL' : modelURL, 'modelName' : modelName})
Note:
See TracChangeset
for help on using the changeset viewer.