CC-1942: Add ability to set timezone in preferences

-change timezone in python
This commit is contained in:
martin 2011-08-12 15:36:00 -04:00
parent 84ec62eeca
commit b538f1cc82
6 changed files with 69 additions and 29 deletions

View file

@ -16,12 +16,36 @@ require_once 'MusicDir.php';
require_once 'Playlist.php'; require_once 'Playlist.php';
require_once 'StoredFile.php'; require_once 'StoredFile.php';
require_once 'Schedule.php'; require_once 'Schedule.php';
require_once 'Preference.php';
require_once 'Shows.php'; require_once 'Shows.php';
require_once 'Users.php'; require_once 'Users.php';
require_once 'RabbitMq.php'; require_once 'RabbitMq.php';
require_once 'DateHelper.php'; require_once 'DateHelper.php';
require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php'; require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
global $CC_CONFIG, $CC_DBC;
$dsn = $CC_CONFIG['dsn'];
$CC_DBC = DB::connect($dsn, FALSE);
if (PEAR::isError($CC_DBC)) {
echo "ERROR: ".$CC_DBC->getMessage()." ".$CC_DBC->getUserInfo()."\n";
exit(1);
}
$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
//DateTime in PHP 5.3.0+ need a default timezone set.
date_default_timezone_set(Application_Model_Preference::GetTimezone());
Logging::setLogPath('/var/log/airtime/zendphp.log');
Zend_Validate::setDefaultNamespaces("Zend");
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new RabbitMqPlugin());
/* The bootstrap class should only be used to initialize actions that return a view.
Actions that return JSON will not use the bootstrap class! */
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{ {
protected function _initDoctype() protected function _initDoctype()
@ -69,29 +93,5 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
$view = $this->getResource('view'); $view = $this->getResource('view');
$view->headTitle(Application_Model_Preference::GetHeadTitle()); $view->headTitle(Application_Model_Preference::GetHeadTitle());
} }
protected function _initDbConnection(){
global $CC_CONFIG, $CC_DBC;
$dsn = $CC_CONFIG['dsn'];
$CC_DBC = DB::connect($dsn, FALSE);
if (PEAR::isError($CC_DBC)) {
echo "ERROR: ".$CC_DBC->getMessage()." ".$CC_DBC->getUserInfo()."\n";
exit(1);
}
$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
//DateTime in PHP 5.3.0+ need a default timezone set.
date_default_timezone_set(Application_Model_Preference::GetTimezone());
}
protected function _initMisc(){
Logging::setLogPath('/var/log/airtime/zendphp.log');
Zend_Validate::setDefaultNamespaces("Zend");
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new RabbitMqPlugin());
}
} }

View file

@ -4,6 +4,9 @@ class RabbitMqPlugin extends Zend_Controller_Plugin_Abstract
{ {
public function dispatchLoopShutdown() public function dispatchLoopShutdown()
{ {
RabbitMq::PushScheduleFinal(); if (RabbitMq::$doPush) {
$md = array('schedule' => Schedule::GetScheduledPlaylists());
RabbitMq::SendMessageToPypo("update_schedule", $md);
}
} }
} }

View file

@ -59,7 +59,6 @@ class Application_Model_Preference
$result = $CC_DBC->GetOne($sql); $result = $CC_DBC->GetOne($sql);
return $result; return $result;
} }
} }
public static function GetHeadTitle(){ public static function GetHeadTitle(){
@ -263,6 +262,9 @@ class Application_Model_Preference
public static function SetTimezone($timezone){ public static function SetTimezone($timezone){
Application_Model_Preference::SetValue("timezone", $timezone); Application_Model_Preference::SetValue("timezone", $timezone);
date_default_timezone_set($timezone);
$md = array("timezone" => $timezone);
RabbitMq::SendMessageToPypo("update_timezone", $md);
} }
public static function GetTimezone(){ public static function GetTimezone(){

View file

@ -3,7 +3,7 @@ require_once 'php-amqplib/amqp.inc';
class RabbitMq class RabbitMq
{ {
static private $doPush = FALSE; static public $doPush = FALSE;
/** /**
* Sets a flag to push the schedule at the end of the request. * Sets a flag to push the schedule at the end of the request.
@ -17,7 +17,7 @@ class RabbitMq
* Will push the schedule in the range from 24 hours ago to 24 hours * Will push the schedule in the range from 24 hours ago to 24 hours
* in the future. * in the future.
*/ */
public static function PushScheduleFinal() /* public static function PushScheduleFinal()
{ {
global $CC_CONFIG; global $CC_CONFIG;
if (RabbitMq::$doPush) { if (RabbitMq::$doPush) {
@ -42,6 +42,32 @@ class RabbitMq
self::SendMessageToShowRecorder("update_schedule"); self::SendMessageToShowRecorder("update_schedule");
} }
} */
public static function SendMessageToPypo($event_type, $md)
{
global $CC_CONFIG;
$md["event_type"] = $event_type;
$conn = new AMQPConnection($CC_CONFIG["rabbitmq"]["host"],
$CC_CONFIG["rabbitmq"]["port"],
$CC_CONFIG["rabbitmq"]["user"],
$CC_CONFIG["rabbitmq"]["password"]);
$channel = $conn->channel();
$channel->access_request($CC_CONFIG["rabbitmq"]["vhost"], false, false, true, true);
$EXCHANGE = 'airtime-schedule';
$channel->exchange_declare($EXCHANGE, 'direct', false, true);
$data = json_encode($md);
$msg = new AMQPMessage($data, array('content_type' => 'text/plain'));
$channel->basic_publish($msg, $EXCHANGE);
$channel->close();
$conn->close();
self::SendMessageToShowRecorder("update_schedule");
} }
public static function SendMessageToMediaMonitor($event_type, $md) public static function SendMessageToMediaMonitor($event_type, $md)

View file

@ -96,7 +96,11 @@ while ($showTime < $endDate) {
} }
$showNumber = $showNumber + 1; $showNumber = $showNumber + 1;
} }
RabbitMq::PushScheduleFinal();
if (RabbitMq::$doPush) {
$md = array('schedule' => Schedule::GetScheduledPlaylists());
RabbitMq::SendMessageToPypo("update_schedule", $md);
}

View file

@ -55,6 +55,11 @@ def handle_message(body, message):
if(command == 'update_schedule'): if(command == 'update_schedule'):
SCHEDULE_PUSH_MSG = m['schedule'] SCHEDULE_PUSH_MSG = m['schedule']
elif (command == 'update_timezone'):
logger.info("Setting timezone to %s", m['timezone'])
os.environ['TZ'] = m['timezone']
time.tzset()
# ACK the message to take it off the queue # ACK the message to take it off the queue
message.ack() message.ack()