def get(self): #pylint: disable=E0202,W0221 self.write( self.render_string("bare_header.html", title="%s Power Hours" % config.station_id_friendly[self.sid])) self.write("<h2>%s Power Hours</h2>" % config.station_id_friendly[self.sid]) self.write("<script>window.top.current_sched_id = null;</script>\n\n") self.write( "<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<div>Input date and time in YOUR timezone.<br>") self.write("Name: <input id='new_ph_name' type='text' /><br>") self.write("URL: <input id='new_ph_url' type='text' /><br>") index.write_html_time_form(self, "new_ph") self.write( "<br><button onclick=\"window.top.call_api('admin/create_producer', " ) self.write( "{ 'producer_type': 'OneUpProducer', 'end_utc_time': document.getElementById('new_ph_timestamp').value, 'start_utc_time': document.getElementById('new_ph_timestamp').value, 'name': document.getElementById('new_ph_name').value, 'url': document.getElementById('new_ph_url').value });\"" ) self.write(">Create new, empty Power Hour</button></div>") self.write("<div>(based on above form with...)<br>") self.write( "Length: <select id='unrated_length'><option value='1800'>30m</option><option value='3600' selected>1h</option><option value='5400'>1.5h</option><option value='7200'>2h</option></select>" ) self.write( "<br><button onclick=\"window.top.call_api('admin/create_producer', " ) self.write( "{ 'fill_unrated': true, 'producer_type': 'OneUpProducer', 'end_utc_time': parseInt(document.getElementById('new_ph_timestamp').value) + parseInt(document.getElementById('unrated_length').value), 'start_utc_time': document.getElementById('new_ph_timestamp').value, 'name': document.getElementById('new_ph_name').value, 'url': document.getElementById('new_ph_url').value });\"" ) self.write(">Create new PH w/unrated songs</button></div><hr>") if self.return_name in self._output and type( self._output[self.return_name]) == types.ListType and len( self._output[self.return_name]) > 0: self.write("<ul>") for producer in self._output[self.return_name]: self.write( "<li><div><b><a href='power_hour_detail?sid=%s&sched_id=%s'>%s</a></b></div>" % (self.sid, producer['id'], producer['name'])) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'US/Eastern')) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'US/Pacific')) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'Europe/London')) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'Asia/Tokyo')) self.write("</div></li>") self.write(self.render_string("basic_footer.html"))
def get(self): self.write( self.render_string( "bare_header.html", title="%s Create Producer" % config.station_id_friendly[self.sid], )) self.write("<h2>%s: Create Producer</h2>" % config.station_id_friendly[self.sid]) self.write( "<script>\nwindow.top.refresh_all_screens = true;\n</script>") # it says 'ph' because I super-lazily copy/pasted this from the power hour creator code self.write("<div>Type: <select id='new_ph_type'/>") for producer_type in event.get_admin_creatable_producers(): self.write("<option value='%s'>%s</option>" % (producer_type, producer_type)) self.write("</select><br>") self.write("Name: <input id='new_ph_name' type='text' /><br>") self.write( "<br>Input date and time in YOUR timezone.<br><u>Start Time</u>:<br> " ) index.write_html_time_form(self, "new_ph_start") self.write("<br><br><u>End Time</u>:<br> ") index.write_html_time_form(self, "new_ph_end") self.write( "<br><br><button onclick=\"window.top.call_api('admin/create_producer', " ) self.write( "{ 'producer_type': document.getElementById('new_ph_type').value, 'end_utc_time': document.getElementById('new_ph_end_timestamp').value, 'start_utc_time': document.getElementById('new_ph_start_timestamp').value, 'name': document.getElementById('new_ph_name').value, 'url' '', 'dj_user_id': '' });\"" ) self.write(">Create new Producer</button></div>") self.write(self.render_string("basic_footer.html"))
def get(self): p = event.BaseProducer.load_producer_by_id( self.get_argument("sched_id")) self.write(self.render_string("bare_header.html", title="%s" % p.name)) self.write("<h2>%s %s - %s</h2>" % (config.station_id_friendly[self.sid], p.type, p.name)) self.write( "<script>\nwindow.top.refresh_all_screens = true;\n</script>") self.write( "Name: <input id='new_ph_name' type='text' value=\"%s\"/><br>" % p.name) self.write( "<button onclick=\"window.top.call_api('admin/change_producer_name', { 'sched_id': %s, 'name': document.getElementById('new_ph_name').value });\">Change Name</button><br><hr>" % p.id) self.write( "<div>Input date and time in YOUR timezone.<br><br><u>Start Time</u>:<br> " ) index.write_html_time_form(self, "new_ph_start", p.start) self.write( "<br><button onclick=\"window.top.call_api('admin/change_producer_start_time', { 'sched_id': %s, 'utc_time': document.getElementById('new_ph_start_timestamp').value });\">Change Start Time</button><br><hr>" % p.id) self.write("<u>End Time</u>:<br> ") index.write_html_time_form(self, "new_ph_end", p.end) self.write( "<br><button onclick=\"window.top.call_api('admin/change_producer_end_time', { 'sched_id': %s, 'utc_time': document.getElementById('new_ph_end_timestamp').value });\">Change End Time</button><br><hr>" % p.id) self.write(self.render_string("basic_footer.html"))
def get(self): #pylint: disable=E0202,W0221 self.write(self.render_string("bare_header.html", title="%s Power Hours" % config.station_id_friendly[self.sid])) self.write("<h2>%s Power Hours</h2>" % config.station_id_friendly[self.sid]) self.write("<script>window.top.current_sched_id = null;</script>\n\n") self.write("<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<div>Input date and time in YOUR timezone.<br>") self.write("Name: <input id='new_ph_name' type='text' /><br>") self.write("URL: <input id='new_ph_url' type='text' /><br>") index.write_html_time_form(self, "new_ph") self.write("<br><button onclick=\"window.top.call_api('admin/create_producer', ") self.write("{ 'producer_type': 'OneUpProducer', 'end_utc_time': document.getElementById('new_ph_timestamp').value, 'start_utc_time': document.getElementById('new_ph_timestamp').value, 'name': document.getElementById('new_ph_name').value, 'url': document.getElementById('new_ph_url').value });\"") self.write(">Create new, empty Power Hour</button></div>") self.write("<div>(based on above form with...)<br>") self.write("Length: <select id='unrated_length'><option value='1800'>30m</option><option value='3600' selected>1h</option><option value='5400'>1.5h</option><option value='7200'>2h</option></select>") self.write("<br><button onclick=\"window.top.call_api('admin/create_producer', ") self.write("{ 'fill_unrated': true, 'producer_type': 'OneUpProducer', 'end_utc_time': parseInt(document.getElementById('new_ph_timestamp').value) + parseInt(document.getElementById('unrated_length').value), 'start_utc_time': document.getElementById('new_ph_timestamp').value, 'name': document.getElementById('new_ph_name').value, 'url': document.getElementById('new_ph_url').value });\"") self.write(">Create new PH w/unrated songs</button></div><hr>") if self.return_name in self._output and type(self._output[self.return_name]) == types.ListType and len(self._output[self.return_name]) > 0: self.write("<ul>") for producer in self._output[self.return_name]: self.write("<li><div><b><a href='power_hour_detail?sid=%s&sched_id=%s'>%s</a></b></div>" % (self.sid, producer['id'], producer['name'])) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'US/Eastern')) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'US/Pacific')) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'Europe/London')) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'Asia/Tokyo')) self.write("</div></li>") self.write(self.render_string("basic_footer.html"))
def get(self): #pylint: disable=E0202,W0221 ph = self._output[self.return_name] self.write(self.render_string("bare_header.html", title="%s" % ph['name'])) self.write("<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<h2>%s</h2>" % ph['name']) self.write("<span>Times from the server:</span><br>") self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph['start'], ph['end'], 'US/Eastern')) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph['start'], ph['end'], 'US/Pacific')) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph['start'], ph['end'], 'Europe/London')) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph['start'], ph['end'], 'Asia/Tokyo')) total_len = 0 for i, song in enumerate(ph['songs']): total_len += song['length'] self.write("<br><div>Total length of songs: <b>%d:%02d</b></div>" % (int(total_len / 3600), (total_len / 60) % 60)) self.write("<br><span>Change time. Use YOUR timezone.</span><br>") index.write_html_time_form(self, "power_hour", ph['start']) self.write("<br><button onclick=\"window.top.call_api('admin/change_producer_start_time', ") self.write("{ 'utc_time': document.getElementById('power_hour_timestamp').value, 'sched_id': %s });\"" % ph['id']) self.write(">Change Time</button></div><hr>") self.write("<button onclick=\"window.top.call_api('admin/delete_producer', { 'sched_id': %s });\">Delete This Power Hour</button><hr>" % ph['id']) self.write("Name: <input type='text' id='new_ph_name' value='%s'><br>" % ph['name']) self.write("<button onclick=\"window.top.call_api('admin/change_producer_name', { 'sched_id': %s, 'name': document.getElementById('new_ph_name').value });\">Change Name</button><hr>" % ph['id']) self.write("URL: <input type='text' id='new_ph_url' value='%s'><br>" % (ph['url'] or "")) self.write("<button onclick=\"window.top.call_api('admin/change_producer_url', { 'sched_id': %s, 'url': document.getElementById('new_ph_url').value });\">Change URL</button><hr>" % ph['id']) self.write("<button onclick=\"window.top.call_api('admin/shuffle_power_hour', { 'sched_id': %s });\">Shuffle the Song Order</button><hr>\n\n" % ph['id']) try: self.write("<ol>") for song in ph['songs']: self.write("<li><div>%s" % song['title']) if song['one_up_used']: self.write(" <b>(PLAYED)</b>") elif song['one_up_queued']: self.write(" (queued)") self.write("</div><div>%s</div>\n" % song['albums'][0]['name']) self.write("<div>") self.write("<a onclick=\"window.top.call_api('admin/remove_from_power_hour', { 'one_up_id': %s });\">Delete</a> - " % song['one_up_id']) self.write("<a onclick=\"window.top.call_api('admin/move_up_in_power_hour', { 'one_up_id': %s });\">Move Up</a>" % song['one_up_id']) self.write("</div></li>\n") self.write("</ol>\n") self.write("<script>window.top.current_sched_id = %s;</script>\n\n" % ph['id']) except Exception as e: self.write("</ol>") self.write("<div>ERROR DISPLAYING SONG LIST. Something is wrong. Consult Rob. Do not play this Power Hour.</div>") log.exception("admin", "Could not display song list.", e) self.write(self.render_string("basic_footer.html"))
def get(self): self.write( self.render_string("bare_header.html", title="%s Power Hours" % config.station_id_friendly[self.sid])) self.write("<h2>%s Power Hours</h2>" % config.station_id_friendly[self.sid]) self.write("<script>window.top.current_sched_id = null;</script>\n\n") self.write( "<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<div>Input date and time in YOUR timezone.<br>") self.write("Name: <input id='new_ph_name' type='text' /><br>") self.write("URL: <input id='new_ph_url' type='text' /><br>") index.write_html_time_form(self, "new_ph") self.write( "<br><button onclick=\"window.top.call_api('admin/create_producer', " ) self.write( "{ 'producer_type': 'OneUpProducer', 'end_utc_time': document.getElementById('new_ph_timestamp').value, 'start_utc_time': document.getElementById('new_ph_timestamp').value, 'name': document.getElementById('new_ph_name').value, 'url': document.getElementById('new_ph_url').value });\"" ) self.write(">Create new Power Hour</button></div><hr>") if self.return_name in self._output and type( self._output[self.return_name]) == types.ListType and len( self._output[self.return_name]) > 0: self.write("<ul>") for producer in self._output[self.return_name]: self.write( "<li><div><b><a href='power_hour_detail?sid=%s&sched_id=%s'>%s</a></b></div>" % (self.sid, producer['id'], producer['name'])) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'US/Eastern')) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'US/Pacific')) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'Europe/London')) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer['start'], producer['end'], 'Asia/Tokyo')) self.write("</div></li>") self.write(self.render_string("basic_footer.html"))
def get(self): self.write( self.render_string("bare_header.html", title="%s Power Hours" % config.station_id_friendly[self.sid]) ) self.write("<h2>%s Power Hours</h2>" % config.station_id_friendly[self.sid]) self.write("<script>window.top.current_sched_id = null;</script>\n\n") self.write("<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<div>Input date and time in YOUR timezone.<br>") self.write("Name: <input id='new_ph_name' type='text' /><br>") self.write("URL: <input id='new_ph_url' type='text' /><br>") index.write_html_time_form(self, "new_ph") self.write("<br><button onclick=\"window.top.call_api('admin/create_producer', ") self.write( "{ 'producer_type': 'OneUpProducer', 'end_utc_time': document.getElementById('new_ph_timestamp').value, 'start_utc_time': document.getElementById('new_ph_timestamp').value, 'name': document.getElementById('new_ph_name').value, 'url': document.getElementById('new_ph_url').value });\"" ) self.write(">Create new Power Hour</button></div><hr>") if ( self.return_name in self._output and type(self._output[self.return_name]) == types.ListType and len(self._output[self.return_name]) > 0 ): self.write("<ul>") for producer in self._output[self.return_name]: self.write( "<li><div><b><a href='power_hour_detail?sid=%s&sched_id=%s'>%s</a></b></div>" % (self.sid, producer["id"], producer["name"]) ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer["start"], producer["end"], "US/Eastern") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer["start"], producer["end"], "US/Pacific") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer["start"], producer["end"], "Europe/London") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(producer["start"], producer["end"], "Asia/Tokyo") ) self.write("</div></li>") self.write(self.render_string("basic_footer.html"))
def get(self): p = event.BaseProducer.load_producer_by_id(self.get_argument("sched_id")) self.write(self.render_string("bare_header.html", title="%s" % p.name)) self.write("<h2>%s %s - %s</h2>" % (config.station_id_friendly[self.sid], p.type, p.name)) self.write("<script>\nwindow.top.refresh_all_screens = true;\n</script>") self.write("Name: <input id='new_ph_name' type='text' value=\"%s\"/><br>" % p.name) self.write("<button onclick=\"window.top.call_api('admin/change_producer_name', { 'sched_id': %s, 'name': document.getElementById('new_ph_name').value });\">Change Name</button><br><hr>" % p.id) self.write("URL: <input id='new_ph_url' type='text' value=\"%s\"/><br>" % (p.url or "")) self.write("<button onclick=\"window.top.call_api('admin/change_producer_url', { 'sched_id': %s, 'url': document.getElementById('new_ph_url').value });\">Change URL</button><br><hr>" % p.id) self.write("<div>Input date and time in YOUR timezone.<br><br><u>Start Time</u>:<br> ") index.write_html_time_form(self, "new_ph_start", p.start) self.write("<br><button onclick=\"window.top.call_api('admin/change_producer_start_time', { 'sched_id': %s, 'utc_time': document.getElementById('new_ph_start_timestamp').value });\">Change Start Time</button><br><hr>" % p.id) self.write("<u>End Time</u>:<br> ") index.write_html_time_form(self, "new_ph_end", p.end) self.write("<br><button onclick=\"window.top.call_api('admin/change_producer_end_time', { 'sched_id': %s, 'utc_time': document.getElementById('new_ph_end_timestamp').value });\">Change End Time</button><br><hr>" % p.id) self.write(self.render_string("basic_footer.html"))
def get(self): self.write(self.render_string("bare_header.html", title="%s Create Producer" % config.station_id_friendly[self.sid])) self.write("<h2>%s: Create Producer</h2>" % config.station_id_friendly[self.sid]) self.write("<script>\nwindow.top.refresh_all_screens = true;\n</script>") # it says 'ph' because I super-lazily copy/pasted this from the power hour creator code self.write("<div>Type: <select id='new_ph_type'/>") for producer_type in event.get_admin_creatable_producers(): self.write("<option value='%s'>%s</option>" % (producer_type, producer_type)) self.write("</select><br>") self.write("Name: <input id='new_ph_name' type='text' /><br>") self.write("URL: <input id='new_ph_url' type='text' /><br><br>Input date and time in YOUR timezone.<br><u>Start Time</u>:<br> ") index.write_html_time_form(self, "new_ph_start") self.write("<br><br><u>End Time</u>:<br> ") index.write_html_time_form(self, "new_ph_end") self.write("<br><br><button onclick=\"window.top.call_api('admin/create_producer', ") self.write("{ 'producer_type': document.getElementById('new_ph_type').value, 'end_utc_time': document.getElementById('new_ph_end_timestamp').value, 'start_utc_time': document.getElementById('new_ph_start_timestamp').value, 'name': document.getElementById('new_ph_name').value, 'url': document.getElementById('new_ph_url').value });\"") self.write(">Create new Producer</button></div>") self.write(self.render_string("basic_footer.html"))
def get(self): # pylint: disable=E0202 ph = self._output[self.return_name] self.write(self.render_string("bare_header.html", title="%s" % ph["name"])) self.write("<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<h2>%s</h2>" % ph["name"]) self.write("<span>Times from the server:</span><br>") self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "US/Eastern") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "US/Pacific") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "Europe/London") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "Asia/Tokyo") ) total_len = 0 for song in ph["songs"]: total_len += song["length"] self.write( "<br><div>Total length of songs: <b>%d:%02d</b></div>" % (int(total_len / 3600), (total_len / 60) % 60) ) self.write("<br><span>Change time. Use YOUR timezone.</span><br>") index.write_html_time_form(self, "power_hour", ph["start"]) self.write( "<br><button onclick=\"window.top.call_api('admin/change_producer_start_time', " ) self.write( "{ 'utc_time': document.getElementById('power_hour_timestamp').value, 'sched_id': %s });\"" % ph["id"] ) self.write(">Change Time</button></div><hr>") self.write( "<button onclick=\"window.top.call_api('admin/delete_producer', { 'sched_id': %s });\">Delete This Power Hour</button><hr>" % ph["id"] ) self.write( "Name: <input type='text' id='new_ph_name' value='%s'><br>" % ph["name"] ) self.write( "<button onclick=\"window.top.call_api('admin/change_producer_name', { 'sched_id': %s, 'name': document.getElementById('new_ph_name').value });\">Change Name</button><hr>" % ph["id"] ) self.write( "URL: <input type='text' id='new_ph_url' value='%s'><br>" % (ph["url"] or "") ) self.write( "<button onclick=\"window.top.call_api('admin/change_producer_url', { 'sched_id': %s, 'url': document.getElementById('new_ph_url').value });\">Change URL</button><hr>" % ph["id"] ) self.write( "<button onclick=\"window.top.call_api('admin/shuffle_power_hour', { 'sched_id': %s });\">Shuffle the Song Order</button><hr>\n\n" % ph["id"] ) try: self.write("<ol>") for song in ph["songs"]: self.write("<li><div>%s" % song["title"]) if song["one_up_used"]: self.write(" <b>(PLAYED)</b>") elif song["one_up_queued"]: self.write(" (queued)") self.write("</div><div>%s</div>\n" % song["albums"][0]["name"]) self.write("<div>") self.write( "<a onclick=\"window.top.call_api('admin/remove_from_power_hour', { 'one_up_id': %s });\">Delete</a> - " % song["one_up_id"] ) self.write( "<a onclick=\"window.top.call_api('admin/move_up_in_power_hour', { 'one_up_id': %s });\">Move Up</a>" % song["one_up_id"] ) self.write("</div></li>\n") self.write("</ol>\n") self.write( "<script>window.top.current_sched_id = %s;</script>\n\n" % ph["id"] ) except Exception as e: self.write("</ol>") self.write( "<div>ERROR DISPLAYING SONG LIST. Something is wrong. Consult Rob. Do not play this Power Hour.</div>" ) log.exception("admin", "Could not display song list.", e) self.write(self.render_string("basic_footer.html"))
def get(self): ph = self._output[self.return_name] self.write(self.render_string("bare_header.html", title="%s" % ph["name"])) self.write("<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<h2>%s</h2>" % ph["name"]) self.write("<span>Times from the server:</span><br>") self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "US/Eastern") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "US/Pacific") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "Europe/London") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "Asia/Tokyo") ) self.write("<br><span>Change time. Use YOUR timezone.</span><br>") index.write_html_time_form(self, "power_hour", ph["start"]) self.write("<br><button onclick=\"window.top.call_api('admin/change_producer_start_time', ") self.write( "{ 'utc_time': document.getElementById('power_hour_timestamp').value, 'sched_id': %s });\"" % ph["id"] ) self.write(">Change Time</button></div><hr>") self.write( "<button onclick=\"window.top.call_api('admin/delete_producer', { 'sched_id': %s });\">Delete This Power Hour</button><hr>" % ph["id"] ) self.write("Name: <input type='text' id='new_ph_name' value='%s'><br>" % ph["name"]) self.write( "<button onclick=\"window.top.call_api('admin/change_producer_name', { 'sched_id': %s, 'name': document.getElementById('new_ph_name').value });\">Change Name</button><hr>" % ph["id"] ) self.write("URL: <input type='text' id='new_ph_url' value='%s'><br>" % (ph["url"] or "")) self.write( "<button onclick=\"window.top.call_api('admin/change_producer_url', { 'sched_id': %s, 'url': document.getElementById('new_ph_url').value });\">Change URL</button><hr>" % ph["id"] ) self.write( "<button onclick=\"window.top.call_api('admin/shuffle_power_hour', { 'sched_id': %s });\">Shuffle the Song Order</button><hr>\n\n" % ph["id"] ) try: self.write("<ol>") for song in ph["songs"]: self.write("<li><div>%s" % song["title"]) if song["one_up_used"]: self.write(" <b>(PLAYED)</b>") elif song["one_up_queued"]: self.write(" (queued)") self.write("</div><div>%s</div>\n" % song["albums"][0]["name"]) self.write( "<div><a onclick=\"window.top.call_api('admin/remove_from_power_hour', { 'one_up_id': %s });\">Delete</a></div></li>\n" % song["one_up_id"] ) self.write("</ol>\n") self.write("<script>window.top.current_sched_id = %s;</script>\n\n" % ph["id"]) except Exception as e: self.write("</ol>") self.write( "<div>ERROR DISPLAYING SONG LIST. Something is wrong. Consult Rob. Do not play this Power Hour.</div>" ) log.exception("admin", "Could not display song list.", e) self.write(self.render_string("basic_footer.html"))
def get(self): ph = self._output[self.return_name] self.write( self.render_string("bare_header.html", title="%s" % ph['name'])) self.write( "<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<h2>%s</h2>" % ph['name']) self.write("<span>Times from the server:</span><br>") self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph['start'], ph['end'], 'US/Eastern')) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph['start'], ph['end'], 'US/Pacific')) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph['start'], ph['end'], 'Europe/London')) self.write("<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph['start'], ph['end'], 'Asia/Tokyo')) self.write("<br><span>Change time. Use YOUR timezone.</span><br>") index.write_html_time_form(self, "power_hour", ph['start']) self.write( "<br><button onclick=\"window.top.call_api('admin/change_producer_start_time', " ) self.write( "{ 'utc_time': document.getElementById('power_hour_timestamp').value, 'sched_id': %s });\"" % ph['id']) self.write(">Change Time</button></div><hr>") self.write( "<button onclick=\"window.top.call_api('admin/delete_producer', { 'sched_id': %s });\">Delete This Power Hour</button><hr>" % ph['id']) self.write( "Name: <input type='text' id='new_ph_name' value='%s'><br>" % ph['name']) self.write( "<button onclick=\"window.top.call_api('admin/change_producer_name', { 'sched_id': %s, 'name': document.getElementById('new_ph_name').value });\">Change Name</button><hr>" % ph['id']) self.write("URL: <input type='text' id='new_ph_url' value='%s'><br>" % (ph['url'] or "")) self.write( "<button onclick=\"window.top.call_api('admin/change_producer_url', { 'sched_id': %s, 'url': document.getElementById('new_ph_url').value });\">Change URL</button><hr>" % ph['id']) self.write( "<button onclick=\"window.top.call_api('admin/shuffle_power_hour', { 'sched_id': %s });\">Shuffle the Song Order</button><hr>\n\n" % ph['id']) try: self.write("<ol>") for song in ph['songs']: self.write("<li><div>%s" % song['title']) if song['one_up_used']: self.write(" <b>(PLAYED)</b>") elif song['one_up_queued']: self.write(" (queued)") self.write("</div><div>%s</div>\n" % song['albums'][0]['name']) self.write( "<div><a onclick=\"window.top.call_api('admin/remove_from_power_hour', { 'one_up_id': %s });\">Delete</a></div></li>\n" % song['one_up_id']) self.write("</ol>\n") self.write( "<script>window.top.current_sched_id = %s;</script>\n\n" % ph['id']) except Exception as e: self.write("</ol>") self.write( "<div>ERROR DISPLAYING SONG LIST. Something is wrong. Consult Rob. Do not play this Power Hour.</div>" ) log.exception("admin", "Could not display song list.", e) self.write(self.render_string("basic_footer.html"))
def get(self): # pylint: disable=E0202 ph = self._output[self.return_name] self.write(self.render_string("bare_header.html", title="%s" % ph["name"])) self.write("<script>\nwindow.top.refresh_all_screens = false;\n</script>") self.write("<h2>") self.write("<div style=\"float: right; position: relative; top: -4px; \">") self.write( "<a onclick=\"window.top.call_api('admin/delete_producer', { 'sched_id': %s });\">🚮</a>" % ph["id"] ) self.write("</div>") self.write(ph["name"]) self.write("</h2>") ###### self.write(f"<div class=\"power_hour\">") self.write(f"<div class=\"power_hour__row\">") self.write("<div class=\"power_hour__left\">") self.write("<span>Times from the server:</span><br>") self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "US/Eastern") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "US/Pacific") ) self.write( "<div style='font-family: monospace;'>%s</div>" % get_ph_formatted_time(ph["start"], ph["end"], "Europe/London") ) self.write("</div>") self.write("<div class=\"power_hour__right\">") total_len = 0 for song in ph["songs"]: total_len += song["length"] self.write( "<div>Total length of songs: <b>%d:%02d</b></div>" % (int(total_len / 3600), (total_len / 60) % 60) ) self.write("</div>") self.write("</div>") self.write("</div>") #### self.write(f"<div class=\"power_hour\">") self.write(f"<div class=\"power_hour__row\">") self.write("<div class=\"power_hour__left\">") self.write("<span>Your TZ:</span>") index.write_html_time_form(self, "power_hour", ph["start"]) self.write("</div>") self.write("<div class=\"power_hour__right\">") self.write( "<button onclick=\"window.top.call_api('admin/change_producer_start_time', " ) self.write( "{ 'utc_time': document.getElementById('power_hour_timestamp').value, 'sched_id': %s });\"" % ph["id"] ) self.write(">Change Time</button></div>") self.write("</div>") self.write("</div>") ###### self.write(f"<div class=\"power_hour\">") self.write(f"<div class=\"power_hour__row\">") self.write("<div class=\"power_hour__left\">") self.write( "Name: <input type='text' id='new_ph_name' value='%s'>" % ph["name"] ) self.write("</div>") self.write("<div class=\"power_hour__right\">") self.write( "<button onclick=\"window.top.call_api('admin/change_producer_name', { 'sched_id': %s, 'name': document.getElementById('new_ph_name').value });\">Change Name</button>" % ph["id"] ) self.write("</div>") self.write("</div>") self.write("</div>") ##### self.write(f"<div class=\"power_hour\" style=\"margin-bottom: 24px;\">") self.write(f"<div class=\"power_hour__row\">") self.write("<div class=\"power_hour__left\">") self.write( "<button onclick=\"window.top.call_api('admin/shuffle_power_hour', { 'sched_id': %s });\">Shuffle the Song Order</button>\n\n" % ph["id"] ) self.write("</div>") self.write("</div>") self.write("</div>") ##### try: for song_index, song in enumerate(ph["songs"]): song_origin = config.station_id_friendly[song["origin_sid"]] song_class_modifiers = [] if song["one_up_used"]: song_class_modifiers.append("used") song_classes = "power_hour--".join(song_class_modifiers) length_seconds = "{:02d}".format(song["length"] % 60) length_minutes = math.floor(song["length"] / 60) length = f"{length_minutes}:{length_seconds}" ## Totality self.write(f"<div class=\"power_hour {song_classes}\">") ## First row self.write(f"<div class=\"power_hour__row\">") self.write(f"<div class=\"power_hour__left\">{song_index + 1}. {song['title']}</div>") self.write(f"<div class=\"power_hour__right\">({song['rating']})</div>") self.write(f"<div class=\"power_hour__right\">{length}</div>") self.write(f"<div class=\"power_hour__right\">{song_origin}</div>") self.write("</div>") ## Second row self.write(f"<div class=\"power_hour__row\">") self.write(f"<div class=\"power_hour__left power_hour__album\">{song['albums'][0]['name']}</div>") self.write("<div class=\"power_hour__right\">") self.write( "<a class=\"power_hour__button\" onclick=\"window.top.call_api('admin/remove_from_power_hour', { 'one_up_id': %s });\">🚮</a>" % song["one_up_id"] ) self.write( "<a class=\"power_hour__button\" onclick=\"window.top.call_api('admin/move_up_in_power_hour', { 'one_up_id': %s });\">🔼</a>" % song["one_up_id"] ) self.write("</div>") self.write("</div>") ## Totality self.write("</div>") self.write( "<script>window.top.current_sched_id = %s;</script>\n\n" % ph["id"] ) except Exception as e: self.write("</ol>") self.write( "<div>ERROR DISPLAYING SONG LIST. Something is wrong. Consult Rob. Do not play this Power Hour.</div>" ) log.exception("admin", "Could not display song list.", e) self.write(self.render_string("basic_footer.html"))