mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-24 20:33:11 +00:00
145 lines
4.9 KiB
Python
145 lines
4.9 KiB
Python
# -*- mode: python; coding: utf-8 -*-
|
|
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
|
|
# se veut agnostique au réseau considéré, de manière à être installable en
|
|
# quelques clics.
|
|
#
|
|
# Copyright © 2019 Arthur Grisel-Davy
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
"""Defines the serializers of the API
|
|
"""
|
|
|
|
from rest_framework import serializers
|
|
|
|
import preferences.models as preferences
|
|
|
|
from re2o.serializers import NamespacedHRField, NamespacedHIField, NamespacedHMSerializer
|
|
|
|
from machines.api.serializers import (
|
|
VlanSerializer,
|
|
Ipv6ListSerializer,
|
|
SOASerializer,
|
|
IpListSerializer,
|
|
NsSerializer,
|
|
MxSerializer,
|
|
TxtSerializer,
|
|
SrvSerializer,
|
|
SshFpSerializer,
|
|
)
|
|
|
|
|
|
class OptionalUserSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.OptionalUser` objects.
|
|
"""
|
|
tel_mandatory = serializers.BooleanField(source='is_tel_mandatory')
|
|
shell_default = serializers.StringRelatedField()
|
|
|
|
class Meta:
|
|
model = preferences.OptionalUser
|
|
fields = ('tel_mandatory', 'gpg_fingerprint',
|
|
'all_can_create_club', 'self_adhesion', 'shell_default',
|
|
'self_change_shell', 'local_email_accounts_enabled', 'local_email_domain',
|
|
'max_email_address',
|
|
)
|
|
|
|
|
|
class OptionalMachineSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.OptionalMachine` objects.
|
|
"""
|
|
|
|
class Meta:
|
|
model = preferences.OptionalMachine
|
|
fields = ('password_machine', 'max_lambdauser_interfaces',
|
|
'max_lambdauser_aliases', 'ipv6_mode', 'create_machine',
|
|
'ipv6')
|
|
|
|
|
|
class OptionalTopologieSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.OptionalTopologie` objects.
|
|
"""
|
|
switchs_management_interface_ip = serializers.CharField()
|
|
|
|
class Meta:
|
|
model = preferences.OptionalTopologie
|
|
fields = ('switchs_ip_type', 'switchs_web_management',
|
|
'switchs_web_management_ssl', 'switchs_rest_management',
|
|
'switchs_management_utils', 'switchs_management_interface_ip',
|
|
'provision_switchs_enabled', 'switchs_provision', 'switchs_management_sftp_creds')
|
|
|
|
|
|
class RadiusOptionSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.RadiusOption` objects
|
|
"""
|
|
|
|
class Meta:
|
|
model = preferences.RadiusOption
|
|
fields = ('radius_general_policy', 'unknown_machine',
|
|
'unknown_machine_vlan', 'unknown_port',
|
|
'unknown_port_vlan', 'unknown_room', 'unknown_room_vlan',
|
|
'non_member', 'non_member_vlan', 'banned', 'banned_vlan',
|
|
'vlan_decision_ok')
|
|
|
|
|
|
class GeneralOptionSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.GeneralOption` objects.
|
|
"""
|
|
|
|
class Meta:
|
|
model = preferences.GeneralOption
|
|
fields = ('general_message_fr', 'general_message_en',
|
|
'search_display_page', 'pagination_number',
|
|
'pagination_large_number', 'req_expire_hrs',
|
|
'site_name', 'main_site_url', 'email_from',
|
|
'GTU_sum_up', 'GTU')
|
|
|
|
class HomeServiceSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.Service` objects.
|
|
"""
|
|
|
|
class Meta:
|
|
model = preferences.Service
|
|
fields = ('name', 'url', 'description', 'image', 'api_url')
|
|
extra_kwargs = {
|
|
'api_url': {'view_name': 'homeservice-detail'}
|
|
}
|
|
|
|
|
|
class AssoOptionSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.AssoOption` objects.
|
|
"""
|
|
|
|
class Meta:
|
|
model = preferences.AssoOption
|
|
fields = ('name', 'siret', 'adresse1', 'adresse2', 'contact',
|
|
'telephone', 'pseudo', 'utilisateur_asso', 'description')
|
|
|
|
|
|
class HomeOptionSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.HomeOption` objects.
|
|
"""
|
|
|
|
class Meta:
|
|
model = preferences.HomeOption
|
|
fields = ('facebook_url', 'twitter_url', 'twitter_account_name')
|
|
|
|
|
|
class MailMessageOptionSerializer(NamespacedHMSerializer):
|
|
"""Serialize `preferences.models.MailMessageOption` objects.
|
|
"""
|
|
|
|
class Meta:
|
|
model = preferences.MailMessageOption
|
|
fields = ('welcome_mail_fr', 'welcome_mail_en')
|