Beispiel #1
0
 def log_message(self, message):
     es = get_elastic()
     if not es:
         return
     try:
         es.index(index="message-log", doc_type='message', body=message)
     except:
         print('Unable to log message to Elasticsearch.')
Beispiel #2
0
 def log_user(self, profile):
     user = {'uid': self.uid, 'profile': profile}
     es = get_elastic()
     if not es:
         return
     try:
         es.create(index="message-log",
                   id=user['uid'],
                   doc_type='user',
                   body=user)
     except:
         print('Unable to log user profile to Elasticsearch.')
Beispiel #3
0
def log_user(request, uid, page=1):
    page = int(page) if page else 1
    es = get_elastic()
    if not es:
        return HttpResponse()

    res = es.search(index="message-log",
                    doc_type='message',
                    body={
                        "size": 50,
                        "from": 50 * (page - 1),
                        "query": {
                            "bool": {
                                "filter": {
                                    "term": {
                                        "uid": uid
                                    }
                                }
                            }
                        },
                        "sort": {
                            "created": {
                                "order": "desc"
                            }
                        }
                    })

    messages = []
    previous = None
    for hit in res['hits']['hits'][::-1]:
        message = hit['_source']
        message['switch'] = previous != message['is_user']
        previous = message['is_user']
        response = message.get('response')
        elements = response.get('elements') if response else None
        if elements:
            message['elementWidth'] = len(elements) * 215
        message['json'] = json.dumps(message)
        messages.append(message)

    context = {'messages': messages}
    template = loader.get_template('golem/log_user.html')
    return HttpResponse(template.render(context, request))
Beispiel #4
0
def log(request, user_limit):

    user_limit = int(user_limit) if user_limit else 100
    es = get_elastic()
    if not es:
        return HttpResponse('not able to connect to elasticsearch')

    res = es.search(index="message-log",
                    doc_type='message',
                    body={
                        "size": 0,
                        "aggs": {
                            "uids": {
                                "terms": {
                                    "field": "uid",
                                    "size": 1000
                                },
                                "aggs": {
                                    "created": {
                                        "max": {
                                            "field": "created"
                                        }
                                    }
                                }
                            }
                        }
                    })
    uids = []
    for bucket in res['aggregations']['uids']['buckets']:
        uid = bucket['key']
        last_time = bucket['created']['value']
        uids.append({'uid': uid, 'last_time': last_time})

    uids = sorted(uids, key=lambda uid: -uid['last_time'])[:user_limit]

    res = es.search(index="message-log",
                    doc_type='user',
                    body={
                        "size": user_limit,
                        "query": {
                            "bool": {
                                "filter": {
                                    "terms": {
                                        "uid": [u['uid'] for u in uids]
                                    }
                                }
                            }
                        }
                    })

    user_map = {
        user['_source']['uid']: user['_source']
        for user in res['hits']['hits']
    }
    users = [
        user_map[u['uid']] if u['uid'] in user_map else {
            'uid': u['uid']
        } for u in uids
    ]

    context = {'users': users}

    print(users)
    template = loader.get_template('golem/log.html')
    return HttpResponse(template.render(context, request))