initial import

This commit is contained in:
2017-03-06 17:58:18 +01:00
commit 0e7b015d20
276 changed files with 101193 additions and 0 deletions

14
mondumas/templates/404.pt Normal file
View File

@@ -0,0 +1,14 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div class="content text-center">
<img src="${request.static_url('mondumas:static/img/globe.png')}" width="90" />
<br />
<br />
<p class="lead"><span class="font-semi-bold">404</span> Page non trouvée</p>
</div>
<br />
<br />
</div><!-- content -->
</metal:block>

View File

@@ -0,0 +1,28 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div class="container">
<div class="alert alert-danger" tal:condition="message" tal:content="message" />
<div class="row col-md-6 well">
<p>
Vì lý do an toàn, mật khẩu của bạn đã được mã hóa và không thể lấy lại. Hãy điền email vào bên phía dưới để tiến hành đặt lại mật khẩu mới.
</p>
<br />
<form id="email_login-form" role="form" action="${url}" method="post">
<div class="form-group">
<label class="control-label" for="login">Email đăng nhập của tôi</label>
<div>
<input class="form-control" type="text" size="20" id="login" name="login" value="" />
</div>
</div>
<div class="form-group">
<button class="btn btn-primary" type="submit" name="form.submitted" value="Envoyer">Gởi đi</button>
</div>
</form>
</div><!-- row -->
<br />
</div><!-- container -->
</div>
</metal:block>

View File

@@ -0,0 +1,22 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div class="container-fluid text-center">
<br />
<div class="row">
<div class="col-sm-3">
<a href="${request.application_url}/members">
<span class="glyphicon glyphicon-user logo-small"></span><br />
<h4>DANH SÁCH</h4></a>
</div>
</div> <!-- row 1 -->
<br />
<div class="row">
</div> <!-- row 2 -->
<br />
<br />
</div>
</div><!-- content -->
</metal:block>

View File

@@ -0,0 +1,95 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:tal="http://xml.zope.org/namespaces/tal"
lang="fr">
<head>
<title>${page_title}</title>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=yes" />
<!-- Bootstrap core + Plug-ins CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link href="${request.static_url('mondumas:static/dist/datatable/dataTables.bootstrap.css')}" rel="stylesheet" media="all">
<link href="${request.static_url('mondumas:static/dist/formvalidation/css/formValidation.min.css')}" rel="stylesheet">
<!-- Custom CSS -->
<link href="${request.static_url('mondumas:static/css/style.less')}" type="text/css" rel="stylesheet/less">
<!-- Bootstrap + jQuery JavaScript plugins) -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<!-- Datatable -->
<script src="${request.static_url('mondumas:static/dist/datatable/jquery.dataTables.js')}"></script>
<script src="${request.static_url('mondumas:static/dist/datatable/dataTables.bootstrap.js')}"></script>
<!-- FormValidation plugin -->
<script src="${request.static_url('mondumas:static/dist/formvalidation/js/formValidation.min.js')}"></script>
<script src="${request.static_url('mondumas:static/dist/formvalidation/js/framework/bootstrap.min.js')}"></script>
<script src="${request.static_url('mondumas:static/dist/formvalidation/js/language/fr_FR.js')}" type="text/javascript"></script>
<!-- Less -->
<script src="${request.static_url('mondumas:static/dist/less-1.5.0.min.js')}" type="text/javascript"></script>
</head>
<body>
<!-- HEADER -->
<nav id="mainnav" class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="${request.application_url}" alt="Accueil">
<img src="${request.static_url('mondumas:static/img/logo.png')}" class="logo" /></a>
&nbsp;Entreprise DUMAS
</div>
<div class="collapse navbar-collapse" id="myNavbar" tal:condition="not layout.isAnonymous()">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="${request.application_url}"><span class="glyphicon glyphicon-home"></span>&nbsp;Accueil</a></li>
<!--
<li tal:condition="python: layout.isAdmin()">
<a href="${request.application_url}/gestionnaire"><span class="glyphicon glyphicon-eye-open"></span>&nbsp;Gestionnaire</a></li>
-->
${panel('dropdown_menu_panel')}
</ul>
</div>
</div>
</nav>
<br />
<br />
<br />
<div class="container">
<h1>${page_title}</h1>
<div id="messages" tal:attributes="class request.is_xhr and 'ajax-replace' or None">
<div tal:repeat="queue ('', 'info', 'success', 'warning', 'danger')"
tal:omit-tag="">
<div class="alert alert-${queue or 'info'}"
tal:define="messages request.session.pop_flash(queue)"
tal:condition="messages"
tal:repeat="message messages">
<button type="button" class="close" data-dismiss="alert">&times;</button>
${structure:message}
</div>
</div>
</div>
<div metal:define-slot="content" />
<br />
<br />
</div>
<div id="footer">
<div class="well">
<p>© 2017&nbsp;-&nbsp;<a href="http://pagode-tinhdo.blogspot.fr/" target="_blank">Pagode Tịnh Độ</a></p>
</div>
</div>
<div metal:define-slot="additional_scripts" />
</body>
</html>

