ajout last_connected.pt

This commit is contained in:
2017-04-26 21:35:12 +02:00
parent a42987c2b5
commit a9b57890d8
8 changed files with 89 additions and 24 deletions

View File

@@ -1,31 +1,40 @@
# -*- coding: utf8 -*- # -*- coding: utf8 -*-
from pyramid_layout.layout import layout_config from pyramid_layout.layout import layout_config
from views.default import ( from views.default import (
to_euro, to_euro,
to_percent, to_percent,
to_decimal, to_decimal,
) )
from pyramid.security import authenticated_userid from pyramid.security import authenticated_userid
@layout_config(template='templates/layouts/global_layout.pt') @layout_config(template='templates/layouts/global_layout.pt')
class GlobalLayout(object): class GlobalLayout(object):
# page_title = u"Pagode Tinh-Do" # page_title = u"Pagode Tinh-Do"
def __init__(self, context, request): def __init__(self, context, request):
self.context = context self.context = context
self.request = request self.request = request
self.home_url = request.application_url self.home_url = request.application_url
def to_decimal(self, x): def to_decimal(self, x):
return to_decimal(x) return to_decimal(x)
def to_euro(self, x): def to_euro(self, x):
return to_euro(x) return to_euro(x)
def to_percent(self, x): def to_percent(self, x):
return to_percent(x) return to_percent(x)
def isAnonymous(self): def isAnonymous(self):
user = authenticated_userid(self.request) user = authenticated_userid(self.request)
return user is None return user is None
def isAdmin(self):
logged_in = authenticated_userid(self.request)
is_admin = False
if logged_in is not None:
groups = groupfinder(logged_in, self.request)
if 'group:administrators' in groups:
is_admin = True
return is_admin

View File

@@ -46,3 +46,13 @@ def update_membre_mdp(request, login, password):
query = "UPDATE p_users SET mdp = SHA1(:password), mdp_oublie=NULL, mdp_oublie_date=NULL WHERE CD_UTI=:login;" query = "UPDATE p_users SET mdp = SHA1(:password), mdp_oublie=NULL, mdp_oublie_date=NULL WHERE CD_UTI=:login;"
execute_query(request, query, {'login': login, 'password': password}) execute_query(request, query, {'login': login, 'password': password})
def update_last_connection(request, login):
"""Update last connection for login """
query = "UPDATE p_users SET dern_cnx_le=NOW() WHERE CD_UTI=:login;"
execute_query(request, query, {'login': login})
def get_members_by_last_connection(request, ):
# lire les donnees de l'eleve
query = "SELECT * FROM p_users WHERE dern_cnx_le IS NOT NULL ORDER BY dern_cnx_le DESC"
results = request.dbsession.execute(query, ).fetchall()
return results

View File

@@ -6,6 +6,7 @@ def includeme(config):
config.add_route('dossier_view', '/dossier_view/{nodossier}') config.add_route('dossier_view', '/dossier_view/{nodossier}')
config.add_route('rdv_edit','/rdv_edit/{nodossier}/{nolig}') config.add_route('rdv_edit','/rdv_edit/{nodossier}/{nolig}')
config.add_route('envoyer_mdp', '/envoyer_mdp') config.add_route('envoyer_mdp', '/envoyer_mdp')
config.add_route('last_connected', '/last_connected')
config.add_route('login', '/login') config.add_route('login', '/login')
config.add_route('logout', '/logout') config.add_route('logout', '/logout')
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}') config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')

View File

@@ -4,9 +4,8 @@ def groupfinder(userid, request):
member = get_member_by_id(request, userid) member = get_member_by_id(request, userid)
if member: if member:
mbr_id = member.CD_UTI # Roles administrateur ?
# Chi hay Phuoc ? if member.access == 9:
if mbr_id == 8 or mbr_id == 9:
return ['group:administrators'] return ['group:administrators']
else: else:
return [] # it means that userid is logged in (it returns None if userid isn't logged in) return [] # it means that userid is logged in (it returns None if userid isn't logged in)

View File

@@ -41,10 +41,13 @@ $(document).ready(function() {
$('#calendar').fullCalendar({ $('#calendar').fullCalendar({
locale: 'fr', locale: 'fr',
header: { header: {
left: 'agendaDay agendaWeek month', left: 'agendaDay agendaWeek month listMonth',
center: 'prev title next', center: 'prev title next',
right: 'today' right: 'today'
}, },
defaultView: 'agendaWeek',
minTime: "07:00:00",
maxTime: "21:00:00",
events:${fullcalendar_events}, events:${fullcalendar_events},
}); });
}); });

View File

@@ -11,7 +11,12 @@
</div> </div>
</div> <!-- row 1 --> </div> <!-- row 1 -->
<br /> <br />
<div class="row"> <div class="row well" tal:condition="layout.isAdmin">
<div class="col-sm-3">
<a href="${request.application_url}/last_connected">
<span class="glyphicon glyphicon-user logo-small"></span><br />
<h4>Derniers connectés</h4></a>
</div>
</div> <!-- row 2 --> </div> <!-- row 2 -->
<br /> <br />
<br /> <br />

View File

@@ -0,0 +1,26 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div tal:condition="items">
<table class="table table-striped table-bordered">
<tr>
<th>Date</th>
<th>Code</th>
<th>Nom</th>
<th>email</th>
</tr>
<tr tal:repeat="item items">
<td tal:content="python:item.dern_cnx_le.strftime('%d/%m/%Y %H:%M')" />
<td align="left" tal:content="item.CD_UTI" />
<td align="left" tal:content="item.NOM" />
<td align="left" tal:content="item.email" />
</tr>
</table>
</div>
</div><!-- content -->
</metal:block>

View File

@@ -164,6 +164,10 @@ def login(request):
if record : if record :
# mot de passe hash valide ? # mot de passe hash valide ?
if record.mdp == hashlib.sha1(password).hexdigest(): if record.mdp == hashlib.sha1(password).hexdigest():
update_last_connection(request, login)
# force le commit car il ne se fait pas automatiquement après l'update
transaction.commit()
headers = remember(request, login) headers = remember(request, login)
return HTTPFound(location=came_from, headers=headers) return HTTPFound(location=came_from, headers=headers)
@@ -177,6 +181,14 @@ def login(request):
'message': message, 'message': message,
} }
@view_config(route_name='last_connected', renderer='../templates/last_connected.pt', permission='manage')
def last_connected(request):
items = get_members_by_last_connection(request)
return {
'page_title': u"Derniers connectés",
'items': items,
}
@view_config(route_name='logout') @view_config(route_name='logout')
def logout(request): def logout(request):