mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-22 11:23:10 +00:00
API support for app machines
This commit is contained in:
parent
98dc4205be
commit
e2736e17df
3 changed files with 400 additions and 26 deletions
|
@ -32,6 +32,27 @@ from cotisations.models import (
|
||||||
Paiement,
|
Paiement,
|
||||||
Cotisation
|
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 (
|
from users.models import (
|
||||||
User,
|
User,
|
||||||
Club,
|
Club,
|
||||||
|
@ -43,22 +64,9 @@ from users.models import (
|
||||||
Ban,
|
Ban,
|
||||||
Whitelist
|
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 FactureSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
class Meta:
|
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):
|
class UserSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
|
|
24
api/urls.py
24
api/urls.py
|
@ -30,14 +30,34 @@ from rest_framework.routers import DefaultRouter
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter()
|
||||||
# COTISATION APP
|
# COTISATIONS APP
|
||||||
router.register(r'factures', views.FactureViewSet)
|
router.register(r'factures', views.FactureViewSet)
|
||||||
router.register(r'ventes', views.VenteViewSet)
|
router.register(r'ventes', views.VenteViewSet)
|
||||||
router.register(r'articles', views.ArticleViewSet)
|
router.register(r'articles', views.ArticleViewSet)
|
||||||
router.register(r'banques', views.BanqueViewSet)
|
router.register(r'banques', views.BanqueViewSet)
|
||||||
router.register(r'paiements', views.PaiementViewSet)
|
router.register(r'paiements', views.PaiementViewSet)
|
||||||
router.register(r'cotisations', views.CotisationViewSet)
|
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'users', views.UserViewSet)
|
||||||
router.register(r'clubs', views.ClubViewSet)
|
router.register(r'clubs', views.ClubViewSet)
|
||||||
router.register(r'adherents', views.AdherentViewSet)
|
router.register(r'adherents', views.AdherentViewSet)
|
||||||
|
|
141
api/views.py
141
api/views.py
|
@ -54,29 +54,56 @@ from users.models import (
|
||||||
Whitelist
|
Whitelist
|
||||||
)
|
)
|
||||||
from machines.models import (
|
from machines.models import (
|
||||||
Service_link,
|
Machine,
|
||||||
Service,
|
MachineType,
|
||||||
Interface,
|
|
||||||
Domain,
|
|
||||||
IpType,
|
IpType,
|
||||||
|
Vlan,
|
||||||
|
Nas,
|
||||||
|
SOA,
|
||||||
|
Extension,
|
||||||
Mx,
|
Mx,
|
||||||
Ns,
|
Ns,
|
||||||
Txt,
|
Txt,
|
||||||
Srv,
|
Srv,
|
||||||
Extension,
|
Interface,
|
||||||
|
Ipv6List,
|
||||||
|
Domain,
|
||||||
|
IpList,
|
||||||
|
Service,
|
||||||
|
Service_link,
|
||||||
OuverturePortList,
|
OuverturePortList,
|
||||||
OuverturePort
|
OuverturePort
|
||||||
)
|
)
|
||||||
|
|
||||||
from .serializers import (
|
from .serializers import (
|
||||||
# COTISATION APP
|
# COTISATIONS APP
|
||||||
FactureSerializer,
|
FactureSerializer,
|
||||||
VenteSerializer,
|
VenteSerializer,
|
||||||
ArticleSerializer,
|
ArticleSerializer,
|
||||||
BanqueSerializer,
|
BanqueSerializer,
|
||||||
PaiementSerializer,
|
PaiementSerializer,
|
||||||
CotisationSerializer,
|
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,
|
UserSerializer,
|
||||||
ClubSerializer,
|
ClubSerializer,
|
||||||
AdherentSerializer,
|
AdherentSerializer,
|
||||||
|
@ -89,7 +116,7 @@ from .serializers import (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# COTISATION APP
|
# COTISATIONS APP
|
||||||
|
|
||||||
|
|
||||||
class FactureViewSet(viewsets.ReadOnlyModelViewSet):
|
class FactureViewSet(viewsets.ReadOnlyModelViewSet):
|
||||||
|
@ -122,6 +149,104 @@ class CotisationViewSet(viewsets.ReadOnlyModelViewSet):
|
||||||
serializer_class = CotisationSerializer
|
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
|
# USER APP
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue