kopia lustrzana https://github.com/glidernet/ogn-python
Added longtime_rank to ReceiverRanking
rodzic
6648311a4f
commit
5deabd561c
|
@ -9,6 +9,10 @@ class ReceiverRanking(db.Model):
|
|||
date = db.Column(db.Date)
|
||||
local_rank = db.Column(db.Integer)
|
||||
global_rank = db.Column(db.Integer)
|
||||
longtime_local_rank = db.Column(db.Integer)
|
||||
longtime_local_rank_delta = db.Column(db.Integer)
|
||||
longtime_global_rank = db.Column(db.Integer)
|
||||
longtime_global_rank_delta = db.Column(db.Integer)
|
||||
|
||||
max_distance = db.Column(db.Float(precision=2))
|
||||
max_normalized_quality = db.Column(db.Float(precision=2))
|
||||
|
|
|
@ -100,6 +100,54 @@ def update_statistics(date_str=None):
|
|||
WHERE rs.date = '{date_str}' AND rs.is_trustworthy IS TRUE;
|
||||
""")
|
||||
|
||||
db.session.execute(f"""
|
||||
UPDATE receiver_rankings AS rr
|
||||
SET
|
||||
longtime_global_rank = sq3.longtime_global_rank,
|
||||
longtime_local_rank = sq3.longtime_local_rank
|
||||
FROM (
|
||||
SELECT
|
||||
sq2.receiver_id,
|
||||
RANK() OVER (ORDER BY sq2.longtime_global_scores DESC) AS longtime_global_rank,
|
||||
RANK() OVER (PARTITION BY sq2.country_id ORDER BY sq2.longtime_local_scores DESC) AS longtime_local_rank
|
||||
FROM (
|
||||
SELECT
|
||||
sq.receiver_id,
|
||||
sq.country_id,
|
||||
SUM(sq.global_scores) AS longtime_global_scores,
|
||||
SUM(sq.local_scores) AS longtime_local_scores
|
||||
FROM (
|
||||
SELECT
|
||||
rr.receiver_id,
|
||||
rr.country_id,
|
||||
rr.date,
|
||||
MAX(rr.global_rank) OVER (PARTITION BY rr.date) + 1 - rr.global_rank AS global_scores,
|
||||
MAX(rr.local_rank) OVER (PARTITION BY rr.country_id, rr.date) + 1 - rr.local_rank AS local_scores
|
||||
FROM receiver_rankings AS rr
|
||||
) AS sq
|
||||
WHERE sq.date BETWEEN DATE '{date_str}' - INTEGER '28' AND DATE '{date_str}'
|
||||
GROUP BY sq.receiver_id, sq.country_id
|
||||
) AS sq2
|
||||
) AS sq3
|
||||
WHERE rr.receiver_id = sq3.receiver_id AND rr.date = '{date_str}';
|
||||
""")
|
||||
|
||||
db.session.execute(f"""
|
||||
UPDATE receiver_rankings AS rr
|
||||
SET
|
||||
longtime_global_rank_delta = sq.longtime_global_rank_yesterday - rr.longtime_global_rank,
|
||||
longtime_local_rank_delta = sq.longtime_local_rank_yesterday - rr.longtime_local_rank
|
||||
FROM (
|
||||
SELECT
|
||||
rr.receiver_id,
|
||||
rr.longtime_global_rank AS longtime_global_rank_yesterday,
|
||||
rr.longtime_local_rank AS longtime_local_rank_yesterday
|
||||
FROM receiver_rankings AS rr
|
||||
WHERE rr.date = DATE '{date_str}' - INTEGER '1'
|
||||
) AS sq
|
||||
WHERE rr.receiver_id = sq.receiver_id;
|
||||
""")
|
||||
|
||||
db.session.commit()
|
||||
|
||||
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
<th colspan="3">Counter</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-right">Local</th>
|
||||
<th class="text-right">Global</th>
|
||||
<th class="text-right">Total</th>
|
||||
<th class="text-right">Today</th>
|
||||
<th>Name</th>
|
||||
<th>Airport</th>
|
||||
<th class="text-right">Distance [km]</th>
|
||||
|
@ -41,9 +41,14 @@
|
|||
|
||||
|
||||
{% for entry in ranking %}
|
||||
{% if sel_country == '' %}
|
||||
{% set rank = entry.global_rank %}{% set longtime_rank = entry.longtime_global_rank %}{% set longtime_rank_delta = entry.longtime_global_rank_delta %}
|
||||
{% else %}
|
||||
{% set rank = entry.local_rank %}{% set longtime_rank = entry.longtime_local_rank %}{% set longtime_rank_delta = entry.longtime_local_rank_delta %}
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td class="text-right">{{ entry.local_rank }}</td>
|
||||
<td class="text-right">{{ entry.global_rank }}</td>
|
||||
<td class="text-right">{{ longtime_rank }} ({% if longtime_rank_delta is none or longtime_rank_delta == 0%}±0{% elif longtime_rank_delta > 0 %}<span class="text-success">+{{ longtime_rank_delta }}</span>{% else %}<span class="text-danger">{{ longtime_rank_delta }}</span>{% endif %})</td>
|
||||
<td class="text-right">{{ rank }}</td>
|
||||
<td><img src="{{ url_for('static', filename='img/Transparent.gif') }}" class="flag flag-{{ entry.receiver.country.iso2|lower }}" alt="{{ entry.receiver.country.iso2 }}"/> {{ entry.receiver|to_html_link|safe }}</td>
|
||||
<td>{{ entry.receiver.airport|to_html_link|safe }}</td>
|
||||
<td class="text-right">{{ '%0.1f' | format(entry.max_distance/1000.0) }}</td>
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
"""Added longtime_rank to ReceiverRanking
|
||||
|
||||
Revision ID: 310027ddeea9
|
||||
Revises: eb571174e4b2
|
||||
Create Date: 2020-12-04 22:11:31.958278
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '310027ddeea9'
|
||||
down_revision = 'eb571174e4b2'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('receiver_rankings', sa.Column('longtime_local_rank', sa.Integer(), nullable=True))
|
||||
op.add_column('receiver_rankings', sa.Column('longtime_local_rank_delta', sa.Integer(), nullable=True))
|
||||
op.add_column('receiver_rankings', sa.Column('longtime_global_rank', sa.Integer(), nullable=True))
|
||||
op.add_column('receiver_rankings', sa.Column('longtime_global_rank_delta', sa.Integer(), nullable=True))
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('receiver_rankings', 'longtime_global_rank_delta')
|
||||
op.drop_column('receiver_rankings', 'longtime_global_rank')
|
||||
op.drop_column('receiver_rankings', 'longtime_local_rank_delta')
|
||||
op.drop_column('receiver_rankings', 'longtime_local_rank')
|
||||
# ### end Alembic commands ###
|
Ładowanie…
Reference in New Issue