View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:tal="http://xml.zope.org/namespaces/tal"
lang="fr">
<head>
<title>${page_title}</title>
</head>
<body>
<img src="http://www.caes.cnrs.fr/logo.jpg" class="caes-logo" alt="CAES du CNRS" title="CAES du CNRS" />
<div metal:define-slot="content" />
<div id="footer">
<div class="well">
Siège : <a href="http://www.caes.cnrs.fr">CAES du CNRS</a> - 2, Allée Georges Méliès - 94306 Vincennes CEDEX - France
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,59 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
<div class="row">
<div class="col-md-offset-4 col-md-4 well">
<form id="login-form" role="form" action="${url}" method="post"
data-fv-framework="bootstrap"
data-fv-icon-valid="glyphicon glyphicon-ok"
data-fv-icon-invalid="glyphicon glyphicon-remove"
data-fv-icon-validating="glyphicon glyphicon-refresh">
<h3>Đăng nhập</h3>
<input type="hidden" name="came_from" value="${came_from}"/>
<div class="form-group">
<input class="form-control" type="text" name="login" value="${login}"
placeholder="Email"
data-fv-notempty="true"
data-fv-notempty-message="Xin bạn nhập email"
data-fv-emailaddress="true"
data-fv-emailaddress-message="Địa chỉ email không hợp lệ" />
</div>
<div class="form-group">
<input class="form-control" type="password" name="password" value=""
placeholder="Mật khẩu"
data-fv-notempty="true"
data-fv-notempty-message="Xin bạn nhập mật khẩu">
</div>
<div class="form-group">
<button class="btn btn-primary" type="submit" name="form.submitted">Đăng nhập</button>
&nbsp;&nbsp;
</div>
<p class="help-block">
<a href="/envoyer_mdp">Quên mật khẩu ?</a>
</p>
</form>
</div>
</div>
<br />
<br />
<br />
<br />
<script>
$(document).ready(function() {
$('#login-form').formValidation();
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
});
</script>
</div>
</metal:block>

View File

@@ -0,0 +1,163 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
<br />
<div class="row">
<form id="empl_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="membre"
data-fv-framework="bootstrap"
data-fv-icon-valid="glyphicon glyphicon-ok"
data-fv-icon-invalid="glyphicon glyphicon-remove"
data-fv-icon-validating="glyphicon glyphicon-refresh">
<div class="form-group">
<label class="control-label col-xs-2" for="secteur">Xưng hô</label>
<div class="col-xs-2">
<select class="form-control" id="civilite" name="civilite">
<optgroup tal:repeat="item civilites">
<option value="${item}" tal:attributes="selected membre.civilite==item and 'selected' or None">${item}</option>
</optgroup>
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="intitule">Họ</label>
<div class="col-xs-5">
<input class="form-control" type="text" id="intitule" name="nom" value="${membre.nom}"
placeholder="30 caractères maximum"
data-fv-notempty="true"
data-fv-notempty-message="Le nom est obligatoire"
data-fv-stringlength="true"
data-fv-stringlength-max="30"
data-fv-stringlength-message="30 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="intitule">Tên</label>
<div class="col-xs-5">
<input class="form-control" type="text" id="intitule" name="prenom" value="${membre.prenom}"
placeholder="30 caractères maximum"
data-fv-notempty="true"
data-fv-notempty-message="Le prénom est obligatoire"
data-fv-stringlength="true"
data-fv-stringlength-max="30"
data-fv-stringlength-message="30 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="intitule">Địa chỉ</label>
<div class="col-xs-5">
<input class="form-control" type="text" id="adresse" name="adresse" value="${membre.adresse}"
data-fv-stringlength="true"
data-fv-stringlength-max="50"
data-fv-stringlength-message="50 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="intitule">Địa chỉ 2</label>
<div class="col-xs-5">
<input class="form-control" type="text" id="adresse2" name="adresse2" value="${membre.adresse2}"
data-fv-stringlength="true"
data-fv-stringlength-max="50"
data-fv-stringlength-message="50 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="intitule">Mã Bđ - Thành phố</label>
<div class="col-xs-2">
<input class="form-control" type="text" id="cp" name="cp" value="${membre.cp}"
data-fv-stringlength="true"
data-fv-stringlength-max="50"
data-fv-stringlength-message="50 caractères maximum" />
</div>
<div class="col-xs-5">
<input class="form-control" type="text" id="ville" name="ville" value="${membre.ville}"
data-fv-stringlength="true"
data-fv-stringlength-max="50"
data-fv-stringlength-message="50 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="intitule">Điện thoai</label>
<div class="col-xs-2">
<input class="form-control" type="text" id="tel_fixe" name="tel_fixe" value="${membre.tel_fixe}"
placeholder="Téléphone fixe"
data-fv-stringlength="true"
data-fv-stringlength-max="50"
data-fv-stringlength-message="50 caractères maximum" />
</div>
<div class="col-xs-2">
<input class="form-control" type="text" id="tel_mobile" name="tel_mobile" value="${membre.tel_mobile}"
placeholder="Téléphone mobile"
data-fv-stringlength="true"
data-fv-stringlength-max="50"
data-fv-stringlength-message="50 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="col-xs-2 control-label">Địa chỉ email</label>
<div class="col-xs-5">
<input class="form-control" type="text" name="email"
value="${membre.email}" placeholder="50 caractères maximum"
data-fv-emailaddress="true"
data-fv-emailaddress-message="L'adresse email n'est pas valide" />
</div>
</div>
<div class="form-group">
<label class="col-xs-2 control-label">Pháp danh</label>
<div class="col-xs-5">
<input class="form-control" type="text" name="phap_danh"
value="${membre.phap_danh}" placeholder="50 caractères maximum"
data-fv-stringlength-max="50"
data-fv-stringlength-message="50 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="notes">Ghi chú</label>
<div class="col-xs-5">
<textarea class="form-control" rows="6" cols="40" id="texte" name="notes"
data-fv-stringlength="true"
data-fv-stringlength-max="30000"
data-fv-stringlength-message="30000 caractères maximum">${membre.notes}
</textarea>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="statut">Tình trạng</label>
<div class="col-xs-2">
<select class="form-control" id="etat" name="etat">
<optgroup tal:repeat="item etats">
<option value="${item}" tal:attributes="selected membre.statut==item and 'selected' or None">${item}</option>
</optgroup>
</select>
</div>
</div>
<div class="form-group">
<div class="col-xs-offset-2 col-xs-10">
<div class="form-group">
<button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-ok"></span> Lưu</button>
<button class="btn btn-warning" type="submit" name="form.deleted"
tal:condition="python: membre.mbr_id > 0">
<span class="glyphicon glyphicon-remove"></span> Xóa</button>
<a class="btn btn-default" href="${request.application_url}/empl_list"><span class="glyphicon glyphicon-arrow-left"></span> Trở lại</a>
</div>
</div>
</div>
</form>
<br />
<br />
<br />
</div> <!-- row -->
<script>
$(document).ready(function() {
$('#empl_edit-form').formValidation();
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
});
</script>
</div>
</metal:block>

