Commit e7902699 authored by Bonnegent Sebastien's avatar Bonnegent Sebastien
Browse files

utilisation de ubiquity

parent 9b0a7435
Pipeline #12068 passed with stages
in 17 seconds
......@@ -7,13 +7,16 @@ lang: fr
# Départ
## Pour démarrer
https://gitlab.insa-rouen.fr/bonnegent/cours_django/-/blob/master/cours2.md
http://bonnegent.pages.insa-rouen.fr/cours_django/cours2.html
~~~bash
$ git pull
$ cd fwm2
$ cp fwm2 fwm2-tmp
$ cd fwm2-tmp
~~~
Ou utilisation de Ubiquity
## Au programme
- l'interface d'administration
- les modèles avec relations (Service, Groupe)
......
from django.contrib import admin
# @u:start import
# @u:Keywords Adresse Port Service Groupe
from .models import Adresse, Port, Service, Groupe
# @u:end import
# @u:start adresse
# @u:Keywords ModelAdmin list_display register AdresseAdmin
class AdresseAdmin(admin.ModelAdmin):
list_display = ('nom', 'ip', 'masque')
admin.site.register(Adresse, AdresseAdmin)
# @u:end adresse
# @u:start port
# @u:Keywords ModelAdmin list_display register PortAdmin
class PortAdmin(admin.ModelAdmin):
list_display = ('debut', 'fin', 'protocole')
admin.site.register(Port, PortAdmin)
# @u:end port
# @u:start service
# @u:Keywords ModelAdmin list_display search_fields register ServiceAdmin
class ServiceAdmin(admin.ModelAdmin):
list_display = ('nom', 'liste_des_ports')
search_fields = ('nom', 'ports__debut')
admin.site.register(Service, ServiceAdmin)
# @u:end service
# @u:start groupe
# @u:Keywords ModelAdmin list_display register GroupeAdmin
class GroupeAdmin(admin.ModelAdmin):
list_display = ("nom", "liste_des_adresses")
admin.site.register(Groupe, GroupeAdmin)
# @u:end groupe
\ No newline at end of file
......@@ -16,6 +16,8 @@ class Port(models.Model):
return f"{ports}({self.get_protocole_display()})"
# @u:start avecnom
# @u:Keywords Model CharField default max_length Meta abstract ordering __str__
class AvecNom(models.Model):
"""Classe abstraite pour les classes ayant un nom"""
nom = models.CharField(default='', max_length=25)
......@@ -26,8 +28,22 @@ class AvecNom(models.Model):
def __str__(self):
return self.nom
# @u:end avecnom
# @u:start adresse
# @u:Keywords AvecNom
# @u:KeywordsNotIn CharField
# @u:add class Adresse(models.Model):
# @u:add """Adresse peut être une machine ou un réseau
# @u:add
# @u:add :param nom: le nom
# @u:add :param ip: adresse IPv4 ou v6
# @u:add :param masque: le masque associé, /32 par défaut pour une adresse unique
# @u:add """
# @u:add nom = models.CharField(default='', max_length=25)
# @u:add ip = models.GenericIPAddressField(default="0.0.0.0")
# @u:add masque = models.PositiveSmallIntegerField(default=32)
class Adresse(AvecNom):
"""Adresse peut être une machine ou un réseau
......@@ -37,21 +53,26 @@ class Adresse(AvecNom):
"""
ip = models.GenericIPAddressField(default="0.0.0.0")
masque = models.PositiveSmallIntegerField(default=32)
# @u:end adresse
# @u:start service
# @u:Keywords Service AvecNom ports liste_des_ports
class Service(AvecNom):
"""Un service regroupe un ensemble de ports.
:param ports: une liste de Ports
"""
nom = models.CharField(default='', max_length=25)
ports = models.ManyToManyField(Port)
def liste_des_ports(self):
return ", ".join([str(p)
for p in self.ports.all()])
# @u:end service
# @u:start groupe
# @u:Keywords Groupe AvecNom adresses liste_des_adresses
class Groupe(AvecNom):
"""Un groupe regroupe plusieurs adresses.
......@@ -61,3 +82,4 @@ class Groupe(AvecNom):
def liste_des_adresses(self):
return ", ".join([str(a) for a in self.adresses.all()])
# @u:end groupe
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment