8
0
Fork 0
mirror of https://gitlab.federez.net/re2o/re2o synced 2024-05-20 17:42:26 +00:00

API support for app machines

This commit is contained in:
Maël Kervella 2018-04-22 00:36:06 +00:00
parent 98dc4205be
commit e2736e17df
3 changed files with 400 additions and 26 deletions

View file

@ -32,6 +32,27 @@ from cotisations.models import (
Paiement,
Cotisation
)
from machines.models import (
Machine,
MachineType,
IpType,
Vlan,
Nas,
SOA,
Extension,
Mx,
Ns,
Txt,
Srv,
Interface,
Ipv6List,
Domain,
IpList,
Service,
Service_link,
OuverturePortList,
OuverturePort
)
from users.models import (
User,
Club,
@ -43,22 +64,9 @@ from users.models import (
Ban,
Whitelist
)
from machines.models import (
Interface,
IpType,
Extension,
IpList,
Domain,
Txt,
Mx,
Srv,
Service_link,
Ns,
OuverturePort,
Ipv6List
)
# COTISATION APP
# COTISATIONS APP
class FactureSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
@ -123,7 +131,228 @@ class CotisationSerializer(serializers.HyperlinkedModelSerializer):
}
# USER APP
# MACHINES APP
class MachineSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Machine
fields = ('user', 'name', 'active', 'api_url')
extra_kwargs = {
'user': {'view_name': 'api:user-detail'},
'api_url': {'view_name': 'api:machine-detail'}
}
class MachineTypeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MachineType
fields = ('type', 'ip_type', 'api_url')
extra_kwargs = {
'ip_type': {'view_name': 'api:iptype-detail'},
'api_url': {'view_name': 'api:machinetype-detail'}
}
class IpTypeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = IpType
fields = ('type', 'extension', 'need_infra', 'domaine_ip_start',
'domaine_ip_stop', 'prefix_v6', 'vlan', 'ouverture_ports',
'api_url')
extra_kwargs = {
'extension': {'view_name': 'api:extension-detail'},
'vlan': {'view_name': 'api:vlan-detail'},
'ouverture_ports': {'view_name': 'api:ouvertureportlist-detail'},
'api_url': {'view_name': 'api:iptype-detail'}
}
class VlanSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Vlan
fields = ('vlan_id', 'name', 'comment', 'api_url')
extra_kwargs = {
'api_url': {'view_name': 'api:vlan-detail'}
}
class NasSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Nas
fields = ('name', 'nas_type', 'machine_type', 'port_access_mode',
'autocapture_mac', 'api_url')
extra_kwargs = {
'nas_type': {'view_name': 'api:machinetype-detail'},
'machine_type': {'view_name': 'api:machinetype-detail'},
'api_url': {'view_name': 'api:nas-detail'}
}
class SOASerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = SOA
fields = ('name', 'mail', 'refresh', 'retry', 'expire', 'ttl',
'api_url')
extra_kwargs = {
'api_url': {'view_name': 'api:soa-detail'}
}
class ExtensionSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Extension
fields = ('name', 'need_infra', 'origin', 'origin_v6', 'soa',
'api_url')
extra_kwargs = {
'origin': {'view_name': 'api:iplist-detail'},
'soa': {'view_name': 'api:soa-detail'},
'api_url': {'view_name': 'api:extension-detail'}
}
class MxSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Mx
fields = ('zone', 'priority', 'name', 'api_url')
extra_kwargs = {
'zone': {'view_name': 'api:extension-detail'},
'name': {'view_name': 'api:domain-detail'},
'api_url': {'view_name': 'api:mx-detail'}
}
class NsSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Ns
fields = ('zone', 'ns', 'api_url')
extra_kwargs = {
'zone': {'view_name': 'api:extension-detail'},
'ns': {'view_name': 'api:domain-detail'},
'api_url': {'view_name': 'api:ns-detail'}
}
class TxtSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Txt
fields = ('zone', 'field1', 'field2', 'api_url')
extra_kwargs = {
'zone': {'view_name': 'api:extension-detail'},
'api_url': {'view_name': 'api:txt-detail'}
}
class SrvSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Srv
fields = ('service', 'protocole', 'extension', 'ttl', 'priority',
'weight', 'port', 'target', 'api_url')
extra_kwargs = {
'extension': {'view_name': 'api:extension-detail'},
'target': {'view_name': 'api:domain-detail'},
'api_url': {'view_name': 'api:mx-detail'}
}
class InterfaceSerializer(serializers.HyperlinkedModelSerializer):
active = serializers.BooleanField(source='is_active')
class Meta:
model = Interface
fields = ('ipv4', 'mac_address', 'machine', 'type', 'details',
'port_lists', 'active', 'api_url')
extra_kwargs = {
'ipv4': {'view_name': 'api:iplist-detail'},
'machine': {'view_name': 'api:machine-detail'},
'type': {'view_name': 'api:machinetype-detail'},
'port_lists': {'view_name': 'api:ouvertureportlist-detail'},
'api_url': {'view_name': 'api:interface-detail'}
}
class Ipv6ListSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Ipv6List
fields = ('ipv6', 'interface', 'slaac_ip', 'date_end',
'api_url')
extra_kwargs = {
'interface': {'view_name': 'api:interface-detail'},
'api_url': {'view_name': 'api:ipv6list-detail'}
}
class DomainSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Domain
fields = ('interface_parent', 'name', 'extension', 'cname',
'api_url')
extra_kwargs = {
'interface_parent': {'view_name': 'api:interface-detail'},
'extension': {'view_name': 'api:extension-detail'},
'cname': {'view_name': 'api:domain-detail'},
'api_url': {'view_name': 'api:domain-detail'}
}
class IpListSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = IpList
fields = ('ipv4', 'ip_type', 'need_infra', 'api_url')
extra_kwargs = {
'ip_type': {'view_name': 'api:iptype-detail'},
'api_url': {'view_name': 'api:iplist-detail'}
}
class ServiceSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Service
fields = ('service_type', 'min_time_regen', 'regular_time_regen',
'servers', 'api_url')
extra_kwargs = {
'servers': {'view_name': 'api:interface-detail'},
'api_url': {'view_name': 'api:service-detail'}
}
class ServiceLinkSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Service_link
fields = ('service', 'server', 'last_regen', 'asked_regen',
'need_regen', 'api_url')
extra_kwargs = {
'service': {'view_name': 'api:service-detail'},
'server': {'view_name': 'api:interface-detail'},
'api_url': {'view_name': 'api:servicelink-detail'}
}
class OuverturePortListSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = OuverturePortList
fields = ('name', 'tcp_ports_in', 'udp_ports_in', 'tcp_ports_out',
'udp_ports_out', 'api_url')
extra_kwargs = {
'tcp_ports_in': {'view_name': 'api:ouvertureport-detail'},
'udp_ports_in': {'view_name': 'api:ouvertureport-detail'},
'tcp_ports_out': {'view_name': 'api:ouvertureport-detail'},
'udp_ports_out': {'view_name': 'api:ouvertureport-detail'},
'api_url': {'view_name': 'api:ouvertureportlist-detail'}
}
class OuverturePortSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = OuverturePort
fields = ('begin', 'end', 'port_list', 'protocole', 'io', 'api_url')
extra_kwargs = {
'port_list': {'view_name': 'api:ouvertureportlist-detail'},
'api_url': {'view_name': 'api:ouvertureport-detail'}
}
# USERS APP
class UserSerializer(serializers.HyperlinkedModelSerializer):

