Browse Source

Merge branch 'feature_pre_subscribtion_vlan' of https://gitlab.federez.net/federez/re2o into feature_pre_subscribtion_vlan

feature_pre_subscribtion_vlan
Hugo LEVY-FALK 7 years ago
parent
commit
c8d902a336
  1. 647
      preferences/templates/preferences/display_preferences.html
  2. 2
      preferences/templates/preferences/sidebar.html
  3. 2
      static/css/base.css
  4. 5
      users/models.py

647
preferences/templates/preferences/display_preferences.html

@ -31,292 +31,423 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% block title %}{% trans "Preferences" %}{% endblock %} {% block title %}{% trans "Preferences" %}{% endblock %}
{% block content %} {% block content %}
<h4>{% trans "User preferences" %}</h4> <div id="accordion">
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'OptionalUser' %}">
<i class="fa fa-edit"></i> <div class="panel panel-default" id="general">
{% trans "Edit" %} <div class="panel-heading" data-toggle="collapse" href="#collapse_general">
</a> <h4 class="panel-title" id="general">
<p> <a><i class="fa fa-cog"></i> {% trans "General preferences" %}</a>
</p> </h4>
<h5>{% trans "General preferences" %}</h5> </div>
<table class="table table-striped">
<tr> <div id="collapse_general" class="panel-collapse panel-body collapse">
<th>{% trans "Creation of members by everyone" %}</th>
<td>{{ useroptions.all_can_create_adherent|tick }}</td> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'GeneralOption' %}">
<th>{% trans "Creation of clubs by everyone" %}</th> <i class="fa fa-edit"></i>{% trans "Edit" %}
<td>{{ useroptions.all_can_create_club|tick }}</td> </a>
</tr> <p></p>
<tr>
<th>{% trans "Self registration" %}</th> <table class="table table-striped">
<td>{{ useroptions.self_adhesion|tick }}</td> <tr>
<th>{% trans "Delete not yet active users after" %}</th> <th>{% trans "Website name" %}</th>
<td>{{ useroptions.delete_notyetactive }} days</td> <td>{{ generaloptions.site_name }}</td>
</tr> <th>{% trans "Email address for automatic emailing" %}</th>
</table> <td>{{ generaloptions.email_from }}</td>
</tr>
<h5>{% trans "Users general permissions" %}</h5> <tr>
<table class="table table-striped"> <th>{% trans "Number of results displayed when searching" %}</th>
<tr> <td>{{ generaloptions.search_display_page }}</td>
<th>{% trans "Default shell for users" %}</th> <th>{% trans "Number of items per page (standard size)" %}</th>
<td>{{ useroptions.shell_default }}</td> <td>{{ generaloptions.pagination_number }}</td>
<th>{% trans "Users can edit their shell" %}</th> </tr>
<td>{{ useroptions.self_change_shell|tick }}</td> <tr>
</tr> <th>{% trans "Number of items per page (large size)" %}</th>
<tr> <td>{{ generaloptions.pagination_large_number }}</td>
<th>{% trans "Users can edit their room" %}</th> <th>{% trans "Time before expiration of the reset password link (in hours)" %}</th>
<td>{{ useroptions.self_change_room|tick }}</td> <td>{{ generaloptions.req_expire_hrs }}</td>
<th>{% trans "Telephone number required" %}</th> </tr>
<td>{{ useroptions.is_tel_mandatory|tick }}</td> <tr>
</tr> <th>{% trans "General message displayed on the website" %}</th>
<tr> <td>{{ generaloptions.general_message }}</td>
<th>{% trans "GPG fingerprint field" %}</th> <th>{% trans "Main site url" %}</th>
<td>{{ useroptions.gpg_fingerprint|tick }}</td> <td>{{ generaloptions.main_site_url }}</td>
</tr> </tr>
</table> <tr>
<th>{% trans "Summary of the General Terms of Use" %}</th>
<h5>{% trans "Email accounts preferences" %}</h5> <td>{{ generaloptions.GTU_sum_up }}</td>
<table class="table table-striped"> <th>{% trans "General Terms of Use" %}</th>
<tr> <td>{{ generaloptions.GTU }}</th>
<th>{% trans "Local email accounts enabled" %}</th> </tr>
<td>{{ useroptions.local_email_accounts_enabled|tick }}</td> </table>
<th>{% trans "Local email domain" %}</th> <table class="table table-striped">
<td>{{ useroptions.local_email_domain }}</td> <tr>
</tr> <th>{% trans "Local email accounts enabled" %}</th>
<tr> <td>{{ useroptions.local_email_accounts_enabled|tick }}</td>
<th>{% trans "Maximum number of email aliases allowed" %}</th> <th>{% trans "Local email domain" %}</th>
<td>{{ useroptions.max_email_address }}</td> <td>{{ useroptions.local_email_domain }}</td>
</tr> </tr>
</table> <tr>
<h4>{% trans "Machines preferences" %}</h4> <th>{% trans "Maximum number of email aliases allowed" %}</th>
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'OptionalMachine' %}"> <td>{{ useroptions.max_email_address }}</td>
<i class="fa fa-edit"></i> </tr>
{% trans "Edit" %} </table>
</a> </div>
<p> </div>
</p>
<table class="table table-striped"> <div class="panel panel-default" id="users">
<tr> <div class="panel-heading" data-toggle="collapse" href="#collapse_users">
<th>{% trans "Password per machine" %}</th> <h4 class="panel-title">
<td>{{ machineoptions.password_machine|tick }}</td> <a><i class="fa fa-users fa-fw"></i> {% trans "User preferences" %}</a>
<th>{% trans "Maximum number of interfaces allowed for a standard user" %}</th> </h4>
<td>{{ machineoptions.max_lambdauser_interfaces }}</td> </div>
</tr> <div id="collapse_users" class="panel-collapse panel-body collapse">
<tr>
<th>{% trans "Maximum number of DNS aliases allowed for a standard user" %}</th> <p></p>
<td>{{ machineoptions.max_lambdauser_aliases }}</td> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'OptionalUser' %}">
<th>{% trans "IPv6 support" %}</th> <i class="fa fa-edit"></i>
<td>{{ machineoptions.ipv6_mode }}</td> {% trans "Edit" %}
</tr> </a>
<tr> <p></p>
<th>{% trans "Creation of machines" %}</th>
<td>{{ machineoptions.create_machine|tick }}</td> <table class="table table-striped">
</tr> <tr>
</table> <th>{% trans "Creation of members by everyone" %}</th>
<h4>{% trans "Topology preferences" %}</h4> <td>{{ useroptions.all_can_create_adherent|tick }}</td>
<th>{% trans "Creation of clubs by everyone" %}</th>
<td>{{ useroptions.all_can_create_club|tick }}</td>
</tr>
<tr>
<th>{% trans "Self registration" %}</th>
<td>{{ useroptions.self_adhesion|tick }}</td>
<th>{% trans "Delete not yet active users after" %}</th>
<td>{{ useroptions.delete_notyetactive }} days</td>
</tr>
</table>
<h4 id="users">{% trans "Users general permissions" %}</h4>
<table class="table table-striped">
<tr>
<th>{% trans "Default shell for users" %}</th>
<td>{{ useroptions.shell_default }}</td>
<th>{% trans "Users can edit their shell" %}</th>
<td>{{ useroptions.self_change_shell|tick }}</td>
</tr>
<tr>
<th>{% trans "Users can edit their room" %}</th>
<td>{{ useroptions.self_change_room|tick }}</td>
<th>{% trans "Telephone number required" %}</th>
<td>{{ useroptions.is_tel_mandatory|tick }}</td>
</tr>
<tr>
<th>{% trans "GPG fingerprint field" %}</th>
<td>{{ useroptions.gpg_fingerprint|tick }}</td>
</tr>
</table>
</div>
</div>
</div>
<div class="panel panel-default" id="machines">
<div class="panel-heading" data-toggle="collapse" href="#collapse_machines">
<h4 class ="panel-title">
<a><i class="fa fa-desktop"></i> {% trans "Machines preferences" %}</a>
</h4>
</div>
<div id="collapse_machines" class="panel-collapse panel-body collapse">
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'OptionalMachine' %}">
<i class="fa fa-edit"></i>
{% trans "Edit" %}
</a>
<p></p>
<table class="table table-striped">
<tr>
<th>{% trans "Password per machine" %}</th>
<td>{{ machineoptions.password_machine|tick }}</td>
<th>{% trans "Maximum number of interfaces allowed for a standard user" %}</th>
<td>{{ machineoptions.max_lambdauser_interfaces }}</td>
</tr>
<tr>
<th>{% trans "Maximum number of DNS aliases allowed for a standard user" %}</th>
<td>{{ machineoptions.max_lambdauser_aliases }}</td>
<th>{% trans "IPv6 support" %}</th>
<td>{{ machineoptions.ipv6_mode }}</td>
</tr>
<tr>
<th>{% trans "Creation of machines" %}</th>
<td>{{ machineoptions.create_machine|tick }}</td>
</tr>
</table>
</div>
</div>
<div class="panel panel-default" id="topo">
<div class="panel-heading" data-toggle="collapse" href="#collapse_topo">
<h4 class="panel-title">
<a><i class="fa fa-sitemap"></i> {% trans "Topology preferences" %}</a>
</h4>
</div>
<div id="collapse_topo" class="panel-collapse panel-body collapse">
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'OptionalTopologie' %}"> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'OptionalTopologie' %}">
<i class="fa fa-edit"></i> <i class="fa fa-edit"></i>
{% trans "Edit" %} {% trans "Edit" %}
</a> </a>
<p> <p></p>
</p> <table class="table table-striped">
<h6>Clef radius</h6> <tr>
{% can_create RadiusKey%} <th>{% trans "General policy for VLAN setting" %}</th>
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-radiuskey' %}"><i class="fa fa-plus"></i> Ajouter une clef radius</a> <td>{{ topologieoptions.radius_general_policy }}</td>
{% acl_end %} <th>{% trans "This setting defines the VLAN policy after acceptance by RADIUS: either on the IP range's VLAN of the machine, or a VLAN preset in 'VLAN for machines accepted by RADIUS'" %}</th>
{% include "preferences/aff_radiuskey.html" with radiuskey_list=radiuskey_list %} <td></td>
</tr>
<h4>Configuration des switches</h4> <tr>
<table class="table table-striped"> <th>{% trans "VLAN for machines accepted by RADIUS" %}</th>
<tr> <td>{{ topologieoptions.vlan_decision_ok }}</td>
<th>Web management, activé si provision automatique</th> <th>{% trans "VLAN for machines rejected by RADIUS" %}</th>
<td>{{ topologieoptions.switchs_web_management }}</td> <td>{{ topologieoptions.vlan_decision_nok }}</td>
<th>Rest management, activé si provision auto</th> </tr>
<td>{{ topologieoptions.switchs_rest_management }}</td> <tr>
</tr> <th>{% trans "VLAN for non members machines" %}</th>
</table> <td>{{ topologieoptions.vlan_non_member }}</td>
</tr>
</table>
<h5>{% if topologieoptions.provision_switchs_enabled %}<span class="label label-success">Provision de la config des switchs{% else %}<span class="label label-danger">Provision de la config des switchs{% endif%}</span></h5> <h4>Clef radius</h4>
<table class="table table-striped"> {% can_create RadiusKey%}
<tr> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-radiuskey' %}"><i class="fa fa-plus"></i> Ajouter une clef radius</a>
<th>Switchs configurés automatiquement</th> {% acl_end %}
<td>{{ topologieoptions.provisioned_switchs|join:", " }} {% if topologieoptions.provisioned_switchs %}<span class="label label-success"> OK{% else %}<span class="label label-danger">Manquant{% endif %}</span></td> {% include "preferences/aff_radiuskey.html" with radiuskey_list=radiuskey_list %}
</tr>
<tr> </div>
<th>Plage d'ip de management des switchs</th> </div>
<td>{{ topologieoptions.switchs_ip_type }} {% if topologieoptions.switchs_ip_type %}<span class="label label-success"> OK{% else %}<span class="label label-danger">Manquant{% endif %}</span></td>
</tr> <div class="panel panel-default" id="switches">
<tr> <div class="panel-heading" data-toggle="collapse" href="#collapse_switches">
<th>Serveur des config des switchs</th> <h4 class="panel-title">
<td>{{ topologieoptions.switchs_management_interface }} {% if topologieoptions.switchs_management_interface %} - {{ topologieoptions.switchs_management_interface_ip }} <span class="label label-success"> OK{% else %}<span class="label label-danger">Manquant{% endif %}</span></td> <a><i class="fa fa-server"></i> Configuration des Switches</a>
</tr> </h4>
<tr> </div>
<th>Mode de provision des switchs</th> <div id="collapse_switches" class="panel-collapse panel-body collapse">
<td>{{ topologieoptions.switchs_provision }}</td>
</tr> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'OptionalTopologie' %}">
<tr> <i class="fa fa-edit"></i>
<th>Mode TFTP</th> {% trans "Edit" %}
<td><span class="label label-success"> OK</span></td> </a>
</tr> <p></p>
<tr>
<th>Mode SFTP</th> <table class="table table-striped">
<td>{% if topologieoptions.switchs_management_sftp_creds %}<span class="label label-success"> OK{% else %}<span class="label label-danger">Creds manquants{% endif %}</span></td> <tr>
</tr> <th>Web management, activé si provision automatique</th>
</table> <td>{{ topologieoptions.switchs_web_management }}</td>
<th>Rest management, activé si provision auto</th>
<h6>Creds de management des switchs</h6> <td>{{ topologieoptions.switchs_rest_management }}</td>
{% can_create SwitchManagementCred%} </tr>
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-switchmanagementcred' %}"><i class="fa fa-plus"></i> Ajouter un id/mdp de management switch</a> </table>
{% acl_end %}
<p>
</p>
{% if switchmanagementcred_list %}<span class="label label-success"> OK{% else %}<span class="label label-danger">Manquant{% endif %}</span> <h5>{% if topologieoptions.provision_switchs_enabled %}<span class="label label-success">Provision de la config des switchs{% else %}<span class="label label-danger">Provision de la config des switchs{% endif%}</span></h5>
{% include "preferences/aff_switchmanagementcred.html" with switchmanagementcred_list=switchmanagementcred_list %} <table class="table table-striped">
<tr>
<th>Switchs configurés automatiquement</th>
<td>{{ topologieoptions.provisioned_switchs|join:", " }} {% if topologieoptions.provisioned_switchs %}<span class="label label-success"> OK{% else %}<span class="label label-danger">Manquant{% endif %}</span></td>
<h5>{% if topologieoptions.provisioned_switchs %}<span class="label label-success">Provision de la config des switchs{% else %}<span class="label label-danger">Provision de la config des switchs{% endif%}</span></h5> </tr>
<table class="table table-striped"> <tr>
<tr> <th>Plage d'ip de management des switchs</th>
<th>Switchs configurés automatiquement</th> <td>{{ topologieoptions.switchs_ip_type }} {% if topologieoptions.switchs_ip_type %}<span class="label label-success"> OK{% else %}<span class="label label-danger">Manquant{% endif %}</span></td>
<td>{{ topologieoptions.provisioned_switchs|join:", " }}</td> </tr>
</tr> <tr>
</table> <th>Serveur des config des switchs</th>
<td>{{ topologieoptions.switchs_management_interface }} {% if topologieoptions.switchs_management_interface %} - {{ topologieoptions.switchs_management_interface_ip }} <span class="label label-success"> OK{% else %}<span class="label label-danger">Manquant{% endif %}</span></td>
<h4>{% trans "Radius preferences" %}</h4> </tr>
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'RadiusOption' %}"> <tr>
<i class="fa fa-edit"></i> <th>Mode de provision des switchs</th>
{% trans "Edit" %} <td>{{ topologieoptions.switchs_provision }}</td>
</a> </tr>
{% include "preferences/aff_radiusoptions.html" %} <tr>
<th>Mode TFTP</th>
<td><span class="label label-success"> OK</span></td>
<h4>{% trans "General preferences" %}</h4> </tr>
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'GeneralOption' %}"> <tr>
<th>Mode SFTP</th>
<td>{% if topologieoptions.switchs_management_sftp_creds %}<span class="label label-success"> OK{% else %}<span class="label label-danger">Creds manquants{% endif %}</span></td>
</tr>
</table>
<h6>Creds de management des switchs</h6>
{% can_create SwitchManagementCred%}
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-switchmanagementcred' %}"><i class="fa fa-plus"></i> Ajouter un id/mdp de management switch</a>
{% acl_end %}
<p>
</p>
{% if switchmanagementcred_list %}<span class="label label-success"> OK{% else %}<span class="label label-danger">Manquant{% endif %}</span>
{% include "preferences/aff_switchmanagementcred.html" with switchmanagementcred_list=switchmanagementcred_list %}
</div>
</div>
<div class="panel panel-default" id="radius">
<div class="panel-heading" data-toggle="collapse" href="#collapse_radius">
<h4 class="panel-title"><a><i class="fa fa-circle"></i> {% trans "Radius preferences" %}</h4></a>
</div>
<div id="collapse_radius" class="panel-collapse panel-body collapse">
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'RadiusOption' %}">
<i class="fa fa-edit"></i> <i class="fa fa-edit"></i>
{% trans "Edit" %} {% trans "Edit" %}
</a> </a>
<p> {% include "preferences/aff_radiusoptions.html" %}
</p> </div>
<table class="table table-striped"> </div>
<tr>
<th>{% trans "Website name" %}</th> <div class="panel panel-default" id="asso">
<td>{{ generaloptions.site_name }}</td> <div class="panel-heading" data-toggle="collapse" href="#collapse_asso">
<th>{% trans "Email address for automatic emailing" %}</th> <h4 class="panel-title">
<td>{{ generaloptions.email_from }}</td> <a><i class="fa fa-at"></i> {% trans "Information about the organisation" %}</a>
</tr> </h4>
<tr> </div>
<th>{% trans "Number of results displayed when searching" %}</th> <div id="collapse_asso" class="panel-collapse panel-body collapse">
<td>{{ generaloptions.search_display_page }}</td>
<th>{% trans "Number of items per page (standard size)" %}</th>
<td>{{ generaloptions.pagination_number }}</td>
</tr>
<tr>
<th>{% trans "Number of items per page (large size)" %}</th>
<td>{{ generaloptions.pagination_large_number }}</td>
<th>{% trans "Time before expiration of the reset password link (in hours)" %}</th>
<td>{{ generaloptions.req_expire_hrs }}</td>
</tr>
<tr>
<th>{% trans "General message displayed on the website" %}</th>
<td>{{ generaloptions.general_message }}</td>
<th>{% trans "Main site url" %}</th>
<td>{{ generaloptions.main_site_url }}</td>
</tr>
<tr>
<th>{% trans "Summary of the General Terms of Use" %}</th>
<td>{{ generaloptions.GTU_sum_up }}</td>
<th>{% trans "General Terms of Use" %}</th>
<td>{{ generaloptions.GTU }}</th>
</tr>
</table>
<h4>{% trans "Information about the organisation" %}</h4>
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'AssoOption' %}"> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'AssoOption' %}">
<i class="fa fa-edit"></i> <i class="fa fa-edit"></i>
{% trans "Edit" %} {% trans "Edit" %}
</a> </a>
<p> <p></p>
</p> <table class="table table-striped">
<table class="table table-striped"> <tr>
<tr> <th>{% trans "Name" %}</th>
<th>{% trans "Name" %}</th> <td>{{ assooptions.name }}</td>
<td>{{ assooptions.name }}</td> <th>{% trans "SIRET number" %}</th>
<th>{% trans "SIRET number" %}</th> <td>{{ assooptions.siret }}</td>
<td>{{ assooptions.siret }}</td> </tr>
</tr> <tr>
<tr> <th>{% trans "Address" %}</th>
<th>{% trans "Address" %}</th> <td>{{ assooptions.adresse1 }}<br>
<td>{{ assooptions.adresse1 }}<br> {{ assooptions.adresse2 }}
{{ assooptions.adresse2 }} </td>
</td> <th>{% trans "Contact email address" %}</th>
<th>{% trans "Contact email address" %}</th> <td>{{ assooptions.contact }}</td>
<td>{{ assooptions.contact }}</td> </tr>
</tr> <tr>
<tr> <th>{% trans "Telephone number" %}</th>
<th>{% trans "Telephone number" %}</th> <td>{{ assooptions.telephone }}</td>
<td>{{ assooptions.telephone }}</td> <th>{% trans "Usual name" %}</th>
<th>{% trans "Usual name" %}</th> <td>{{ assooptions.pseudo }}</td>
<td>{{ assooptions.pseudo }}</td> </tr>
</tr> <tr>
<tr> <th>{% trans "User object of the organisation" %}</th>
<th>{% trans "User object of the organisation" %}</th> <td>{{ assooptions.utilisateur_asso }}</td>
<td>{{ assooptions.utilisateur_asso }}</td> <th>{% trans "Description of the organisation" %}</th>
<th>{% trans "Description of the organisation" %}</th> <td>{{ assooptions.description|safe }}</td>
<td>{{ assooptions.description|safe }}</td> </tr>
</tr> </table>
</table> </div>
<h4>{% trans "Custom email message" %}</h4> </div>
<div class="panel panel-default" id="mail">
<div class="panel-heading" data-toggle="collapse" href="#collapse_mail">
<h4 class="panel-title">
<a><i class="fa fa-comment"></i> Message pour les mails</a>
</h4>
</div>
<div id="collapse_mail" class="panel-collapse panel-body collapse">
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'MailMessageOption' %}"> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'MailMessageOption' %}">
<i class="fa fa-edit"></i> <i class="fa fa-edit"></i>
{% trans "Edit" %} {% trans "Edit" %}
</a> </a>
<p> <p></p>
</p>
<table class="table table-striped"> <table class="table table-striped">
<tr> <tr>
<th>{% trans "Welcome email (in French)" %}</th> <th>{% trans "Welcome email (in French)" %}</th>
<td>{{ mailmessageoptions.welcome_mail_fr|safe }}</td> <td>{{ mailmessageoptions.welcome_mail_fr|safe }}</td>
</tr> </tr>
<tr> <tr>
<th>{% trans "Welcome email (in English)" %}</th> <th>{% trans "Welcome email (in English)" %}</th>
<td>{{ mailmessageoptions.welcome_mail_en|safe }}</td> <td>{{ mailmessageoptions.welcome_mail_en|safe }}</td>
</tr> </tr>
</table> </table>
<h4>Options pour le mail de fin d'adhésion</h2> </div>
</div>
<div class="panel panel-default" id="rappels">
<div class="panel-heading" data-toggle="collapse" href="#collapse_rappels">
<h4 class="panel-title">
<a><i class="fa fa-bell"></i> Options pour le mail de fin d'adhésion</a>
</h4>
</div>
<div id="collapse_rappels" class="panel-collapse panel-body collapse">
{% can_create preferences.Reminder%} {% can_create preferences.Reminder%}
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-reminder' %}"><i class="fa fa-plus"></i> Ajouter un rappel</a> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-reminder' %}"><i class="fa fa-plus"></i> Ajouter un rappel</a>
<p></p>
{% acl_end %} {% acl_end %}
{% include "preferences/aff_reminder.html" with reminder_list=reminder_list %} {% include "preferences/aff_reminder.html" with reminder_list=reminder_list %}
</div>
</div>
<h4>{% trans "List of services and homepage preferences" %}</h4>
<div class="panel panel-default" id="services">
<div class="panel-heading" data-toggle="collapse" href="#collapse_services">
<h4 class="panel-title">
<a><i class="fa fa-home"></i> {% trans "List of services and homepage preferences" %}</a>
</h4>
</div>
<div id="collapse_services" class="panel-collapse panel-body collapse">
{% can_create preferences.Service%} {% can_create preferences.Service%}
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-service' %}"><i class="fa fa-plus"></i>{% trans " Add a service" %}</a> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-service' %}"><i class="fa fa-plus"></i>{% trans " Add a service" %}</a>
<p></p>
{% acl_end %} {% acl_end %}
{% include "preferences/aff_service.html" with service_list=service_list %} {% include "preferences/aff_service.html" with service_list=service_list %}
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'HomeOption' %}">
<i class="fa fa-edit"></i> </div>
{% trans "Edit" %} </div>
</a>
<h2>{% trans "List of contact email addresses" %}</h2> <div class="panel panel-default" id="contact">
<div class="panel-heading" data-toggle="collapse" href="#collapse_contact">
<h4 class="panel-title">
<a><i class="fa fa-list-ul"></i> {% trans "List of contact email addresses" %}</a>
</h4>
</div>
<div id="collapse_contact" class="panel-collapse panel-body collapse">
{% can_create preferences.MailContact %} {% can_create preferences.MailContact %}
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-mailcontact' %}"><i class="fa fa-plus"></i>{% trans "Add an address" %}</a> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-mailcontact' %}"><i class="fa fa-plus"></i>{% trans "Add an address" %}</a>
{% acl_end %} {% acl_end %}
<a class="btn btn-danger btn-sm" role="button" href="{% url 'preferences:del-mailcontact' %}"><i class="fa fa-trash"></i>{% trans "Delete one or several addresses" %}</a> <a class="btn btn-danger btn-sm" role="button" href="{% url 'preferences:del-mailcontact' %}"><i class="fa fa-trash"></i>{% trans "Delete one or several addresses" %}</a>
<p></p>
{% include "preferences/aff_mailcontact.html" with mailcontact_list=mailcontact_list %} {% include "preferences/aff_mailcontact.html" with mailcontact_list=mailcontact_list %}
<p> </div>
</p> </div>
<table class="table table-striped">
<tr> <div class="panel panel-default" id="social">
<th>{% trans "Twitter account URL" %}</th> <div class="panel-heading" data-toggle="collapse" href="#collapse_social">
<td>{{ homeoptions.twitter_url }}</td> <h4 class="panel-title">
<th>{% trans "Twitter account name" %}</th> <a><i class="fa fa-facebook"></i><i class="fa fa-twitter"></i> Réseaux sociaux</a>
<td>{{ homeoptions.twitter_account_name }}</td> </h4>
</tr> </div>
<tr> <div id="collapse_social" class="panel-collapse panel-body collapse">
<th>{% trans "Facebook account URL" %}</th>
<td>{{ homeoptions.facebook_url }}</td> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'HomeOption' %}">
</tr> <i class="fa fa-edit"></i>
</table> {% trans "Edit" %}
</a>
<p></p>
<table class="table table-striped">
<tr>
<th>{% trans "Twitter account URL" %}</th>
<td>{{ homeoptions.twitter_url }}</td>
<th>{% trans "Twitter account name" %}</th>
<td>{{ homeoptions.twitter_account_name }}</td>
</tr>
<tr>
<th>{% trans "Facebook account URL" %}</th>
<td>{{ homeoptions.facebook_url }}</td>
</tr>
</table>
</div>
</div>
{% endblock %} {% endblock %}

