Add conference details page sample.

This commit is contained in:
Ultra Desu
2018-10-31 19:41:16 +03:00
parent e6be431049
commit a8ceb41711
5 changed files with 95 additions and 20 deletions

View File

@ -97,16 +97,16 @@ class DataBase:
date(c.date, 'unixepoch') as dt,
count(r.conf_id) as count,
t1.users
FROM `conf` c
LEFT JOIN `relations` r
FROM `conf` c
LEFT JOIN `relations` r
ON c.id = r.conf_id
LEFT JOIN `user` u
ON u.id = r.user_id
LEFT JOIN (
SELECT id, title, count(user_id) as users FROM (
SELECT c.id, c.title, r.user_id, count(r.conf_id) as words
FROM `conf` c
LEFT JOIN `relations` r
FROM `conf` c
LEFT JOIN `relations` r
ON c.id = r.conf_id
GROUP BY c.id, r.user_id
)
@ -116,6 +116,43 @@ class DataBase:
"""
return self.execute(sql)
def get_conf_info(self, conf_id):
if not conf_id[1:].isdigit():
return False
raw1 = self.execute("""
SELECT c.title,
c.id,
date(c.date, 'unixepoch') as dt,
count(r.conf_id) as count,
t1.users
FROM `conf` c
LEFT JOIN `relations` r
ON c.id = r.conf_id
LEFT JOIN `user` u
ON u.id = r.user_id
LEFT JOIN (
SELECT id, title, count(user_id) as users FROM (
SELECT c.id, c.title, r.user_id, count(r.conf_id) as words
FROM `conf` c
LEFT JOIN `relations` r
ON c.id = r.conf_id
GROUP BY c.id, r.user_id
)
GROUP BY title) as t1
ON t1.id = c.id
WHERE c.id = '%s'
GROUP BY c.id
""" % conf_id)[0]
print(raw1)
conf_info = {
'title': raw1[0],
'id': raw1[1],
'date': raw1[2],
'word_count': raw1[3],
'users_cunt': raw1[4],
}
return conf_info
def get_user_info(self, user_id):
if not user_id.isdigit():
return False
@ -131,7 +168,7 @@ class DataBase:
LEFT JOIN `relations` r ON r.user_id = u.id
WHERE u.id = %s""" % user_id)[0]
top = self.execute("""
SELECT w.word, count(w.id) as count FROM `relations` r
SELECT w.word, count(w.id) as count FROM `relations` r
LEFT JOIN `user` u ON u.id = r.user_id
LEFT JOIN `word` w ON w.id = r.word_id
WHERE u.id = %s
@ -143,7 +180,7 @@ class DataBase:
count(c.id) count,
min(date(r.date, 'unixepoch')),
m.messages
FROM `relations` r
FROM `relations` r
LEFT JOIN `user` u ON u.id = r.user_id
LEFT JOIN `conf` c ON c.id = r.conf_id
LEFT JOIN (
@ -159,13 +196,13 @@ class DataBase:
GROUP BY c.id""" % (user_id, user_id))
avg_lenght = self.execute("""
SELECT count(date) as words
SELECT count(date) as words
FROM `relations`
WHERE user_id = %s
GROUP BY date""" % user_id)
messages = self.execute("""
SELECT count(*) FROM(
SELECT count(date) as words
SELECT count(date) as words
FROM `relations`
WHERE user_id = %s
GROUP BY date

View File

@ -69,20 +69,19 @@ def conf():
confs=db.get_confs(),
totals=totals)
@app.route('/overview/conf/<conf_id>')
def conf_overview(conf_id):
return render_template(
'conf_details.html',
conf_info=db.get_conf_info(conf_id))
@app.route('/overview/user/<user_id>')
def user_overview(user_id):
totals = {
'users': db.get_user_count(),
'words': db.get_word_count(),
'relations': db.get_relations_count(),
'confs': db.get_confs_count()
}
return render_template(
'user.html',
user_info=db.get_user_info(user_id),
totals=totals)
user_info=db.get_user_info(user_id))
def get_threads(board):

View File

@ -44,7 +44,7 @@
{% for conf in confs %}
<tr>
<th scope="row">{{ loop.index }}</th>
<td>{{ conf.0 }}</td>
<td><a href="/overview/conf/{{conf.1}}">{{ conf.0 }}</a></td>
<td>{{ conf.1 }}</td>
<td>{{ conf.2 }}</td>
<td>{{ conf.4 }}</td>
@ -56,4 +56,4 @@
{% endblock %}
{% block scripts %}
{{ super() }}
{% endblock %}
{% endblock %}

View File

@ -0,0 +1,39 @@
{% extends "base.html" %}
{% block head %}
{{ super() }}
{% endblock %}
{% block content %}
{{ super() }}
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link" href="/">Users</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="/conf">Conferences</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/stat">2ch.hk Stats</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
<br>
<hr>
<h4>{{ conf_info.title }} conference data</h4>
<hr>
<div class="card-columns">
<div class="card">
<div class="card-body">
<h5 class="card-title">Meta</h5>
<hr>
<p class="card-text">
<b>Title: </b>{{ conf_info.title }}<br>
<b>Telegram ID: </b>{{ conf_info.id }}<br>
<b>Firstly seen: </b>{{ conf_info.date }}<br>
</p>
</div>
</div>
</div>
{% endblock %}

View File

@ -20,7 +20,7 @@
</ul>
<br>
<hr>
<h4>{{ user_info.first_name }} user's data</h4>
<h4>{{ user_info.first_name }}'s user data</h4>
<hr>
<div class="card-columns">
<div class="card">
@ -114,4 +114,4 @@
</div>
</div>
</div>
{% endblock %}
{% endblock %}