View file

@ -30,14 +30,34 @@ from rest_framework.routers import DefaultRouter
from . import views
router = DefaultRouter()
# COTISATION APP
# COTISATIONS APP
router.register(r'factures', views.FactureViewSet)
router.register(r'ventes', views.VenteViewSet)
router.register(r'articles', views.ArticleViewSet)
router.register(r'banques', views.BanqueViewSet)
router.register(r'paiements', views.PaiementViewSet)
router.register(r'cotisations', views.CotisationViewSet)
# USER APP
# MACHINES APP
router.register(r'machines', views.MachineViewSet)
router.register(r'machinetypes', views.MachineTypeViewSet)
router.register(r'iptypes', views.IpTypeViewSet)
router.register(r'vlans', views.VlanViewSet)
router.register(r'nas', views.NasViewSet)
router.register(r'soa', views.SOAViewSet)
router.register(r'extensions', views.ExtensionViewSet)
router.register(r'mx', views.MxViewSet)
router.register(r'ns', views.NsViewSet)
router.register(r'txt', views.TxtViewSet)
router.register(r'srv', views.SrvViewSet)
router.register(r'interfaces', views.InterfaceViewSet)
router.register(r'ipv6lists', views.Ipv6ListViewSet)
router.register(r'domains', views.DomainViewSet)
router.register(r'iplists', views.IpListViewSet)
router.register(r'services', views.ServiceViewSet)
router.register(r'servicelinks', views.ServiceLinkViewSet, 'servicelink')
router.register(r'ouvertureportlists', views.OuverturePortListViewSet)
router.register(r'ouvertureports', views.OuverturePortViewSet)
# USERS APP
router.register(r'users', views.UserViewSet)
router.register(r'clubs', views.ClubViewSet)
router.register(r'adherents', views.AdherentViewSet)

View file

@ -54,29 +54,56 @@ from users.models import (
Whitelist
)
from machines.models import (
Service_link,
Service,
Interface,
Domain,
Machine,
MachineType,
IpType,
Vlan,
Nas,
SOA,
Extension,
Mx,
Ns,
Txt,
Srv,
Extension,
Interface,
Ipv6List,
Domain,
IpList,
Service,
Service_link,
OuverturePortList,
OuverturePort
)
from .serializers import (
# COTISATION APP
# COTISATIONS APP
FactureSerializer,
VenteSerializer,
ArticleSerializer,
BanqueSerializer,
PaiementSerializer,
CotisationSerializer,
# USER APP
# MACHINES APP
MachineSerializer,
MachineTypeSerializer,
IpTypeSerializer,
VlanSerializer,
NasSerializer,
SOASerializer,
ExtensionSerializer,
MxSerializer,
NsSerializer,
TxtSerializer,
SrvSerializer,
InterfaceSerializer,
Ipv6ListSerializer,
DomainSerializer,
IpListSerializer,
ServiceSerializer,
ServiceLinkSerializer,
OuverturePortListSerializer,
OuverturePortSerializer,
# USERS APP
UserSerializer,
ClubSerializer,
AdherentSerializer,
@ -89,7 +116,7 @@ from .serializers import (
)
# COTISATION APP
# COTISATIONS APP
class FactureViewSet(viewsets.ReadOnlyModelViewSet):
@ -122,6 +149,104 @@ class CotisationViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = CotisationSerializer
# MACHINES APP
class MachineViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Machine.objects.all()
serializer_class = MachineSerializer
class MachineTypeViewSet(viewsets.ReadOnlyModelViewSet):
queryset = MachineType.objects.all()
serializer_class = MachineTypeSerializer
class IpTypeViewSet(viewsets.ReadOnlyModelViewSet):
queryset = IpType.objects.all()
serializer_class = IpTypeSerializer
class VlanViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Vlan.objects.all()
serializer_class = VlanSerializer
class NasViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Nas.objects.all()
serializer_class = NasSerializer
class SOAViewSet(viewsets.ReadOnlyModelViewSet):
queryset = SOA.objects.all()
serializer_class = SOASerializer
class ExtensionViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Extension.objects.all()
serializer_class = ExtensionSerializer
class MxViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Mx.objects.all()
serializer_class = MxSerializer
class NsViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Ns.objects.all()
serializer_class = NsSerializer
class TxtViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Txt.objects.all()
serializer_class = TxtSerializer
class SrvViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Srv.objects.all()
serializer_class = SrvSerializer
class InterfaceViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Interface.objects.all()
serializer_class = InterfaceSerializer
class Ipv6ListViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Ipv6List.objects.all()
serializer_class = Ipv6ListSerializer
class DomainViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Domain.objects.all()
serializer_class = DomainSerializer
class IpListViewSet(viewsets.ReadOnlyModelViewSet):
queryset = IpList.objects.all()
serializer_class = IpListSerializer
class ServiceViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Service.objects.all()
serializer_class = ServiceSerializer
class ServiceLinkViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Service_link.objects.all()
serializer_class = ServiceLinkSerializer
class OuverturePortListViewSet(viewsets.ReadOnlyModelViewSet):
queryset = OuverturePortList.objects.all()
serializer_class = OuverturePortListSerializer
class OuverturePortViewSet(viewsets.ReadOnlyModelViewSet):
queryset = OuverturePort.objects.all()
serializer_class = OuverturePortSerializer
# USER APP