66 lines
2.1 KiB
Python
Executable File
66 lines
2.1 KiB
Python
Executable File
#! /usr/bin/python3
|
|
#%# family=auto
|
|
#%# capabilities=autoconf
|
|
|
|
import pickle
|
|
import itertools
|
|
import os
|
|
import psycopg2
|
|
import sys
|
|
|
|
base_dir = None
|
|
for dirname in os.listdir('/var/lib/machines/'):
|
|
if os.path.exists(os.path.join('/var/lib/machines/', dirname, 'var/lib/wcs')):
|
|
base_dir = os.path.join('/var/lib/machines/', dirname, 'var/lib/wcs')
|
|
break
|
|
|
|
if len(sys.argv) == 2 and sys.argv[1] == 'autoconf':
|
|
if base_dir:
|
|
print('yes')
|
|
else:
|
|
print('no')
|
|
sys.exit(0)
|
|
|
|
tenant = os.path.basename(sys.argv[0]).replace('publik_count_', '')
|
|
|
|
if len(sys.argv) == 2 and sys.argv[1] == 'config':
|
|
print('''graph_title Count of forms for %s
|
|
graph_category entrouvert
|
|
total_count.label Total
|
|
total_user_count.label Front
|
|
total_logged_user_count.label Front by logged user
|
|
''' % tenant)
|
|
sys.exit(0)
|
|
|
|
for tenant_dir in itertools.chain(os.listdir(base_dir), os.listdir(os.path.join(base_dir, 'tenants'))):
|
|
if tenant_dir != tenant:
|
|
continue
|
|
dirname = os.path.join(base_dir, tenant)
|
|
if not os.path.exists(dirname):
|
|
dirname = os.path.join(base_dir, 'tenants', tenant)
|
|
if not os.path.isdir(dirname):
|
|
continue
|
|
cfg = pickle.load(open(os.path.join(dirname, 'config.pck'), 'rb'), encoding='utf-8')
|
|
if 'postgresql' not in cfg:
|
|
continue
|
|
psql_cfg = {}
|
|
for k, v in cfg['postgresql'].items():
|
|
if v and isinstance(v, (int, str)):
|
|
psql_cfg[k] = v
|
|
pgconn = psycopg2.connect(**psql_cfg)
|
|
cur = pgconn.cursor()
|
|
cur.execute('''SELECT COUNT(*) from wcs_all_forms WHERE status != 'draft' ''')
|
|
total_count = cur.fetchone()[0]
|
|
|
|
cur.execute('''SELECT COUNT(*) from wcs_all_forms WHERE status != 'draft' AND backoffice_submission = FALSE''')
|
|
total_user_count = cur.fetchone()[0]
|
|
|
|
cur.execute('''SELECT COUNT(*) from wcs_all_forms WHERE status != 'draft' AND backoffice_submission = FALSE AND user_id is not NULL''')
|
|
total_logged_user_count = cur.fetchone()[0]
|
|
|
|
print('total_count.value', total_count)
|
|
print('total_user_count.value', total_user_count)
|
|
print('total_logged_user_count.value', total_logged_user_count)
|
|
pgconn.close()
|
|
break
|