Changeset 6287


Ignore:
Timestamp:
Sep 18, 2008, 5:16:05 PM (17 years ago)
Author:
RIck van der Zwet
Message:

Indentified unique key:

  • exodus/exodus/models.py

Add interface edit:

  • exodus/exodus/views.py
  • exodus/exodus/urls.py
  • exodus/exodus/templates/exodus-template.html
  • exodus/exodus/templates/addnic.html
  • exodus/exodus/templates/node-detail.html

Textual changes, new copyright date, removed link, etc..

  • exodus/exodus/templates/bottom.html
  • exodus/exodus/templates/index.html
  • exodus/exodus/templates/exodus-template.html
Location:
exodus
Files:
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified exodus/models.py

    r6281 r6287  
    3131
    3232class Antenna(models.Model):
    33     type = models.CharField(max_length=20)
     33    type = models.CharField(max_length=20, unique=True)
    3434    gain = models.IntegerField(max_length=3)
    3535
     
    3838
    3939class Location(models.Model):
    40     description = models.CharField(max_length=200)
     40    description = models.CharField(max_length=200, unique=True)
    4141    Longitude = models.DecimalField(max_digits=8,decimal_places=6)
    4242    Latitude = models.DecimalField(max_digits=8,decimal_places=6)
     
    4848#XXX: Name Domain perhaps?
    4949class 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)
    5252
    5353        def __str__(self):
     
    5555
    5656class Network(models.Model):
    57         name = models.CharField(max_length=50)
     57        name = models.CharField(max_length=50, unique=True)
    5858        ipspacestart = models.IPAddressField()
    5959        netmask = models.IntegerField()
     
    6767    location = models.ForeignKey(Location)
    6868    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default=1)
    69     masterip = models.IPAddressField()
     69    masterip = models.IPAddressField(unique=True)
    7070    network = models.ForeignKey(Network,default=1)
    7171 
     
    7878class Interface(models.Model):
    7979        node = models.ForeignKey(Node)
     80        type = models.CharField(max_length=10, choices=INTERFACE_TYPE_CHOICES)
    8081        iface = models.CharField(max_length=10, verbose_name="interface")
    81         ip = models.IPAddressField()
     82        ip = models.IPAddressField(unique=True)
    8283        netmask = models.IntegerField(default=30)
    8384        polar = models.CharField(blank=True, max_length=10, choices=POLAR_CHOICES)
     
    8687        channel = models.IntegerField(blank=True, null=True)
    8788        antenna = models.ForeignKey(Antenna, blank=True, null=True)
    88         type = models.CharField(max_length=10, choices=INTERFACE_TYPE_CHOICES)
    8989        shortdesc = models.CharField(blank=True, max_length=10)
    9090        desc = models.CharField(blank=True, max_length=100)
     
    9696class InterfaceAlias(models.Model):
    9797        iface = models.ForeignKey(Interface,related_name='child')
    98         ip = models.IPAddressField()
     98        ip = models.IPAddressField(unique=True)
    9999        netmask = models.IntegerField(default=30)
    100100        shortdesc = models.CharField(blank=True, max_length=10)
     
    108108class PublicAP(models.Model):
    109109    iface = models.ForeignKey(Interface)
    110     ip = models.IPAddressField()
     110    ip = models.IPAddressField(unique=True)
    111111    netmask = models.IntegerField(default=30)
    112112    dhcpstart = models.IPAddressField()
     
    119119
    120120class DhcpStatic(models.Model):
    121     hostname = models.CharField(max_length=10)
     121    hostname = models.CharField(max_length=10,unique=True)
    122122    macaddress = models.CharField(max_length=17)
    123123    address = models.IPAddressField()
  • TabularUnified exodus/templates/addnic.html

    r6254 r6287  
    33{% block content %}
    44<h1>Create a Interface</h1>
     5{# XXX: Javascript to disable antenna details, when eth selected #}
    56
    67<form method="post" action=".">
  • TabularUnified exodus/templates/exodus-template.html

    r6254 r6287  
    1818          &nbsp;&nbsp;<A class="menu" href="{% url exodus.views.addNode %}">Add Node</a><br>
    1919          &nbsp;&nbsp;<A class="menu" href="{% url exodus.views.addInterface %}">Add Interface</a><br>
    20           &nbsp;&nbsp;<A class="menu" href="{% url exodus.views.addLink %}">Add Link</a><br>
    2120          &nbsp;&nbsp;<A class="menu" href="{% url exodus.views.addPublicAP %}">Add PublicAP</a><br>
    2221          &nbsp;<p>
     
    5756  <tr>
    5857    <td class="disclaimer" colspan="2">
    59     <a class="disclaimer" href="http://www.wirelessleiden.nl/stichting/disclaimer.shtml">disclaimer &copy; 2006 </a>
     58    <a class="disclaimer" href="http://www.wirelessleiden.nl/stichting/disclaimer.shtml">disclaimer &copy; 2008</a>
    6059        &nbsp;|&nbsp;<a class="disclaimer" href="#top">top</a>
    6160        </td>
  • TabularUnified exodus/templates/index.html

    r6183 r6287  
    44
    55<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>
     6This is the WirelessLeiden Exodus site.
     7
     8Exodus is the next generation configuration management database for
     9WireslessLeiden. Development is still ongoing since not all features of
     10Genesis, our current management system, are available in genesis. 
     11<p />
     12TODO: More documentation is being written. </br>
    1013</br>
    1114
     15</p>
    1216<strong>This site is under construction and not fully operational.</strong></br>
     17<br />
     18For 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.
    1319
    14 For questions or remarks: <a href="mailto:roland@wirelessleiden.nl">roland@wirelessleiden.nl</a>
     20<p />
     21Enjoy Exodus!
     22<br />
     23<a href="mailto:roland@wirelessleiden.nl">Roland</a> and <a href="mailto:rick@wirelessleiden.nl">Rick</a>
    1524
    1625{% endblock %}
  • TabularUnified exodus/templates/node-detail.html

    r6283 r6287  
    1111
    1212Master ip: {{ object.masterip }} <br>
    13 <a href="{% url exodus.views.editNode  object %}">EDIT</a>
     13<a href="{% url exodus.views.editNode object %}">EDIT</a>
    1414</div>
    1515
     
    1818{% for nic in object.interface_set.all %}
    1919        <p>
     20        <div style="border:1px solid #000000;">
    2021        <h3>iface: {{ nic.iface }} </h3>
    2122        status: {{ nic.status }} <br>
     
    3031                Mode: {{ nic.mode }} <br>
    3132        {% endifnotequal %}
     33        <a href="{% url exodus.views.editInterface nic %}">EDIT</a>
     34        </div>
    3235
    3336        {% for interlink in nic.link.interface_set.all %}
  • TabularUnified exodus/urls.py

    r6283 r6287  
    4949        (r'^edit/location/(?P<object_id>.+)/$', 'exodus.views.addLocation'),
    5050        (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'),
    5252        (r'^edit/interlink/(?P<object_id>.+)/$', 'exodus.views.addLink'),
    5353        (r'^edit/omni/(?P<object_id>.+)/$', 'exodus.views.addPublicAP'),
  • TabularUnified exodus/views.py

    r6283 r6287  
    7878        class Meta:
    7979                model = Interface
    80                 exclude = ( 'ssid', 'mode', 'channel' )
     80                exclude = ( 'ip', 'ssid', 'mode', 'channel', 'shortdesc' )
     81
     82def 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()
    8193
    8294def addInterface(request):
     
    8496                form = addInterfaceForm(request.POST)
    8597                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)
    9599                        return HttpResponseRedirect("/exodus/")
    96100        else:
    97101                #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
     105def 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)
    100116        return render_to_response('addnic.html', {'form': form })
    101117
     
    170186        return render_to_response('addomni.html', {'form': form })
    171187
    172 def nodename_to_id(node):
     188def nodename2id(node):
    173189        """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
    180192def conf_generator(node, template):
    181         object_id = nodename_to_id(node)
     193        object_id = nodename2id(node)
    182194        object = Node.objects.get(pk=object_id)
    183195
     
    205217    """5.X legacy rc.local conf generator"""
    206218
    207     object_id = nodename_to_id(object_id)
     219    object_id = nodename2id(object_id)
    208220    object = Node.objects.get(pk=object_id)
    209221    object.name = Node.objects.get(pk=object_id).name
     
    227239        """5.X Legacy rc.node.local conf generator"""
    228240
    229         object_id = nodename_to_id(object_id)
     241        object_id = nodename2id(object_id)
    230242
    231243        object.name = Node.objects.get(pk=object_id).name
     
    240252        """rc.node.local conf generator"""
    241253       
    242         object_id = nodename_to_id(object_id)
     254        object_id = nodename2id(object_id)
    243255       
    244256        object = Node.objects.get(pk=object_id).interface_set.all()
Note: See TracChangeset for help on using the changeset viewer.