mirror of https://gitlab.federez.net/re2o/re2o
committed by
klafyvel
18 changed files with 736 additions and 1 deletions
@ -0,0 +1,33 @@ |
|||
# -*- 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 Gabriel Détraz |
|||
# |
|||
# 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. |
|||
""" |
|||
The database models for the 'apps' app of re2o. |
|||
|
|||
For further details on each of those models, see the documentation details for |
|||
each. |
|||
""" |
|||
|
|||
|
|||
from django.apps import AppConfig |
|||
|
|||
|
|||
class MultiOpConfig(AppConfig): |
|||
name = 'multi_op' |
|||
@ -0,0 +1,54 @@ |
|||
# -*- 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 © 2017 Gabriel Détraz |
|||
# Copyright © 2017 Goulven Kermarec |
|||
# Copyright © 2017 Augustin Lemesle |
|||
# Copyright © 2017 Maël Kervella |
|||
# |
|||
# 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. |
|||
""" |
|||
Select a dorm |
|||
""" |
|||
|
|||
|
|||
from django import forms |
|||
from django.forms import ModelForm, Form |
|||
from re2o.field_permissions import FieldPermissionFormMixin |
|||
from re2o.mixins import FormRevMixin |
|||
from django.utils.translation import ugettext_lazy as _ |
|||
|
|||
from topologie.models import( |
|||
Dormitory, |
|||
) |
|||
|
|||
|
|||
class DormitoryForm(FormRevMixin, Form): |
|||
"""Select a dorm""" |
|||
dormitory = forms.ModelMultipleChoiceField( |
|||
queryset=Dormitory.objects.all(), |
|||
label=_("Dormitory"), |
|||
widget=forms.CheckboxSelectMultiple, |
|||
required=False |
|||
) |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(DormitoryForm, self).__init__(*args, **kwargs) |
|||
|
|||
|
|||
|
|||
|
|||
@ -0,0 +1,39 @@ |
|||
# -*- 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 Gabriel Détraz |
|||
# |
|||
# 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. |
|||
""" |
|||
The database models for the 'preference' app of re2o. |
|||
|
|||
For further details on each of those models, see the documentation details for |
|||
each. |
|||
""" |
|||
|
|||
|
|||
from django import forms |
|||
from django.forms import ModelForm, Form |
|||
from django.utils.translation import ugettext_lazy as _ |
|||
|
|||
from .models import Preferences |
|||
|
|||
class EditPreferencesForm(ModelForm): |
|||
""" Edit the ticket's settings""" |
|||
class Meta: |
|||
model = Preferences |
|||
fields = '__all__' |
|||
@ -0,0 +1,40 @@ |
|||
# -*- 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 Gabriel Détraz |
|||
# |
|||
# 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. |
|||
""" |
|||
Fichier définissant les administration des models de preference |
|||
""" |
|||
|
|||
|
|||
from django.db import models |
|||
from django.utils.translation import ugettext_lazy as _ |
|||
|
|||
class Preferences(models.Model): |
|||
""" Definition of the app settings""" |
|||
|
|||
enabled_dorm = models.ManyToManyField( |
|||
'topologie.Dormitory', |
|||
related_name='vlan_tagged', |
|||
blank=True, |
|||
verbose_name=_("Enabled dorm") |
|||
) |
|||
|
|||
class Meta: |
|||
verbose_name = _("Dormitory of connection settings") |
|||
@ -0,0 +1,69 @@ |
|||
{% comment %} |
|||
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 © 2017 Gabriel Détraz |
|||
Copyright © 2017 Goulven Kermarec |
|||
Copyright © 2017 Augustin Lemesle |
|||
|
|||
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. |
|||
{% endcomment %} |
|||
|
|||
{% load acl %} |
|||
{% load logs_extra %} |
|||
{% load i18n %} |
|||
|
|||
{% if room_list.paginator %} |
|||
{% include 'pagination.html' with list=room_list %} |
|||
{% endif %} |
|||
|
|||
<table class="table table-striped"> |
|||
<thead> |
|||
<tr> |
|||
{% trans "Room" as tr_room %} |
|||
{% trans "Building" as tr_building %} |
|||
<th>{% include 'buttons/sort.html' with prefix='building' col='name' text=tr_building %}</th> |
|||
<th>{% include 'buttons/sort.html' with prefix='room' col='name' text=tr_room %}</th> |
|||
<th>{% trans "Connnected on" %}</th> |
|||
<th>{% trans "User" %}</th> |
|||
<th>{% trans "Details" %}</th> |
|||
<th>{% trans "End of subscription on" %}</th> |
|||
<th>{% trans "Internet access" %}</th> |
|||
</tr> |
|||
</thead> |
|||
{% for room in room_list %} |
|||
<tr> |
|||
<td>{{ room.building }}</td> |
|||
<td>{{ room.name }}</td> |
|||
<td>{% if room.port_set.all %}<span class="label label-success">AURORE{% else %}<span class="label label-danger">{% trans "Other operator" %}{% endif %}</span></td> |
|||
<td>{% if room.adherent %}<a href="{% url 'users:profil' room.adherent.id%}">{{ room.adherent }}</a>{% else %} {% trans "Aucun" %}{% endif %}</td> |
|||
<td>{{ room.details }}</td> |
|||
<td>{% if room.user.is_adherent %}{{ room.user.end_adhesion }}{% else %}{% trans "Not a member" %}{% endif %}</td> |
|||
<td> |
|||
{% if room.user.has_access == True %} |
|||
<i class="text-success">{% trans "Active" %}</i> |
|||
{% else %} |
|||
<i class="text-danger">{% trans "Disabled" %}</i> |
|||
{% endif %} |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
|
|||
{% if room_list.paginator %} |
|||
{% include 'pagination.html' with list=room_list %} |
|||
{% endif %} |
|||
|
|||
@ -0,0 +1,48 @@ |
|||
{% extends 'machines/sidebar.html' %} |
|||
{% comment %} |
|||
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 © 2017 Gabriel Détraz |
|||
Copyright © 2017 Goulven Kermarec |
|||
Copyright © 2017 Augustin Lemesle |
|||
Copyright © 2017 Maël Kervella |
|||
|
|||
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. |
|||
{% endcomment %} |
|||
|
|||
{% load bootstrap3 %} |
|||
{% load i18n %} |
|||
|
|||
{% block title %}{% trans "Ticket" %}{% endblock %} |
|||
|
|||
{% block content %} |
|||
<h2> {% trans "Tickets settings modification" %}</h2> |
|||
|
|||
{% for message in messages %} |
|||
<div class="{{ message| bootstrap_message_classes }} alert-dismissable"> |
|||
<button type="button" class="close" data_dismiss="alert" aria-hidden="true">}</button> |
|||
{{ message | safe }} |
|||
</div> |
|||
{% endfor %} |
|||
|
|||
<form class="form" method="post"> |
|||
{% csrf_token %} |
|||
{% bootstrap_field preferencesform.publish_address %} |
|||
{% bootstrap_field preferencesform.mail_language %} |
|||
{% bootstrap_button "Editer" button_type="submit" icon='ok' button_class='btn-success' %} |
|||
</form> |
|||
{% endblock %} |
|||
@ -0,0 +1,58 @@ |
|||
{% extends 'machines/sidebar.html' %} |
|||
{% comment %} |
|||
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 © 2017 Gabriel Détraz |
|||
Copyright © 2017 Goulven Kermarec |
|||
Copyright © 2017 Augustin Lemesle |
|||
Copyright © 2017 Maël Kervella |
|||
|
|||
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. |
|||
{% endcomment %} |
|||
|
|||
{% load bootstrap3 %} |
|||
{% load massive_bootstrap_form %} |
|||
{% load i18n %} |
|||
|
|||
{% block title %}{% trans "Ticket" %}{% endblock %} |
|||
|
|||
{% block content %} |
|||
<h2> Ouverture d'un Ticket </h2> |
|||
|
|||
<form class="form" method="post"> |
|||
{% csrf_token %} |
|||
{% if not user.is_authenticated %} |
|||
<p>{% trans "Vous n'êtes pas authentifié. Veuillez fournir une adresse mail afin que nous puissions vous recontacter." %}</p> |
|||
{% bootstrap_field ticketform.email %} |
|||
{% endif %} |
|||
{% bootstrap_field ticketform.title %} |
|||
<br> |
|||
<p>{% trans "Description de votre problème. Veuillez fournir le plus d'informations possible afin de faciliter la recherche de solution. Voici quelques informations dont nous pourions avoir besoin:" %}</p> |
|||
<ul class="list"> |
|||
<li> |
|||
<p> {% trans "Le type de votre problème (adhesion, connexion, paiement ou autre)." %}</p> |
|||
</li> |
|||
<li> |
|||
<p> {% trans "Les conditions dans lesquelles vous rencontrez le problème (Wifi/filaire, sur tout les apareils ou sur un seul. Est-ce une nouvelle machine ?" %}</p> |
|||
</li> |
|||
<li> |
|||
<p> {% trans "Les endroits dans lequels le problème survient (chez vous, dans une partie commune, dans un batiment en particulier)." %}</p> |
|||
</ul> |
|||
{% bootstrap_field ticketform.description %} |
|||
{% bootstrap_button "Ouvrir le Ticket" button_type="submit" icon='ok' button_class='btn-success' %} |
|||
</form> |
|||
{% endblock %} |
|||
@ -0,0 +1,34 @@ |
|||
{% extends 'users/sidebar.html' %} |
|||
{% comment %} |
|||
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 © 2017 Gabriel Détraz |
|||
Copyright © 2017 Goulven Kermarec |
|||
Copyright © 2017 Augustin Lemesle |
|||
|
|||
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. |
|||
{% endcomment %} |
|||
|
|||
{% load bootstrap3 %} |
|||
{% load i18n %} |
|||
|
|||
{% block title%}{% trans "Tickets" %}{% endblock %} |
|||
|
|||
{% block content %} |
|||
<h2>{% trans "Tickets" %}</h2> |
|||
{% include 'tickets/aff_tickets.html' with tickets_list=tickets_list %} |
|||
{% endblock %} |
|||
@ -0,0 +1,53 @@ |
|||
{% extends 'multi_op/sidebar.html' %} |
|||
{% comment %} |
|||
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 © 2017 Gabriel Détraz |
|||
Copyright © 2017 Goulven Kermarec |
|||
Copyright © 2017 Augustin Lemesle |
|||
|
|||
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. |
|||
{% endcomment %} |
|||
|
|||
{% load bootstrap3 %} |
|||
{% load acl %} |
|||
{% load i18n %} |
|||
|
|||
{% block title %}{% trans "Multi Operators" %}{% endblock %} |
|||
|
|||
{% block content %} |
|||
|
|||
{% if dormitory_form %} |
|||
{% bootstrap_form_errors dormitory_form %} |
|||
{% endif %} |
|||
|
|||
<h2>{% trans "Rooms connections" %}</h2> |
|||
|
|||
{% if dormitory_form %} |
|||
<form class="form" method="post"> |
|||
{% csrf_token %} |
|||
{% bootstrap_form dormitory_form %} |
|||
{% bootstrap_button "Select Dormitory" icon='ok' button_class='btn-success' %} |
|||
</form> |
|||
{% endif %} |
|||
|
|||
{% include 'multi_op/aff_room_state.html' with room_list=room_list %} |
|||
<br /> |
|||
<br /> |
|||
<br /> |
|||
{% endblock %} |
|||
|
|||
@ -0,0 +1,2 @@ |
|||
{% load i18n %} |
|||
<li><a href="{% url 'multi_op:aff-state-global' %}"><i class="fa fa-ticket"></i>{% trans "Tickets" %}</a></li> |
|||
@ -0,0 +1,6 @@ |
|||
{% load i18n %} |
|||
<li> |
|||
<a href="{% url 'tickets:new-ticket' %}"> |
|||
<i class="fa fa-ticket"></i> {% trans "Ouvrir un ticket" %} |
|||
</a> |
|||
</li> |
|||
@ -0,0 +1,36 @@ |
|||
{% load i18n %} |
|||
|
|||
<div class="panel panel-default" id="tickets"> |
|||
<div class="panel-heading" data-toggle="collapse" href="#collapse_tickets"> |
|||
<h4 class="panel-title"> |
|||
<a><i class="fa fa-ticket"></i> {% trans "Tickets" %}</a> |
|||
</h4> |
|||
</div> |
|||
|
|||
<div id="collapse_tickets" class="panel-collapse panel-body collapse"> |
|||
|
|||
<a class="btn btn-primary btn-sm" role="button" href="{% url 'tickets:edit-preferences-tickets' %}"> |
|||
<i class="fa fa-edit"></i> |
|||
{% trans "Edit" %} |
|||
</a> |
|||
<p></p> |
|||
|
|||
<div class="table-responsive"> |
|||
<table class="table"> |
|||
<tr> |
|||
<th><p>{% trans "Publication email address"%}</p></th> |
|||
{% if preferences.publish_address %} |
|||
<td><p>{{ preferences.publish_address }}</p></td> |
|||
{% else %} |
|||
<td><p>{% trans "Pas d'adresse, les tickets ne sont pas annoncés" %}</p></td> |
|||
{% endif %} |
|||
</tr> |
|||
<tr> |
|||
<th><p>{% trans "Email language" %}</p></th> |
|||
<td><p>{{ language }}</p></th> |
|||
</tr> |
|||
<table class="table"> |
|||
</table> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
@ -0,0 +1,43 @@ |
|||
{% extends 'base.html' %} |
|||
{% comment %} |
|||
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 © 2017 Gabriel Détraz |
|||
Copyright © 2017 Goulven Kermarec |
|||
Copyright © 2017 Augustin Lemesle |
|||
|
|||
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. |
|||
{% endcomment %} |
|||
|
|||
{% load i18n %} |
|||
|
|||
{% block sidebar %} |
|||
<a class="list-group-item list-group-item-info" href="{% url 'multi_op:aff-state-global' %}"> |
|||
<i class="fa fa-random"></i> |
|||
{% trans "Rooms connection state" %} |
|||
</a> |
|||
<a class="list-group-item list-group-item-info" href="{% url 'multi_op:aff-pending-connection' %}"> |
|||
<i class="fa fa-compress"></i> |
|||
{% trans "Sockets to connect" %} |
|||
</a> |
|||
<a class="list-group-item list-group-item-info" href="{% url 'multi_op:aff-pending-disconnection' %}"> |
|||
<i class="fa fa-expand"></i> |
|||
{% trans "Sockets to disconnect" %} |
|||
</a> |
|||
|
|||
{% endblock %} |
|||
|
|||
@ -0,0 +1,3 @@ |
|||
from django.test import TestCase |
|||
|
|||
# Create your tests here. |
|||
@ -0,0 +1,38 @@ |
|||
# -*- 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 Gabriel Détraz |
|||
# |
|||
# 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. |
|||
""" |
|||
The database models for the 'urls' app of re2o. |
|||
|
|||
For further details on each of those models, see the documentation details for |
|||
each. |
|||
""" |
|||
|
|||
from django.conf.urls import url |
|||
|
|||
from . import views |
|||
|
|||
urlpatterns = [ |
|||
url(r'^$', views.aff_state_global, name='aff-state-global'), |
|||
url(r'^(?P<dormitoryid>[0-9]+)$', views.aff_state_dormitory, name='aff-state-dormitory'), |
|||
url(r'^pending-connection$', views.aff_pending_connection, name='aff-pending-connection'), |
|||
url(r'^pending-disconnection$', views.aff_pending_disconnection, name='aff-pending-disconnection'), |
|||
# url(r'^multi_op/edit-preferences-multiop$', views.edit_preferences, name='edit-preferences-multiop'), |
|||
] |
|||
@ -0,0 +1,179 @@ |
|||
# -*- 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 © 2017 Gabriel Détraz |
|||
# Copyright © 2017 Goulven Kermarec |
|||
# Copyright © 2017 Augustin Lemesle |
|||
# |
|||
# 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. |
|||
|
|||
# App de gestion des users pour re2o |
|||
# Goulven Kermarec, Gabriel Détraz, Lemesle Augustin |
|||
# Gplv2 |
|||
|
|||
from django.contrib import messages |
|||
from django.contrib.auth.decorators import login_required |
|||
from django.shortcuts import render, redirect |
|||
from django.template.loader import render_to_string |
|||
from django.views.decorators.cache import cache_page |
|||
from django.utils.translation import ugettext as _ |
|||
from django.urls import reverse |
|||
from django.forms import modelformset_factory |
|||
from django.db.models import Q |
|||
from re2o.views import form |
|||
from re2o.utils import all_has_access, all_adherent |
|||
|
|||
from re2o.base import ( |
|||
re2o_paginator, |
|||
SortTable, |
|||
) |
|||
|
|||
from re2o.acl import( |
|||
can_view, |
|||
can_view_all, |
|||
can_edit, |
|||
can_create, |
|||
) |
|||
|
|||
from preferences.models import GeneralOption |
|||
|
|||
from .forms import DormitoryForm |
|||
|
|||
from .preferences.models import( |
|||
Preferences, |
|||
) |
|||
|
|||
from topologie.models import Room, Dormitory |
|||
|
|||
from .preferences.forms import ( |
|||
EditPreferencesForm, |
|||
) |
|||
|
|||
|
|||
def display_rooms_connection(request, dormitory=None): |
|||
"""View to display global state of connection state""" |
|||
room_list = Room.objects.select_related('building__dormitory').order_by('building_dormitory', 'port') |
|||
if dormitory: |
|||
room_list = room_list.filter(building__dormitory=dormitory) |
|||
room_list = SortTable.sort( |
|||
room_list, |
|||
request.GET.get('col'), |
|||
request.GET.get('order'), |
|||
SortTable.TOPOLOGIE_INDEX_ROOM |
|||
) |
|||
pagination_number = GeneralOption.get_cached_value('pagination_number') |
|||
room_list = re2o_paginator(request, room_list, pagination_number) |
|||
return render( |
|||
request, |
|||
'multi_op/index_room_state.html', |
|||
{'room_list': room_list} |
|||
) |
|||
|
|||
|
|||
@login_required |
|||
@can_view_all(Room) |
|||
def aff_state_global(request): |
|||
return display_rooms_connection(request) |
|||
|
|||
|
|||
@login_required |
|||
@can_view(Dormitory) |
|||
def aff_state_dormitory(request, dormitory, dormitoryid): |
|||
return display_rooms_connection(dormitory=dormitory) |
|||
|
|||
|
|||
@login_required |
|||
@can_view_all(Room) |
|||
def aff_pending_connection(request): |
|||
"""Aff pending Rooms to connect on our network""" |
|||
room_list = Room.objects.select_related('building__dormitory').filter(port__isnull=True).filter(adherent__in=all_has_access()).order_by('building_dormitory', 'port') |
|||
dormitory_form = DormitoryForm(request.POST or None) |
|||
if dormitory_form.is_valid(): |
|||
room_list = room_list.filter(building__dormitory__in=dormitory_form.cleaned_data['dormitory']) |
|||
room_list = SortTable.sort( |
|||
room_list, |
|||
request.GET.get('col'), |
|||
request.GET.get('order'), |
|||
SortTable.TOPOLOGIE_INDEX_ROOM |
|||
) |
|||
pagination_number = GeneralOption.get_cached_value('pagination_number') |
|||
room_list = re2o_paginator(request, room_list, pagination_number) |
|||
return render( |
|||
request, |
|||
'multi_op/index_room_state.html', |
|||
{'room_list': room_list, 'dormitory_form': dormitory_form} |
|||
) |
|||
|
|||
|
|||
@login_required |
|||
@can_view_all(Room) |
|||
def aff_pending_disconnection(request): |
|||
"""Aff pending Rooms to disconnect from our network""" |
|||
room_list = Room.objects.select_related('building__dormitory').filter(port__isnull=False).exclude(Q(adherent__in=all_has_access()) | Q(adherent__in=all_adherent())).order_by('building_dormitory', 'port') |
|||
dormitory_form = DormitoryForm(request.POST or None) |
|||
if dormitory_form.is_valid(): |
|||
room_list = room_list.filter(building__dormitory__in=dormitory_form.cleaned_data['dormitory']) |
|||
room_list = SortTable.sort( |
|||
room_list, |
|||
request.GET.get('col'), |
|||
request.GET.get('order'), |
|||
SortTable.TOPOLOGIE_INDEX_ROOM |
|||
) |
|||
pagination_number = GeneralOption.get_cached_value('pagination_number') |
|||
room_list = re2o_paginator(request, room_list, pagination_number) |
|||
return render( |
|||
request, |
|||
'multi_op/index_room_state.html', |
|||
{'room_list': room_list, 'dormitory_form': dormitory_form} |
|||
) |
|||
|
|||
|
|||
def edit_preferences(request): |
|||
""" View to edit the settings of the tickets """ |
|||
|
|||
preferences_instance, created = Preferences.objects.get_or_create(id=1) |
|||
preferencesform = EditPreferencesForm( |
|||
request.POST or None, |
|||
instance = preferences_instance,) |
|||
|
|||
if preferencesform.is_valid(): |
|||
if preferencesform.changed_data: |
|||
preferencesform.save() |
|||
messages.success(request,'Preferences updated') |
|||
return redirect(reverse('preferences:display-options',)) |
|||
else: |
|||
messages.error(request,'Formulaire Invalide') |
|||
return form({'preferencesform':preferencesform,},'multi_op/form_preferences.html',request) |
|||
return form({'preferencesform':preferencesform,},'multi_op/form_preferences.html',request) |
|||
|
|||
|
|||
def navbar_user(request): |
|||
"""View to display the app in user's dropdown in the navbar""" |
|||
return render_to_string('multi_op/navbar.html') |
|||
|
|||
def navbar_logout(request): |
|||
"""View to display the app in user's dropdown in the navbar""" |
|||
return None |
|||
|
|||
|
|||
def preferences(request): |
|||
""" View to display the settings of the tickets in the preferences page""" |
|||
pref, created = Preferences.objects.get_or_create(id=1) |
|||
context = {'preferences':pref,'language':str(pref.LANGUES[pref.mail_language][1])} |
|||
return render_to_string('tickets/preferences.html', context=context, request=request, using=None) |
|||
|
|||
|
|||
Loading…
Reference in new issue