diff --git a/api/serializers.py b/api/serializers.py index 9acacce1..90d00418 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -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): diff --git a/api/urls.py b/api/urls.py index 3281d326..a712cacd 100644 --- a/api/urls.py +++ b/api/urls.py @@ -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) diff --git a/api/views.py b/api/views.py index 29531fb8..db119ce3 100644 --- a/api/views.py +++ b/api/views.py @@ -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