Merge branch 'master' of dev.sourcefabric.org:campcaster

This commit is contained in:
naomiaro 2011-03-23 19:52:26 -04:00
commit fbe9154719
7 changed files with 58 additions and 35 deletions

View file

@ -63,6 +63,7 @@ class Application_Model_Preference
Application_Model_Preference::SetValue("station_name", $title); Application_Model_Preference::SetValue("station_name", $title);
$defaultNamespace = new Zend_Session_Namespace('title_name'); $defaultNamespace = new Zend_Session_Namespace('title_name');
$defaultNamespace->title = $title; $defaultNamespace->title = $title;
RabbitMq::PushSchedule();
//set session variable to new station name so that html title is updated. //set session variable to new station name so that html title is updated.
//should probably do this in a view helper to keep this controller as minimal as possible. //should probably do this in a view helper to keep this controller as minimal as possible.
@ -88,6 +89,7 @@ class Application_Model_Preference
public static function SetStreamLabelFormat($type){ public static function SetStreamLabelFormat($type){
Application_Model_Preference::SetValue("stream_label_format", $type); Application_Model_Preference::SetValue("stream_label_format", $type);
RabbitMq::PushSchedule();
} }
public static function GetStreamLabelFormat(){ public static function GetStreamLabelFormat(){

View file

@ -716,6 +716,7 @@ class Schedule {
$result['stream_metadata'] = array(); $result['stream_metadata'] = array();
$result['stream_metadata']['format'] = Application_Model_Preference::GetStreamLabelFormat(); $result['stream_metadata']['format'] = Application_Model_Preference::GetStreamLabelFormat();
$result['stream_metadata']['station_name'] = Application_Model_Preference::GetStationName(); $result['stream_metadata']['station_name'] = Application_Model_Preference::GetStationName();
$result['server_timezone'] = date_default_timezone_get();
return $result; return $result;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -825,7 +825,6 @@ div.ui-datepicker {
#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-e, #schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-e,
#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-s { #schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-s {
float:left; float:left;
margin-right: 8px; margin-right: 8px;
} }
#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-close { #schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-close {
@ -1474,9 +1473,21 @@ ul.errors li {
margin:-4px 3px -3px 0; margin:-4px 3px -3px 0;
float:right; float:right;
} }
.time-flow { .time-flow {
float:right; float:right;
margin-right:4px; margin-right:4px;
}
.small-icon {
display:block;
width:21px;
height:10px;
float:right;
margin-left:3px;
}
.small-icon.recording {
background:url(images/icon_record.png) no-repeat 0 0;
}
.small-icon.rebroadcast {
background:url(images/icon_rebroadcast.png) no-repeat 0 0;
} }

View file

@ -41,13 +41,11 @@ cache_for = 24 #how long to hold the cache, in hours
# Poll interval in seconds. # Poll interval in seconds.
# #
# This is how often the poll script downloads new schedules and files from the # This will rarely need to be changed because any schedule changes are
# server. # automatically sent to pypo immediately.
# #
# For production use, this number depends on whether you plan on making any # This is how often the poll script downloads new schedules and files from the
# last-minute changes to your schedule. This number should be set to half of # server in the event that no changes are made to the schedule.
# the time you expect to "lock-in" your schedule. So if your schedule is set
# 24 hours in advance, this can be set to poll every 12 hours.
# #
poll_interval = 3600 # in seconds. poll_interval = 3600 # in seconds.

View file

@ -69,13 +69,22 @@ class PypoFetch(Thread):
consumer.register_callback(handle_message) consumer.register_callback(handle_message)
consumer.consume() consumer.consume()
logger.info("PypoFetch: init complete"); logger.info("PypoFetch: init complete")
def set_export_source(self, export_source): def set_export_source(self, export_source):
self.export_source = export_source self.export_source = export_source
self.cache_dir = config["cache_dir"] + self.export_source + '/' self.cache_dir = config["cache_dir"] + self.export_source + '/'
def check_matching_timezones(self, server_timezone):
logger = logging.getLogger('fetch')
f = open('/etc/timezone', 'r')
pypo_timezone = f.readline().strip(' \t\n\r')
f.close()
if server_timezone != pypo_timezone:
logger.error("Server and pypo timezones do not match. Audio playback may not start when expected!")
logger.error("Server timezone: %s", server_timezone)
logger.error("Pypo timezone: %s", pypo_timezone)
""" """
Process the schedule Process the schedule
@ -89,6 +98,8 @@ class PypoFetch(Thread):
logger = logging.getLogger('fetch') logger = logging.getLogger('fetch')
self.schedule = schedule_data["playlists"] self.schedule = schedule_data["playlists"]
self.check_matching_timezones(schedule_data["server_timezone"])
# Push stream metadata to liquidsoap # Push stream metadata to liquidsoap
# TODO: THIS LIQUIDSOAP STUFF NEEDS TO BE MOVED TO PYPO-PUSH!!! # TODO: THIS LIQUIDSOAP STUFF NEEDS TO BE MOVED TO PYPO-PUSH!!!
stream_metadata = schedule_data['stream_metadata'] stream_metadata = schedule_data['stream_metadata']