2
preferences/templates/preferences/sidebar.html

@ -22,6 +22,8 @@ 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., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
{% endcomment %} {% endcomment %}
{% load acl %}
{% load i18n %}
{% block sidebar %} {% block sidebar %}

2
static/css/base.css

@ -102,7 +102,7 @@ a > i.fa {
} }
.table-responsive { .table-responsive {
overflow-y: visible; overflow: visible;
} }
/* Make modal wider on wide screens */ /* Make modal wider on wide screens */

5
users/models.py

@ -695,10 +695,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
def autoregister_machine(self, mac_address, nas_type): def autoregister_machine(self, mac_address, nas_type):
""" Fonction appellée par freeradius. Enregistre la mac pour """ Fonction appellée par freeradius. Enregistre la mac pour
une machine inconnue sur le compte de l'user""" une machine inconnue sur le compte de l'user"""
all_interfaces = self.user_interfaces(active=False) if Machine.can_create(self):
if all_interfaces.count() > OptionalMachine.get_cached_value(
'max_lambdauser_interfaces'
):
return False, _("Maximum number of registered machines reached.") return False, _("Maximum number of registered machines reached.")
if not nas_type: if not nas_type:
return False, _("Re2o doesn't know wich machine type to assign.") return False, _("Re2o doesn't know wich machine type to assign.")

Loading…
Cancel
Save