Esempio n. 1
0
def get_analytics_alerts(discussion, user_id, types, all_users=False):
    from assembl.semantic.virtuoso_mapping import (AssemblQuadStorageManager,
                                                   AESObfuscator)
    settings = get_config()
    metrics_server_endpoint = settings.get(
        'metrics_server_endpoint',
        'https://discussions.bluenove.com/analytics/accept')
    verify_metrics = False  # weird SNI bug on some platforms
    protocol = 'https' if asbool(
        settings.get('accept_secure_connection', False)) else 'http'
    host = settings.get('public_hostname')
    if settings.get('public_port', 80) != 80:
        # TODO: public_secure_port?
        host += ':' + str(settings.get('public_port'))
    seed = urandom(8)
    obfuscator = AESObfuscator(seed)
    token = permission_token(user_id, discussion.id, [P_READ_PUBLIC_CIF], seed)
    metrics_requests = [{"metric": "alerts", "types": types}]
    if user_id != Everyone and not all_users:
        obfuscated_userid = "local:AgentProfile/" + obfuscator.encrypt(
            str(user_id))
        metrics_requests[0]['users'] = [obfuscated_userid]
    mapurl = '%s://%s/data/Discussion/%d/jsonld?token=%s' % (
        protocol, host, discussion.id, token)
    alerts = requests.post(metrics_server_endpoint,
                           data=dict(mapurl=mapurl,
                                     requests=json.dumps(metrics_requests),
                                     recency=60),
                           verify=verify_metrics)
    result = AssemblQuadStorageManager.deobfuscate(alerts.text,
                                                   obfuscator.decrypt)
    # AgentAccount is a pseudo for AgentProfile
    result = re.sub(r'local:AgentAccount\\/', r'local:AgentProfile\\/', result)
    return result
Esempio n. 2
0
def get_analytics_alerts(discussion, user_id, types, all_users=False):
    from assembl.semantic.virtuoso_mapping import AssemblQuadStorageManager, AESObfuscator

    settings = get_config()
    metrics_server_endpoint = settings.get(
        "metrics_server_endpoint", "https://discussions.bluenove.com/analytics/accept"
    )
    verify_metrics = False  # weird SNI bug on some platforms
    protocol = "https" if asbool(settings.get("accept_secure_connection", False)) else "http"
    host = settings.get("public_hostname")
    if settings.get("public_port", 80) != 80:
        # TODO: public_secure_port?
        host += ":" + str(settings.get("public_port"))
    seed = urandom(8)
    obfuscator = AESObfuscator(seed)
    token = permission_token(user_id, discussion.id, [P_READ_PUBLIC_CIF], seed)
    metrics_requests = [{"metric": "alerts", "types": types}]
    if user_id != Everyone and not all_users:
        obfuscated_userid = "local:AgentProfile/" + obfuscator.encrypt(str(user_id))
        metrics_requests[0]["users"] = [obfuscated_userid]
    mapurl = "%s://%s/data/Discussion/%d/jsonld?token=%s" % (protocol, host, discussion.id, token)
    alerts = requests.post(
        metrics_server_endpoint,
        data=dict(mapurl=mapurl, requests=json.dumps(metrics_requests), recency=60),
        verify=verify_metrics,
    )
    result = AssemblQuadStorageManager.deobfuscate(alerts.text, obfuscator.decrypt)
    # AgentAccount is a pseudo for AgentProfile
    result = re.sub(r"local:AgentAccount\\/", r"local:AgentProfile\\/", result)
    return result
Esempio n. 3
0
def get_alerts(request):
    from assembl.semantic.virtuoso_mapping import (AssemblQuadStorageManager,
                                                   AESObfuscator)
    discussion = request.context._instance
    user_id = authenticated_userid(request) or Everyone
    settings = request.registry.settings
    metrics_server_endpoint = settings.get(
        'metrics_server_endpoint',
        'https://discussions.bluenove.com/analytics/accept')
    verify_metrics = False  # weird SNI bug on some platforms
    discussion = request.context._instance
    protocol = 'https' if asbool(
        request.registry.settings.get('accept_secure_connection',
                                      False)) else 'http'
    host = settings.get('public_hostname')
    if settings.get('public_port', 80) != 80:
        # TODO: public_secure_port?
        host += ':' + str(settings.get('public_port'))
    seed = urandom(8)
    obfuscator = AESObfuscator(seed)
    token = permission_token(user_id, discussion.id, [P_READ_PUBLIC_CIF], seed)
    metrics_requests = [{
        "metric":
        "alerts",
        "types": ["lurking_user", "inactive_user", "user_gone_inactive"]
    }]
    mapurl = '%s://%s/data/Discussion/%d/jsonld?token=%s' % (
        protocol, host, discussion.id, token)
    alerts = requests.post(metrics_server_endpoint,
                           data=dict(mapurl=mapurl,
                                     requests=json.dumps(metrics_requests),
                                     recency=60),
                           verify=verify_metrics)
    result = AssemblQuadStorageManager.deobfuscate(alerts.text,
                                                   obfuscator.decrypt)
    # AgentAccount is a pseudo for AgentProfile
    result = re.sub(r'local:AgentAccount\\/', r'local:AgentProfile\\/', result)
    return Response(body=result, content_type='application/json')