View File

@@ -0,0 +1,78 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<br />
<table class="table">
<tr>
<td width="200">Số hồ sơ :<b> ${member.mbr_id}</b></td>
<td width="300">
${member.civilite}&nbsp;<b>${member.nom}&nbsp;${member.prenom}</b><br />
${member.adresse}<br />
${member.adresse2}<br />
${member.cp}&nbsp;${member.ville}<br />
</td>
<td valign="bottom">
<a class="btn btn-primary" role="button"
href="${request.route_url('member_edit', mbr_id=member.mbr_id)}">
<span class="glyphicon glyphicon-pencil"></span> Modifier</a>
<a class="btn btn-default" role="button"
href="${request.route_url('members', mbr_id=member.mbr_id)}">
<span class="glyphicon glyphicon-chevron-left"></span> Danh sách</a>
</td>
</tr>
<tr>
<td>
Điện thoại (mobile - nhà)<br />
Email<br />
Pháp danh<br />
Ghi Chú<br />
</td>
<td>
${member.tel_mobile} - ${member.tel_fixe}<br />
${member.email}<br />
${member.phap_danh}<br />
${member.notes}<br />
</td>
<td></td>
</tr>
<tr>
<td>
Trang thái<br />
Niên liễm<br />
Ngày thay đổi<br />
</td>
<td>
${member.statut}<br />
${member.cotise_en}<br />
${member.modif_le.strftime('%d-%m-%Y %H:%M')} - [<i>Ngày tạo : ${member.cree_le.strftime('%d-%m-%Y')}</i>]
</td>
<td></td>
</tr>
</table>
<h3>Cúng dường </h3>
<p><a class="btn btn-success" role="button" href="${request.route_url('gift_edit', mbr_id=member.mbr_id, don_id='0')}">
<span class="glyphicon glyphicon-plus"></span> Thêm cúng dường</a></p>
<div class="col-sm-7">
<table class="table table-bordered">
<tr>
<th>Ngày thu</th>
<th>Loại</th>
<th class="text-right">Số tiền</th>
<th class="text-center">Bằng</th>
<th>Vào QUỸ</th>
</tr>
<tr tal:repeat="don dons">
<td tal:content="don.date.strftime('%d/%m/%Y')">&nbsp;</td>
<td tal:content="don.type"></td>
<td class="text-right" tal:content="layout.to_euro(don.montant)"></td>
<td class="text-center">
<a href="${request.route_url('gift_edit', mbr_id=don.mbr_id, don_id=don.don_id)}">${don.mode}</a>
</td>
<td>${don.valide_le}</td>
</tr>
</table>
</div>
</div>
</metal:block>

View File

