Skip to content

Commit

Permalink
[FIX] genweb_stats view for sites with huge amount of users
Browse files Browse the repository at this point in the history
  • Loading branch information
albertduran committed May 3, 2024
1 parent e2a43fa commit 383af92
Showing 1 changed file with 22 additions and 16 deletions.
38 changes: 22 additions & 16 deletions src/genweb6/core/browser/helpers/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,10 @@ def __call__(self):
origin_portal = portal.restrictedTraverse(origin_root_path)

# States translation table from genweb_review to genweb_simple
states = {'esborrany': 'visible', 'intranet': 'intranet', 'pending': 'pending',
'private': 'private', 'published': 'published', 'restricted-to-managers': 'restricted-to-managers'}
states = {'esborrany': 'visible', 'intranet': 'intranet',
'pending': 'pending', 'private': 'private',
'published': 'published',
'restricted-to-managers': 'restricted-to-managers'}

# Get all eligible objects
if HAS_PAM:
Expand Down Expand Up @@ -250,7 +252,8 @@ def __call__(self, portal=None):
if not portal:
portal = api.portal.get()

return api.portal.get_registry_record(name='plone.app.caching.moderateCaching.etags')
return api.portal.get_registry_record(
name='plone.app.caching.moderateCaching.etags')


class list_domains_cache(BrowserView):
Expand All @@ -262,7 +265,8 @@ def __call__(self, portal=None):
if CSRF:
alsoProvides(self.request, IDisableCSRFProtection)
output = []
domains = api.portal.get_registry_record(name='plone.cachepurging.interfaces.ICachePurgingSettings.domains')
domains = api.portal.get_registry_record(
name='plone.cachepurging.interfaces.ICachePurgingSettings.domains')
ppath = api.portal.getSite().getPhysicalPath()
info = {}
if len(ppath) > 2:
Expand Down Expand Up @@ -650,7 +654,7 @@ def __call__(self):
pt = self.request.form['portal_type'].split(',')

catalog = api.portal.get_tool('portal_catalog')
pw = api.portal.get_tool('portal_workflow')
pw = api.portal.get_tool('portal_workflow')

results_dict = {}

Expand All @@ -671,31 +675,33 @@ def __call__(self):
results_dict[ct]['state'][rs].append(obj.absolute_url())

return json.dumps(results_dict, indent=4)


class genwebStats(BrowserView):
"""
Retorna algunes estadístiques per al GWManager.
"""

def __call__(self):
context = aq_inner(self.context)
last_login = DateTime('2023/01/01 16:00:00.111111 GMT+2')
membership = api.portal.get_tool(name='portal_membership')
for user in membership.searchForMembers():
llt = user.getProperty('last_login_time')
if llt > last_login:
last_login = llt
# last_login = DateTime('2023/01/01 16:00:00.111111 GMT+2')
# membership = api.portal.get_tool(name='portal_membership')
# for user in membership.searchForMembers():
# llt = user.getProperty('last_login_time')
# if llt > last_login:
# last_login = llt
pmd = api.portal.get_tool(name='portal_memberdata')

contact_email = api.portal.get_registry_record('plone.email_from_address')
registry = getUtility(IRegistry)
header_config = registry.forInterface(IHeaderSettings)
last_access = last_login.timeTime()
last_access = pmd.last_login_time.timeTime()
# Restem la diferencia de les dates en segons i obtenim els minuts /60
minutes = int((DateTime().timeTime() - last_access)/60.0)
# Els dies son els minuts per hora i les hores per dia
days = int(minutes/60/24)
unitat = api.portal.get_registry_record('genweb6.upc.controlpanels.upc.IUPCSettings.contacte_id')
unitat = api.portal.get_registry_record(
'genweb6.upc.controlpanels.upc.IUPCSettings.contacte_id')
stats = {
'contact_email': contact_email,
'inactivity_days': days,
Expand All @@ -704,4 +710,4 @@ def __call__(self):
'title': header_config.html_title_en,
'unitat': unitat,
}
return json.dumps(stats, indent=4, ensure_ascii=False)
return json.dumps(stats, indent=4, ensure_ascii=False)

0 comments on commit 383af92

Please sign in to comment.