Remaster (#38)
* setup new 'statistiques' module * added 'graphos' package and created first test graph * put graphos in requirements, deleted local folder * added "load_csv" management command ! * added update of premiere_rencontre field in 'load_csv' management command * added missing urls.py file * added 'merge' action and view * added 'info_completed' ratio * linked sujets:merge views inside suivi:details * added link to maraudes:details in notes table headers, if any * Major reorganisation, moved 'suivi' and 'sujets' to 'notes', cleanup in 'maraudes', dropping 'website' mixins (mostly useless) * small cleanup * worked on Maraude and Sujet lists * corrected missing line in notes.__init__ * restored 'details' view for maraudes and sujets insie 'notes' module * worked on 'notes': added navigation between maraude's compte-rendu, right content in details, header to list tables * changed queryset for CompteRenduDetailsView to all notes of same date, minor layout changes * added right content to 'details-sujet', created 'statistiques' view and update templates * restored 'statistiques' ajax view in 'details-sujet', fixed 'merge_two' util function * added auto-creation of FicheStatistique (plus some tests), pagination for notes in 'details-sujet' * added error-prone cases in paginator * fixed non-working modals, added titles * added UpdateStatistiques capacity in CompteRenduCreate view * fixed missing AjaxTemplateMixin for CreateSujetView, worked on compte-rendu creation scripts * fixed MaraudeManager.all_of() for common Maraudeurs, added color hints in planning * re-instated statistiques module link and first test page * added FinalizeView to send a mail before finalizing compte-rendu * Added PieChart view for FicheStatistique fields * small style updates, added 'age' and 'genre' fields from sujets in statistiques.PieChartView * worked on statistiques, fixed small issues in 'notes' list views * small theme change * removed some dead code * fixed notes.tests, fixed statistiques.info_completed display, added filter in SujetLisView * added some tests * added customised admin templates * added authenticate in CustomAuthenticatationBackend, more verbose login thanks to messages * added django-nose for test coverage * Corrected raising exception on first migration On first migration, qs.exists() would previously be called and raising an Exception, sot he migrations would fail. * Better try block * cleaned up custom settings.py, added some overrides of django base_settings * corrected bad dictionnary key
This commit is contained in:
@@ -4,21 +4,74 @@
|
||||
<head>
|
||||
<title>{% block title %}La maraude{% endblock %}</title>
|
||||
{% bootstrap_css %}{% bootstrap_javascript %}
|
||||
<!-- Side Navbar from http://www.samrayner.com/bootstrap-side-navbar/inverse.html -->
|
||||
<link href="/static/css/bootstrap/navbar-fixed-side.css" rel="stylesheet" />
|
||||
{% if stylesheets %}{% for stylesheet in stylesheets %}
|
||||
<link rel="stylesheet" type="text/css" href="{% static stylesheet %}" />{% endfor %}{% endif %}
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/base.css" />
|
||||
{% block extrastyle %}{% endblock %}
|
||||
{% if stylesheets %}{% for stylesheet in stylesheets %}<link rel="stylesheet" type="text/css" href="{% static stylesheet %}" />{% endfor %}{% endif %}
|
||||
{% block extrahead %}{% endblock %}
|
||||
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<body {% block extra_body_attrs %}{% endblock %}>
|
||||
<div class="container-fluid">
|
||||
<!-- START: Navigation Bar -->
|
||||
<div class="row">
|
||||
<div class="col-md-3 col-lg-2">
|
||||
{% navbar %}
|
||||
</div>
|
||||
<div class="col-md-9 col-lg-10">
|
||||
<h1 class="page-header">{% block page_header %}{% endblock %}</h1>
|
||||
<nav class="navbar navbar-static-top navbar-default">
|
||||
<div class="container-fluid">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/">Maraude ALSA</a>
|
||||
</div>
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="navbar-collapse">
|
||||
<ul class="nav navbar-nav navbar-left">
|
||||
{% if user.is_authenticated %}
|
||||
<li {% active namespace="maraudes" %}><a href="{% url "maraudes:index" %}">{% bootstrap_icon "road" %} Maraudes</a></li>
|
||||
<li {% active namespace="notes" %}><a href="{% url "notes:index" %}">{% bootstrap_icon "pencil" %} Notes</a></li>
|
||||
{% else %}
|
||||
<li {% active namespace="statistiques" %}><a href="{% url "statistiques:index" %}">{% bootstrap_icon "stats" %} Statistiques</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<ol class="breadcrumb navbar-text">
|
||||
{% block breadcrumbs %}
|
||||
<li>{{ page_header }}</li>
|
||||
{% if page_header_small %}<li>{{ page_header_small }}</li>{% endif %}
|
||||
{% endblock %}
|
||||
</ol>
|
||||
{% if user.is_authenticated %}
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Menu <span class="glyphicon glyphicon-menu-hamburger"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{% url "statistiques:index" %}"><span class="glyphicon glyphicon-stats"></span> Statistiques</a></li>
|
||||
{% if user.is_superuser %}
|
||||
<li><a href="/admin/"><span class="glyphicon glyphicon-wrench"></span> Administration</a></li>
|
||||
{% endif %}
|
||||
<li role="separator" class="divider"></li>
|
||||
<li><a href="{% url "utilisateurs:index" %}"><span class="glyphicon glyphicon-user"></span> {{ user }}</a></li>
|
||||
<li><a href="/logout/"><span class="glyphicon glyphicon-log-out"></span> Déconnexion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div><!-- /.navbar-collapse -->
|
||||
</div><!-- /.container-fluid -->
|
||||
</nav>
|
||||
</div>
|
||||
<!-- END: Navigation Bar -->
|
||||
<div class="row">
|
||||
<div class="col-lg-10 col-lg-push-2 col-md-9 col-md-push-3">
|
||||
{% bootstrap_messages %}
|
||||
{% block content %}{% endblock %}
|
||||
{% block page_content %}{% endblock %}
|
||||
</div>
|
||||
<div class="col-lg-2 col-lg-pull-10 col-md-3 col-md-pull-9">
|
||||
{% block sidebar %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ page_title }}{% endblock %}
|
||||
|
||||
{% block page_header %}
|
||||
<span style="color:#980300;">{{ page_header }}</span>
|
||||
<small>{{ page_header_small }}</small>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include content_template %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
<div class="col-md-12 col-lg-6">
|
||||
{% extends "base.html" %}
|
||||
{% load bootstrap3 %}
|
||||
|
||||
{% block sidebar %}
|
||||
{% include "login.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
<div class="jumbotron">
|
||||
<h2>Objectifs</h2>
|
||||
<p>Description de la maraude à destination des visiteurs, partenaires, etc...</p>
|
||||
@@ -8,5 +15,5 @@
|
||||
et les <b>vendredis</b> en fin d'après-midi.
|
||||
</p>
|
||||
<p>Ils sont reconnaissables à leur vestes oranges, n'hésitez pas à les interpeller.</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -1,41 +1,54 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
|
||||
{# Tweak columns layout for login box %}
|
||||
{% block panels %}<div class="col-md-8 col-md-offset-2">{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading"><h3 class="panel-title">Connexion</h3></div>
|
||||
<div class="panel-body text-center">
|
||||
{% if user.is_authenticated %}
|
||||
<p>Bienvenue {{ user.first_name|default:user.username }} !</p>
|
||||
{% if next %}
|
||||
<div class="alert alert-warning"><p>Votre compte ne donne pas accès à cette page. Veuillez vous
|
||||
connecter avec un autre compte.</p></div>
|
||||
<a href="{% url 'logout' %}" class="btn btn-danger">Déconnexion</a>
|
||||
{% else %}
|
||||
<div class="btn-group">
|
||||
<a href="{% url 'maraudes:index' %}" class="btn btn-primary">Entrer</a>
|
||||
{% if user.is_superuser %}
|
||||
<a href="admin/" class="btn btn-warning">Administration</a>
|
||||
{% endif %}
|
||||
<a href="{% url 'logout' %}" class="btn btn-danger">Déconnexion</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if next %}
|
||||
<div class="alert alert-danger"><p>Veuillez vous connecter pour accéder à cette page.</p></div>
|
||||
{% endif %}
|
||||
<form method="post" action="{% url 'login' %}">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
{% bootstrap_button "Connexion" button_type="submit" button_class="btn-lg btn-primary" %}
|
||||
<input type="hidden" name="next" value="{{ next|default:'/maraudes/' }}" />
|
||||
</form>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Connexion</h3>
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
{% if user.is_authenticated %}
|
||||
<p>{{ user.first_name|default:user.username }}, vous êtes connecté !</p>
|
||||
{% if next %}
|
||||
<div class="alert alert-warning">
|
||||
<p>Votre compte ne donne pas accès à cette page. Veuillez vous connecter avec un autre compte.</p>
|
||||
</div>
|
||||
<a href="{% url 'logout' %}" class="btn btn-danger">Déconnexion</a>
|
||||
{% else %}
|
||||
<div class="btn-group-vertical">
|
||||
<a href="{% url 'maraudes:index' %}" class="btn btn-sm btn-primary">Entrer</a>
|
||||
{% if user.is_superuser %}
|
||||
<a href="admin/" class="btn btn-sm btn-default">Administration</a>
|
||||
{% endif %}
|
||||
<a href="{% url 'logout' %}" class="btn btn-sm btn-default">Déconnexion</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<form class="form" method="post" action="{% url "login" %}">
|
||||
{% csrf_token %}
|
||||
{% if next %}
|
||||
<div class="alert alert-warning">
|
||||
<p>Vous devez vous connecter pour accéder à cette page.</p>
|
||||
</div>
|
||||
<input name="next" value="{{next}}" hidden />
|
||||
{% endif %}
|
||||
<div class="form-group form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 sr-only control-label" for="id_username">Username</label>
|
||||
<div class="input-group col-md-9">
|
||||
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
|
||||
<input autofocus="" class="form-control" id="id_username" maxlength="254" name="username" placeholder="Username" title="" type="text" required />
|
||||
</div>
|
||||
<div class="panel-footer"><p>version: 0.01</p></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 sr-only control-label" for="id_password">Password</label>
|
||||
<div class="input-group col-md-9">
|
||||
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
|
||||
<input class="form-control" id="id_password" name="password" placeholder="Password" title="" type="password" required />
|
||||
</div>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-primary navbar-button" type="submit">Connexion</button>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="panel-footer"><p>version: 0.2beta</p></div>
|
||||
</div>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<h1>{{ title }}</h1>
|
||||
@@ -1,60 +0,0 @@
|
||||
{% load bootstrap3 %}{% load staticfiles %}
|
||||
<nav class="navbar navbar-inverse navbar-fixed-side" role="navigation" id="menu">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button class="navbar-toggle" data-target=".navbar-collapse" data-toggle="collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="{% url 'index' %}">La Maraude ALSA</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav">{% for app in apps %}{% if not app.disabled %}
|
||||
<li class="{% if app == active_app %}active{%endif%}">
|
||||
<a href="/{{app.label}}/">{% bootstrap_icon app.menu_icon %} · <strong>{{ app.name|title }}</strong></a>
|
||||
</li>
|
||||
{% if app == active_app %}{% for template in app_menu %}{% include template %}{% endfor %}{% endif %}
|
||||
{% endif %}{%endfor%}
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a id="UserMenu" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
<strong style="color:#fff;">{% bootstrap_icon "user" %} · {{user}} </strong>· {{ user_group }}<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" aria-labelledby="UserMenu">
|
||||
{% if next %}
|
||||
<p class="well-sm text-center"><strong style="color:#980300;">Vous n'avez pas l'autorisation<br/> d'accéder à cette page.</strong></p>
|
||||
{%endif%}
|
||||
{% if user.is_authenticated %}
|
||||
{% if user.is_superuser %}<li><a href="{% url 'admin:index' %}">{% bootstrap_icon "wrench" %} Administration</a></li>{% endif %}
|
||||
<li><a href="{% url 'logout' %}">{% bootstrap_icon "log-out" %} Déconnecter</a></li>
|
||||
{% else %}
|
||||
<li>
|
||||
<form class="navbar-form navbar-left" method="post" action="/login/">{% csrf_token %}
|
||||
{% if next %}
|
||||
<input name="next" value="{{next}}" hidden />
|
||||
{% endif %}
|
||||
<div class="form-group form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 sr-only control-label" for="id_username">Username</label>
|
||||
<div class="col-md-10">
|
||||
<input autofocus="" class="form-control" id="id_username" maxlength="254" name="username" placeholder="Username" title="" type="text" required />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 sr-only control-label" for="id_password">Password</label>
|
||||
<div class="col-md-10"><input class="form-control" id="id_password" name="password" placeholder="Password" title="" type="password" required />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center"><button class="btn btn-primary navbar-button" type="submit">Connexion</button></div>
|
||||
</form>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -1,13 +1,10 @@
|
||||
<table class="table table-condensed">
|
||||
{% for row in rows %}
|
||||
<tr>
|
||||
{% for object in row %}
|
||||
<td>
|
||||
{% if object %}
|
||||
{% include cell_template with object=object %}
|
||||
{%endif%}
|
||||
</td>
|
||||
<table class="table table-condensed table-striped">
|
||||
{% if header %}<tr><th colspan="{{ cols_number }}" class="text-center">{{ header }}</th></tr>{% endif %}
|
||||
{% for row in rows %}<tr>
|
||||
{% for object in row %}<td>
|
||||
{% if object %}{% include cell_template with object=object %}{%endif%}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
Reference in New Issue
Block a user