Commit 7c18f1f5 authored by klafyvel's avatar klafyvel
Browse files

Merge branch 'release-2.9' into 'master'

Release 2.9

It is that time of the year again.

See [CHANGELOG.md](https://gitlab.federez.net/re2o/re2o/-/blob/release-2.9/CHANGELOG.md).

Many thanks to the people who made Re2o2.9 possible, thanks to their 575 commits in almost one year of development!

* Jean-Romain Garnier
* Gabriel Detraz
* Hugo Levy-Falk
* Arthur Grisel-Davy
* Corentin Canebier
* Yoann Piétri
* Jean-Marie Mineau
* Leila Bekaddour
* Maxime Bombar

See merge request !592
parents 8c5cfc65 0f7c8414
Pipeline #3216 passed with stage
in 3 minutes and 51 seconds
......@@ -44,5 +44,10 @@ static/logo/
# re2o specific
settings_local.py
local_routers.py
re2o.png
media/
# themes
static/css/themes/*
!static/css/themes/default.css
\ No newline at end of file
Gabriel Detraz <chirac@crans.org> <detraz@crans.org>
Gabriel Detraz <chirac@crans.org> <chirac@crans.org>
Gabriel Detraz <chirac@crans.org> <chirac@arachne>
Gabriel Detraz <chirac@crans.org> <chirac@re2o-test.auro.re>
Gabriel Detraz <chirac@crans.org> <chirac@federez.net>
Gabriel Detraz <chirac@crans.org> <chirac@raspberrypi>
Gabriel Detraz <chirac@crans.org> <detraz@re2o-test.crans.org>
Gabriel Detraz <chirac@crans.org> <detraz@re2o.adm.crans.org>
Gabriel Detraz <chirac@crans.org> <chibrac@re2o-server.crans.org>
Gabriel Detraz <chirac@crans.org> <detraz@crans.crans.org>
Gabriel Detraz <chirac@crans.org> <chirac@re2o-server.crans.org>
Gabriel Detraz <chirac@crans.org> <chirac@hydra>
Gabriel Detraz <chirac@crans.org> <chirac@re2o-bcfg2.adm.crans.org>
Gabriel Detraz <chirac@crans.org> <detrazcrans.org>
Gabriel Detraz <chirac@crans.org> <detraz@vo.crans.org>
Maël Kervella <kervella.mael@gmail.com>
Maël Kervella <kervella.mael@gmail.com> <dev@maelkervella.eu>
Maël Kervella <kervella.mael@gmail.com> <mael.kervella@supelec.fr>
Jean-Romain Garnier <jean-romain.garnier@supelec.fr>
Jean-Romain Garnier <jean-romain.garnier@supelec.fr> <git@jean-romain.com>
Hugo Levy-Falk <hugo@klafyvel.me> <hugo.levy--falk@supelec.fr>
Hugo Levy-Falk <hugo@klafyvel.me> <klafyvel@gmail.com>
Hugo Levy-Falk <hugo@klafyvel.me> <klafyvel@klafyvel.me>
Hugo Levy-Falk <hugo@klafyvel.me> <klafyvel@federez.net>
Arthur Grisel-Davy <grisel-davy@crans.org> <grisel-davy@crans.org>
Arthur Grisel-Davy <grisel-davy@crans.org> <grisel-davy@re2o-server.crans.org>
Arthur Grisel-Davy <grisel-davy@crans.org> <grisel-davy@re2o-test.crans.org>
Arthur Grisel-Davy <grisel-davy@crans.org> <grisel-davy@re2o.adm.crans.org>
Arthur Grisel-Davy <grisel-davy@crans.org> <grisel-davy@nazgul.rezometz.org>
Arthur Grisel-Davy <grisel-davy@crans.org> <grisel-davy@re2o-test.auro.re>
Arthur Grisel-Davy <grisel-davy@crans.org> <grizzly@crans.org>
Arthur Grisel-Davy <grisel-davy@crans.org> <grizzly@raspberrypi>
Lara Kermarec <lhark@lharktop> <lhark@lharktop>
Lara Kermarec <lhark@lharktop> <lhark@arachne>
Lara Kermarec <lhark@lharktop> <lhark@pwc>
Lara Kermarec <lhark@lharktop> <goulven.kermarec@supelec.fr>
Lara Kermarec <lhark@lharktop> <lhark@federez-test>
Lara Kermarec <lhark@lharktop> <lhark@hydra>
Augustin Lemesle <augustin.lemesle@supelec.fr> <augustin.lemesle@supelec.fr>
Augustin Lemesle <augustin.lemesle@supelec.fr> <Dalahro@arachne>
Corentin Canebier <corentin@canebier.fr>
Corentin Canebier <corentin@canebier.fr> <corentin.canebier@student-cs.fr>
Root `root` Root <root@arachne>
Root `root` Root <root@arachne> <root@hydra.rezometz.org>
Root `root` Root <root@arachne> <root@federez-test.crans.org>
Root `root` Root <root@arachne> <root@gorgoroth>
Root `root` Root <root@arachne> <root@raspberrypi>
Root `root` Root <root@arachne> <root@nevrast>
Root `root` Root <root@arachne> <root@pwc>
Root `root` Root <root@arachne> <root@federez.net>
Root `root` Root <root@arachne> <root@hydra>
Root `root` Root <root@arachne> <root@morgoth.rez>
Root `root` Root <root@arachne> <root@re2o-server.crans.org>
Yoann Piétri <me@nanoy.fr>
Yoann Piétri <me@nanoy.fr> <yoann.pietri@supelec.fr>
Guillaume Goessel <rezo@guimoz.fr>
Guillaume Goessel <rezo@guimoz.fr> <guillaume.goessel@supelec.fr>
Guillaume Goessel <rezo@guimoz.fr> <guillaume.goessel@hotmail.com>
Guillaume Goessel <rezo@guimoz.fr> <me+federez@guimoz.fr>
David Sinquin <david.RezoMetz@sinquin.eu>
David Sinquin <david.RezoMetz@sinquin.eu> <david.rezo@sinquin.eu>
David Sinquin <david.RezoMetz@sinquin.eu> <david.federez.ldap@sinquin.eu>
Matthieu Michelet <matthieu.michelet@supelec.fr>
Matthieu Michelet <matthieu.michelet@supelec.fr> <michelet.matthieu@supelec.fr>
Jean-Marie Mineau <mineau.jean.marie@gmail.com>
~anonymised~ <sellem+re2o@crans.org>
~anonymised~ <sellem+re2o@crans.org> <sellem@crans.org>
Thibault de Boutray <me@thibaultdeboutray.pro>
Thibault de Boutray <me@thibaultdeboutray.pro> <thibaultdeboutray@gmail.com>
Fardale <fardale+git@crans.org>
Fardale <fardale+git@crans.org> <arrighi@crans.org>
Laouen Fernet <laouen.fernet@supelec.fr>
Laouen Fernet <laouen.fernet@supelec.fr> FERNET Laouen <laouen.fernet@supelec.fr>
Bombar Maxime <bombar@crans.org>
Leïla Bekaddour <leila.bekaddour@student-cs.fr>
Leïla Bekaddour <leila.bekaddour@student-cs.fr> <leila@ec-mac-cr-sho.home>
edpibu <edpibu@crans.org>
edpibu <edpibu@crans.org> <edpibu@re2o-test.crans.org>
Éloi Alain <eloi.alain@supelec.fr>
Éloi Alain <eloi.alain@supelec.fr> <eloi.alain@metz.supelec.fr>
Gabriel Le Bouder <lebouder@crans.org>
Gabriel Le Bouder <lebouder@crans.org> <lebouder@re2o-server.crans.org>
Charlie Jacomme <jacomme@crans.org>
Charlie Jacomme <jacomme@crans.org> <jacomme@crans.org>
Benjamin Graillot <graillot@crans.org>
Benjamin Graillot <graillot@crans.org> <graillot@crans.org>
# Re2o 2.9
## Install steps
To install the latest version of Re2o, checkout the [dedicated wiki entry](https://gitlab.federez.net/re2o/re2o/-/wikis/User-Documentation/Quick-Start#update-re2o).
## Post-install steps
### MR 531: FreeRADIUS Python3 backend
On the Radius server, add `buster-backports` to your `/etc/apt/sources.list`:
```bash
echo "deb http://deb.debian.org/debian buster-backports main contrib" >> /etc/apt/sources.list
```
**Note:** If you are running Debian Bullseye, the package should already be available without going through backports.
Then install the new required packages:
```bash
apt update
apt install -t buster-backports freeradius
cat apt_requirements_radius.txt | xargs sudo apt -y install
```
### MR 582: Autocomplete light
On the Re2o server, install the new dependency and run `collectstatic`:
```bash
sudo pip3 install -r pip_requirements.txt
python3 manage.py collectstatic
```
### MR 589: Move LDAP to optional app
Add `ldap_sync` to your optional apps in your local settings (`re2o/settings_local.py`) if you want to keep using the LDAP synchronisation.
### Final steps
As usual, run the following commands after updating:
```bash
python3 manage.py migrate
python3 manage.py compilemessages
sudo service apache2 reload
```
## New features
Here is a list of noteworthy features brought by this update:
* [!488](https://gitlab.federez.net/re2o/re2o/-/merge_requests/488): Use `+` in searches to combine keywords (e.g. `John+Doe`).
* [!495](https://gitlab.federez.net/re2o/re2o/-/merge_requests/495): Add optional behavior allowing users to override another user's room, if that user is no longer active.
* [!496](https://gitlab.federez.net/re2o/re2o/-/merge_requests/496): Add option to allow users to choose their password during account creation. They will have to separately confirm their email address.
* [!504](https://gitlab.federez.net/re2o/re2o/-/merge_requests/504): Add setting to change the minimum password length.
* [!507](https://gitlab.federez.net/re2o/re2o/-/merge_requests/507): New form for editing lists of rights that should make everyone happier.
* [!512](https://gitlab.federez.net/re2o/re2o/-/merge_requests/512): Add ability to comment on tickets.
* [!513](https://gitlab.federez.net/re2o/re2o/-/merge_requests/513): IP and MAC address history (`Statistics > Machine history` tab) which also works for deleted interfaces. Uses already existing history so events before the upgrade are taken into account.
* [!516](https://gitlab.federez.net/re2o/re2o/-/merge_requests/516): Detailed events in history views (e.g. show `old_email -> new_email`).
* [!519](https://gitlab.federez.net/re2o/re2o/-/merge_requests/519): Add ability to filter event logs (e.g. to show all the subscriptions added by an admin).
* [!569](https://gitlab.federez.net/re2o/re2o/-/merge_requests/569): Refactor navbar to make menu navigation easier.
* [!569](https://gitlab.federez.net/re2o/re2o/-/merge_requests/569): Add ability to install custom themes (checkout [this repository](https://gitlab.federez.net/re2o/re2o-themes) for a list of Re2o themes).
* [!578](https://gitlab.federez.net/re2o/re2o/-/merge_requests/578) : Migrations squashed to ease the installation process.
* [!582](https://gitlab.federez.net/re2o/re2o/-/merge_requests/582): Improve autocomplete fields so they load faster and have a clearer behavior (no more entering a value without clicking and thinking it was taken into account).
* [!589](https://gitlab.federez.net/re2o/re2o/-/merge_requests/589): Move LDAP to a separate optional app.
* Plenty of bug fixes.
You can view the full list of closed issues [here](https://gitlab.federez.net/re2o/re2o/-/issues?scope=all&state=all&milestone_title=Re2o%202.9).
# Before Re2o 2.9
## MR 160: Datepicker
Install libjs-jquery libjs-jquery-ui libjs-jquery-timepicker libjs-bootstrap javascript-common
......@@ -21,7 +90,6 @@ rm static_files/js/jquery-2.2.4.min.js
rm static/css/jquery-ui-timepicker-addon.css
```
## MR 159: Graph topo & MR 164: branche de création de graph
Add a graph of the network topology
......@@ -34,7 +102,6 @@ Create the *media/images* directory:
mkdir -p media/images
```
## MR 163: Fix install re2o
Refactored install_re2o.sh script.
......@@ -45,8 +112,6 @@ install_re2o.sh help
* The installation templates (LDIF files and `re2o/settings_locale.example.py`) have been changed to use `example.net` instead of `example.org` (more neutral and generic)
## MR 176: Add awesome Logo
Add the logo and fix somme issues on the navbar and home page. Only collecting the statics is needed:
......@@ -54,7 +119,6 @@ Add the logo and fix somme issues on the navbar and home page. Only collecting t
python3 manage.py collectstatic
```
## MR 172: Refactor API
Creates a new (nearly) REST API to expose all models of Re2o. See [the dedicated wiki page](https://gitlab.federez.net/federez/re2o/wikis/API/Raw-Usage) for more details on how to use it.
......@@ -75,7 +139,6 @@ OPTIONAL_APPS = (
)
```
## MR 177: Add django-debug-toolbar support
Add the possibility to enable `django-debug-toolbar` in debug mode. First install the APT package:
......@@ -203,3 +266,30 @@ If you use MySQL, please run
```
SET GLOBAL SQL_MODE=ANSI_QUOTES;
```
## MR 531
To use the freeradius python3 backend, please add buster-backports sources to
your apt lists.
Then, install and update freeradius :
```bash
apt install -t buster-backports freeradius
apt install python3-dev
```
Make sure that all depending packages (python3-django etc) provided in the new
apt_requirements_radius.txt are installed.
## MR 535 : Routers
It is now possible to use a custom router file, if you want to have mutli database
support, with for example one as master database and one as replica database.
If you want to add a database routers, please fill in in settings_local.py
and add your databse.
Then, add a file "local_routers.py" in folder app re2o, and add your router path
in the settings_local.py file :
```python
LOCAL_ROUTERS = ["re2o.local_routers.DbRouter"]
```
**Note:** English version below.
# Re2o
GNU public license v2.0
## Avant propos
Re2o est un logiciel d'administration développé initialement au rezometz. Il
se veut agnostique au réseau considéré, de manière à être installable en
quelques clics.
Re2o est un logiciel d'administration développé initialement au [Rézo Metz](https://www.rezometz.org/). Il
se veut agnostique au réseau considéré, de manière à être installable et configurable facilement.
Il utilise le framework django avec python3. Il permet de gérer les adhérents,
les machines, les factures, les droits d'accès, les switchs et la topologie du
réseau.
De cette manière, il est possible de pluguer très facilement des services
dessus, qui accèdent à la base de donnée en passant par django (ex : dhcp), en
chargeant la liste de toutes les mac-ip, ou la liste des mac-ip autorisées sur
le réseau (adhérent à jour de cotisation).
Il est possible d'activer très facilement des services qui améliorerons les possibilités de Re2o pour convenir au mieux aux besoins de chaque association.
# Installation
## Installation
Un tutoriel pour installer le projet est disponible [sur le wiki](https://gitlab.federez.net/federez/re2o/wikis/User%20Documentation/Quick%20Start).
# Installations Optionnelles
## Générer le schéma des dépendances
## Fonctionnement Général
Re2o utilise le Framework Django et suit donc le principe de toutes les applications Django. Les différents composants sont les models (qui définissent les entrées de la base de données), les templates (qui définissent les pages), les views (qui génèrent les templates avec les données pertinentes), et les forms (qui définissent les pages de modification des objets). Ce framework permet de manipuler les données comme des objets Python.
Tous ces composants sont regroupés en apps (users, machines, topologie,...). Certaines de ces apps constituent le coeur de Re2o et sont indispensables à son fonctionnement. Certaines autres apps sont optionnelles et peuvent être activées en fonction des besoins de chaque association.
## API Rest
Les données stockées dans Re2o sont disponibles via un API Rest. Les services installés sur d'autres machines (dhcp, dns, firewall,...) utilisent cet API pour avoir accès aux données des utilisateurs et fonctionner.
# Wiki
Le [Wiki](https://gitlab.federez.net/federez/re2o/-/wikis/home) est accessible sur le gitlab de Federez. Il regroupe les informations et instructions pour la plupart des composants de Re2o.
----
# Re2o
Pour cela :
* apt install python3-django-extensions
* python3 manage.py graph_models -a -g -o re2o.png
GNU Public license v2.0
# Fonctionnement interne
## Foreword
## Fonctionnement général
Re2o is a management software initially developed at [Rézo Metz](https://www.rezometz.org/). It is now in use in several student organizations. It aims to remain agnostic of the organization that uses it and be easy to setup.
Re2o est séparé entre les models, qui sont visibles sur le schéma des
dépendances. Il s'agit en réalité des tables sql, et les fields étant les
colonnes.
Ceci dit il n'est jamais nécessaire de toucher directement au sql, django
procédant automatiquement à tout cela.
On crée donc différents models (user, right pour les droits des users,
interfaces, IpList pour l'ensemble des adresses ip, etc)
Re2o is based on the Django framework and Python3. Its core functionalities include managing the members, their machines, their invoices and their rights to the network but also the topology of the network and its devices.
On top of this, it is possible to plug services to enhance the possibilities and fit the need of each organization.
Du coté des forms, il s'agit des formulaires d'édition des models. Il
s'agit de ModelForms django, qui héritent des models très simplement, voir la
documentation django models forms.
# Setup
Enfin les views, générent les pages web à partir des forms et des templates.
A tutorial is available on the [Wiki](https://gitlab.federez.net/federez/re2o/wikis/User%20Documentation/Quick%20Start) to describe the setup process.
## Fonctionnement avec les services
# General Functioning
Les services dhcp.py, dns.py etc accèdent aux données via des vues rest.
Celles-ci se trouvent dans machines/views.py. Elles sont générées via
machines/serializers.py qui génère les vues. IL s'agit de vues en json utilisées
par re2o-tools pour récupérer les données.
Il est nécessaire de créer un user dans re2o avec le droit serveur qui permet
d'accéder à ces vues, utilisé par re2o-tools.
Re2o follow the general functioning of a Django project and split its components between the models (describe the database objects), the templates (that define the front end), the views (that populate and serve the templates) and the forms (that provide front end object edition/creation/removal). This framework provide an abstraction layer to manipulate SQL objects as Python objects.
# Requète en base de donnée
Functionalities are grouped in apps (users, machines, topologie,...). Along the core functionalities, optional functionalities are available and can be activated in the preferences.
Pour avoir un shell, lancer :
```.bash
python3 manage.py shell
```
## Rest API
Pour charger des objets (exemple avec User), faire :
```.python
from users.models import User
```
Re2o provide a Rest API to allow external services (dhcp, dns, firewall,...) installed on remote machines to access database informations in Json format. Those services are optional and should be installed and activated to fit each organization needs.
Pour charger les objets django, il suffit de faire `User.objects.all()`
pour tous les users par exemple.
Il est ensuite aisé de faire des requêtes, par exemple
`User.objects.filter(pseudo='test')`
# Wiki
Des exemples et la documentation complète sur les requêtes django sont
disponible sur le site officiel.
The [Wiki](https://gitlab.federez.net/federez/re2o/-/wikis/home) is available to provide information and instruction for most components of Re2o.
# -*- mode: python; coding: utf-8 -*-
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
......@@ -31,32 +31,7 @@ from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext as _
def _create_api_permission():
"""Creates the 'use_api' permission if not created.
The 'use_api' is a fake permission in the sense it is not associated with an
existing model and this ensure the permission is created every time this file
is imported.
"""
api_content_type, created = ContentType.objects.get_or_create(
app_label=settings.API_CONTENT_TYPE_APP_LABEL,
model=settings.API_CONTENT_TYPE_MODEL,
)
if created:
api_content_type.save()
api_permission, created = Permission.objects.get_or_create(
name=settings.API_PERMISSION_NAME,
content_type=api_content_type,
codename=settings.API_PERMISSION_CODENAME,
)
if created:
api_permission.save()
_create_api_permission()
def can_view(user):
def can_view(user, *args, **kwargs):
"""Check if an user can view the application.
Args:
......
# -*- mode: python; coding: utf-8 -*-
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
......
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
......@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 2.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-11-19 23:43+0100\n"
"POT-Creation-Date: 2021-01-24 11:51+0100\n"
"PO-Revision-Date: 2019-01-07 01:37+0100\n"
"Last-Translator: Laouen Fernet <laouen.fernet@supelec.fr>\n"
"Language-Team: \n"
......@@ -31,7 +31,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: api/acl.py:77
#: api/acl.py:52
msgid "You don't have the right to view this application."
msgstr "Vous n'avez pas le droit de voir cette application."
......
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
from django.conf import settings
def create_api_permission(apps, schema_editor):
"""Creates the 'use_api' permission if not created.
The 'use_api' is a fake permission in the sense it is not associated with an
existing model and this ensure the permission is created.
"""
ContentType = apps.get_model("contenttypes", "ContentType")
Permission = apps.get_model("auth", "Permission")
api_content_type, created = ContentType.objects.get_or_create(
app_label=settings.API_CONTENT_TYPE_APP_LABEL,
model=settings.API_CONTENT_TYPE_MODEL,
)
if created:
api_content_type.save()
api_permission, created = Permission.objects.get_or_create(
name=settings.API_PERMISSION_NAME,
content_type=api_content_type,
codename=settings.API_PERMISSION_CODENAME,
)
if created:
api_permission.save()
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.RunPython(create_api_permission)
]
# -*- mode: python; coding: utf-8 -*-
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
......
# -*- mode: python; coding: utf-8 -*-
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
......@@ -239,6 +239,11 @@ class AutodetectACLPermission(permissions.BasePermission):
if getattr(view, "_ignore_model_permissions", False):
return True
# Bypass permission verifications if it is a functional view
# (permissions are handled by ACL)
if not hasattr(view, "queryset") and not hasattr(view, "get_queryset"):
return True
if not request.user or not request.user.is_authenticated:
return False
......
# -*- mode: python; coding: utf-8 -*-
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
# Copyright © 2018 Mael Kervella
# Copyright © 2020 Corentin Canebier
#
# 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
......@@ -41,6 +42,7 @@ class AllViewsRouter(DefaultRouter):
def __init__(self, *args, **kwargs):
self.view_registry = []
self.functional_view_registry = []
super(AllViewsRouter, self).__init__(*args, **kwargs)
def register_viewset(self, *args, **kwargs):
......@@ -64,6 +66,19 @@ class AllViewsRouter(DefaultRouter):
name = self.get_default_name(pattern)
self.view_registry.append((pattern, view, name))
def register_functional_view(self, pattern, view, name=None):
"""Register a functional view in the router.
Args:
pattern: The URL pattern to use for this view.
view: The functional view to register.
name: An optional name for the route generated. Defaults is
based on the pattern last section (delimited by '/').
"""
if name is None:
name = self.get_default_name(pattern)
self.functional_view_registry.append((pattern, view, name))
@staticmethod
def get_default_name(pattern):
"""Returns the name to use for the route if none was specified.
......@@ -155,4 +170,7 @@ class AllViewsRouter(DefaultRouter):
for pattern, view, name in self.view_registry:
urls.append(url(pattern, view.as_view(), name=name))
for pattern, view, name in self.functional_view_registry:
urls.append(url(pattern, view, name=name))
return urls
This diff is collapsed.
# -*- mode: python; coding: utf-8 -*-
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
......
# -*- mode: python; coding: utf-8 -*-
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
......
# -*- mode: python; coding: utf-8 -*-
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
# Copyright © 2018 Maël Kervella
# Copyright © 2020 Corentin Canebier
#
# 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
......@@ -28,114 +29,39 @@ can be generated automatically.
"""
from django.conf.urls import url, include
from importlib import import_module
from . import views
from .routers import AllViewsRouter
from django.conf import settings
router = AllViewsRouter()
# COTISATIONS
router.register_viewset(r"cotisations/facture", views.FactureViewSet)
router.register_viewset(r"cotisations/vente", views.VenteViewSet)
router.register_viewset(r"cotisations/article", views.ArticleViewSet)
router.register_viewset(r"cotisations/banque", views.BanqueViewSet)
router.register_viewset(r"cotisations/paiement", views.PaiementViewSet)
router.register_viewset(r"cotisations/cotisation", views.CotisationViewSet)
# MACHINES
router.register_viewset(r"machines/machine", views.MachineViewSet)
router.register_viewset(r"machines/machinetype", views.MachineTypeViewSet)
router.register_viewset(r"machines/iptype", views.IpTypeViewSet)
router.register_viewset(r"machines/vlan", views.VlanViewSet)
router.register_viewset(r"machines/nas", views.NasViewSet)
router.register_viewset(r"machines/soa", views.SOAViewSet)
router.register_viewset(r"machines/extension", views.ExtensionViewSet)
router.register_viewset(r"machines/mx", views.MxViewSet)
router.register_viewset(r"machines/ns", views.NsViewSet)
router.register_viewset(r"machines/txt", views.TxtViewSet)
router.register_viewset(r"machines/dname", views.DNameViewSet)
router.register_viewset(r"machines/srv", views.SrvViewSet)
router.register_viewset(r"machines/sshfp", views.SshFpViewSet)
router.register_viewset(r"machines/interface", views.InterfaceViewSet)
router.register_viewset(r"machines/ipv6list", views.Ipv6ListViewSet)
router.register_viewset(r"machines/domain", views.DomainViewSet)
router.register_viewset(r"machines/iplist", views.IpListViewSet)
router.register_viewset(r"machines/service", views.ServiceViewSet)
router.register_viewset(
r"machines/servicelink", views.ServiceLinkViewSet, base_name="servicelink"
)
router.register_viewset(r"machines/ouvertureportlist", views.OuverturePortListViewSet)
router.register_viewset(r"machines/ouvertureport", views.OuverturePortViewSet)
router.register_viewset(r"machines/role", views.RoleViewSet)
# PREFERENCES
router.register_view(r"preferences/optionaluser", views.OptionalUserView),
router.register_view(r"preferences/optionalmachine", views.OptionalMachineView),
router.register_view(r"preferences/optionaltopologie", views.OptionalTopologieView),
router.register_view(r"preferences/radiusoption", views.RadiusOptionView),
router.register_view(r"preferences/generaloption", views.GeneralOptionView),
router.register_viewset(
r"preferences/service", views.HomeServiceViewSet, base_name="homeservice"
),
router.register_view(r"preferences/assooption", views.AssoOptionView),
router.register_view(r"preferences/homeoption", views.HomeOptionView),
router.register_view(r"preferences/mailmessageoption", views.MailMessageOptionView),
# TOPOLOGIE
router.register_viewset(r"topologie/stack", views.StackViewSet)
router.register_viewset(r"topologie/acesspoint", views.AccessPointViewSet)
router.register_viewset(r"topologie/switch", views.SwitchViewSet)
router.register_viewset(r"topologie/server", views.ServerViewSet)
router.register_viewset(r"topologie/modelswitch", views.ModelSwitchViewSet)
router.register_viewset(r"topologie/constructorswitch", views.ConstructorSwitchViewSet)
router.register_viewset(r"topologie/switchbay", views.SwitchBayViewSet)
router.register_viewset(r"topologie/building", views.BuildingViewSet)
router.register_viewset(
r"topologie/switchport", views.SwitchPortViewSet, base_name="switchport"