@@ -0,0 +1,83 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<p><a class="btn btn-success" role="button" href="${request.route_url('member_edit', mbr_id=0)}">
<span class="glyphicon glyphicon-plus"></span> Thêm HV</a></p>
<table id="members" class="table table-striped table-bordered">
<thead>
<tr>
<th>Nom Prénom</th>
<th>Civ.</th>
<th>Email</th>
<th>Ville</th>
<th>Statut</th>
<th>Pháp danh</th>
<th>Etat</th>
<th>No ID</th>
</tr>
</thead>
</table>
<script type="text/javascript">
var dataSet = ${dt_data};
$(document).ready(function() {
$('#members').DataTable({
data: dataSet,
pageLength: 100,
// traduction en français de l'interface
language: {
processing: "Traitement en cours...",
search: "Rechercher&nbsp;:",
lengthMenu: "Afficher _MENU_ &eacute;l&eacute;ments",
info: "Affichage de l'&eacute;lement _START_ &agrave; _END_ sur _TOTAL_ &eacute;l&eacute;ments",
infoEmpty: "Affichage de l'&eacute;lement 0 &agrave; 0 sur 0 &eacute;l&eacute;ments",
infoFiltered: "(filtr&eacute; de _MAX_ &eacute;l&eacute;ments au total)",
infoPostFix: "",
loadingRecords: "Chargement en cours...",
zeroRecords: "Aucun &eacute;l&eacute;ment &agrave; afficher",
emptyTable: "Aucune donnée disponible dans le tableau",
paginate: {
first: "Premier",
previous: "Pr&eacute;c&eacute;dent",
next: "Suivant",
last: "Dernier"
},
aria: {
sortAscending: ": activer pour trier la colonne par ordre croissant",
sortDescending: ": activer pour trier la colonne par ordre décroissant"
}
},
columnDefs: [
{ className: "text-center", "targets": [5,6] },
{ "targets": 7,
"render": function (data, type, full, meta) {
// ajouter un link vers le formulaire
return '<a class="btn btn-primary btn-sm" role="button" href="/member_view/' +
data + '"><span class="glyphicon glyphicon-chevron-right"></span> ' + data + '</a>';
},
},
{ "targets": 4,
"render": function (data, type, full, meta) {
// colorier la cellule en rouge ou vert selon son contenu
if (parseInt(data) > 10) {
return '<span class="text-danger">' + data + '</span>';
}
else {
return '<span class="text-success">' + data + '</span>';
}
},
}
]
});
});
</script>
<br>
<br>
</div><!-- content -->
</metal:block>

View File

@@ -0,0 +1,29 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div class="form-group">
<div class="row">
<form method="POST" id="frm">
<div class="col-md-3">
<select class="form-control" id="valide" name="valide" onChange="$('#frm').submit()">
<optgroup tal:repeat="item types">
<option value="${item}" tal:attributes="selected type==item and 'selected' or None">${item}</option>
</optgroup>
</select>
</div>
</form>
</div>
</div>
<br />
<p>Tổng cộng : <span class="text-right text-danger">${total}</span></p>
<div class="row">
<ul tal:repeat="adr adresses">
${adr.email},<br />
</ul
</div>
</div><!-- content -->
</metal:block>

View File

@@ -0,0 +1,14 @@
<li class="dropdown" tal:condition="logged_in">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">${logged_in_name}<b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="dropdown-header">
${logged_in}<br />
Numéro ID : ${logged_in_id}
</li>
<li class="divider"></li>
<li><a href="${request.application_url}/logout">
<span class="glyphicon glyphicon-off"></span>&nbsp;Se déconnecter</a></li>
</ul>
</li>

View File

@@ -0,0 +1,49 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div class="container">
<div class="row">
<form id="change-password-form" role="form" action="${url}" method="post"
data-fv-framework="bootstrap"
data-fv-icon-valid="glyphicon glyphicon-ok"
data-fv-icon-invalid="glyphicon glyphicon-remove"
data-fv-icon-validating="glyphicon glyphicon-refresh">
<div id="change-password" class="col-md-6 well">
<div class="form-group">
<label class="control-label" for="login">Email đăng nhập</label>
<input class="form-control" type="text" name="login"
placeholder="Email"
data-fv-notempty="true"
data-fv-notempty-message="Xin bạn nhập email"
data-fv-emailaddress="true"
data-fv-emailaddress-message="Địa chỉ email không hợp lệ" />
</div>
<div class="form-group">
<label class="control-label" for="new_password1">Mật khẩu mới</label>
<input class="form-control" type="password" size="10" id="new_password1" name="new_password1" />
</div>
<div class="form-group">
<label class="control-label" for="new_password2">Nhập lại mật khẩu</label>
<input class="form-control" type="password" size="10" id="new_password2" name="new_password2"
value="" />
</div>
<button class="btn btn-primary" type="submit" name="form.submitted" value="Changer le mot de passe">Đặt mật khẩu</button>
</div>
</form>
</div> <!-- row -->
</div><!-- container -->
<script>
$(document).ready(function() {
$('#change-password-form').formValidation();
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
});
</script>
</div>
</metal:block>