Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions rootio/radio/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@

from .forms import StationForm, NetworkForm, ProgramForm, BlockForm, LocationForm, \
ScheduleProgramForm, PersonForm
from .models import Station, Program, ScheduledBlock, ScheduledProgram, Location, Person, Network, StationEvent
from .models import Station, StationAnalytic, Program, ScheduledBlock, ScheduledProgram, \
Location, Person, Network, StationEvent
from ..config import DefaultConfig
from ..content.models import ContentMusicPlaylist, ContentTrack, ContentPodcast, ContentStream
from .models import ContentType
from ..decorators import returns_json, returns_flat_json
from ..extensions import db, csrf
from ..user.models import User, RootioUser
from ..utils import error_dict, fk_lookup_form_data, format_log_line, events_action_display_map
from ..utils import error_dict, fk_lookup_form_data, format_log_line, \
events_action_display_map, object_list_to_named_dict
from rootio.user import ADMIN

radio = Blueprint('radio', __name__, url_prefix='/radio')
Expand All @@ -44,7 +46,29 @@ def index():
networks = Network.query.outerjoin(Station).join(User, Network.networkusers).all()
else:
networks = Network.query.outerjoin(Station).join(User, Network.networkusers).filter(User.id == current_user.id).all()
return render_template('radio/index.html', networks=networks, userid=current_user.id, now=datetime.now)

station_analytics_query = []

for network in networks:
for station in network.stations:
station_analytics_query.append('(select * from radio_stationanalytic where radio_stationanalytic.station_id = ' + \
str(station.id) + ' order by id desc limit 10)')

station_analytics_query = ' UNION ALL '.join(station_analytics_query)
all_station_analytics = db.session.execute(station_analytics_query).fetchall()

analytics = {}

for analytic in all_station_analytics:
if analytic.station_id not in analytics:
analytics[analytic.station_id] = []
analytics[analytic.station_id].append(analytic)

for station_id, station_analytics in analytics.items():
analytics[station_id] = object_list_to_named_dict(station_analytics, False)

return render_template('radio/index.html', networks=networks, analytics=analytics, userid=current_user.id, \
now=datetime.now)


@radio.route('/emergency/', methods=['GET'])
Expand Down
3 changes: 1 addition & 2 deletions rootio/templates/radio/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,7 @@ <h2>{% trans %} Stations {% endtrans %}</h2>
</tr>
{% if network.stations %}
{%for station in network.stations %}
{% set analytics = station.recent_analytics() %}
{% with station=station, network=network, analytics=analytics %}
{% with station=station, network=network, analytics=analytics[station.id] %}
{% include 'radio/_analytics.html' %}
{% endwith %}
{%endfor%}
Expand Down
4 changes: 2 additions & 2 deletions rootio/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,12 +224,12 @@ def error_dict(form_errors):
return d


def object_list_to_named_dict(object_list):
def object_list_to_named_dict(object_list, is_class = True):
"""convert from object list to dict of values
for display as sparkline"""
named_dict = {}
for a in object_list:
for (k, v) in a.__dict__.items():
for (k, v) in (a.__dict__.items() if is_class else a.items()):
# skip privates
if k.startswith('_'):
continue
Expand Down