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

Conflicts:
	VERSION
	airtime_mvc/application/configs/conf.php
	airtime_mvc/application/models/Playlist.php
	airtime_mvc/application/models/Schedule.php
	airtime_mvc/application/models/Shows.php
	airtime_mvc/application/models/StoredFile.php
	airtime_mvc/application/views/scripts/form/preferences_general.phtml
	airtime_mvc/application/views/scripts/user/remove-user.phtml
	airtime_mvc/public/js/airtime/schedule/add-show.js
	airtime_mvc/public/js/airtime/schedule/schedule.js
	install/airtime-upgrade.php
	install/include/AirtimeInstall.php
	python_apps/api_clients/api_client.py
	utils/airtime-clean-storage
	utils/airtime-clean-storage.php
	utils/airtime-import
	utils/airtime-import.php
This commit is contained in:
Paul Baranowski 2011-04-25 17:24:53 -04:00
commit eb76bbe7f0
17 changed files with 254 additions and 129 deletions

View File

@ -1,2 +1,2 @@
PRODUCT_ID=Airtime
PRODUCT_RELEASE=1.8.0
PRODUCT_RELEASE=1.9.0-beta

View File

@ -6,7 +6,7 @@
* /etc/airtime/recorder.cfg
*/
define('AIRTIME_VERSION', '1.8.0');
define('AIRTIME_VERSION', '1.9.0-beta');
define('AIRTIME_COPYRIGHT_DATE', '2010-2011');
define('AIRTIME_REST_VERSION', '1.1');

View File

@ -60,7 +60,6 @@ class ScheduleGroup {
if (empty($length)) {
return new PEAR_Error("Length is empty.");
}
// Insert into the table
$this->groupId = $CC_DBC->GetOne("SELECT nextval('schedule_group_id_seq')");

View File

@ -282,7 +282,8 @@ class Show {
$showId = $this->getId();
$sql = "SELECT last_show FROM cc_show_days"
." WHERE show_id = $showId";
." WHERE show_id = $showId"
." ORDER BY last_show DESC";
$endDate = $CC_DBC->GetOne($sql);
@ -367,7 +368,8 @@ class Show {
$showId = $this->getId();
$sql = "SELECT first_show FROM cc_show_days"
." WHERE show_id = $showId";
." WHERE show_id = $showId"
." ORDER BY first_show";
$firstDate = $CC_DBC->GetOne($sql);

View File

@ -431,20 +431,16 @@ class StoredFile {
*
* @param string $p_gunid
* globally unique id of file
* @param boolean $p_autoload
* if TRUE, automatically load the row from the DB
*/
public function __construct($p_gunid=NULL, $p_autoload=TRUE)
public function __construct($p_gunid=NULL)
{
$this->gunid = $p_gunid;
if (empty($this->gunid)) {
$this->gunid = StoredFile::generateGunid();
}
else {
if ($p_autoload) {
$this->loadMetadata();
$this->exists = is_file($this->filepath) && is_readable($this->filepath);
}
$this->loadMetadata();
$this->exists = is_file($this->filepath) && is_readable($this->filepath);
}
}

View File

@ -36,7 +36,7 @@
?>
<?php foreach ($this->element->getElement('streamFormat')->getMultiOptions() as $radio) : ?>
<label for="streamFormat-<?php echo $i ?>">
<input type="radio" value="<?php echo $i ?>" id="streamFormat-<?php echo $i ?>" name="streamFormat" <?php if($i == $value){echo 'checked="checked"';}?>/>
<input type="radio" value="<?php echo $i ?>" id="streamFormat-<?php echo $i ?>" name="streamFormat" <?php if($i == $value){echo 'checked="checked"';}?> >
<?php echo $radio ?>
</input>
</label>
@ -59,7 +59,7 @@
?>
<?php foreach ($this->element->getElement('thirdPartyApi')->getMultiOptions() as $radio) : ?>
<label for="thirdPartyApi-<?php echo $i ?>">
<input type="radio" value="<?php echo $i ?>" id="thirdPartyApi-<?php echo $i ?>" name="thirdPartyApi" <?php if($i == $value){echo 'checked="checked"';}?> />
<input type="radio" value="<?php echo $i ?>" id="thirdPartyApi-<?php echo $i ?>" name="thirdPartyApi" <?php if($i == $value){echo 'checked="checked"';}?>>
<?php echo $radio ?>
</input>
</label>

View File

@ -1,3 +1,3 @@
<?php
echo this->entries;
echo $this->entries;
?>

View File

@ -104,15 +104,17 @@ function setAddShowEvents() {
form.find("#add_show_rebroadcast").click(function(){
$(this).blur();
if($(this).attr('checked') && !form.find("#add_show_repeats").attr('checked')) {
form.find("#add_show_rebroadcast_absolute").show();
}
else if($(this).attr('checked') && form.find("#add_show_repeats").attr('checked')) {
form.find("#add_show_rebroadcast_relative").show();
}
else {
form.find("#schedule-record-rebroadcast > fieldset:not(:first-child)").hide();
}
if(form.find("#add_show_record").attr('checked')){
if($(this).attr('checked') && !form.find("#add_show_repeats").attr('checked')) {
form.find("#add_show_rebroadcast_absolute").show();
}
else if($(this).attr('checked') && form.find("#add_show_repeats").attr('checked')) {
form.find("#add_show_rebroadcast_relative").show();
}
else {
form.find("#schedule-record-rebroadcast > fieldset:not(:first-child)").hide();
}
}
});
form.find("#add_show_repeat_type").change(function(){

View File

@ -228,7 +228,7 @@ function buildScheduleDialog(json){
dialog.dialog({
autoOpen: false,
title: 'Schedule Playlist',
title: 'Schedule Media',
width: 1100,
height: 550,
modal: true,

View File

@ -14,13 +14,16 @@ require_once(dirname(__FILE__).'/include/AirtimeInstall.php');
AirtimeInstall::ExitIfNotRoot();
AirtimeInstall::DbConnect(true);
if(AirtimeInstall::DbTableExists('cc_show_rebroadcast') === true) {
$version = "1.7.0";
echo "Airtime Version: ".$version." ".PHP_EOL;
}
else {
$version = "1.6";
echo "Airtime Version: ".$version." ".PHP_EOL;
$version = AirtimeInstall::GetAirtimeVersion();
if (!$version){
if(AirtimeInstall::DbTableExists('cc_show_rebroadcast') === true) {
$version = "1.7.0";
echo "Airtime Version: ".$version." ".PHP_EOL;
}
else {
$version = "1.6";
echo "Airtime Version: ".$version." ".PHP_EOL;
}
}
echo "******************************** Update Begin *********************************".PHP_EOL;
@ -31,6 +34,9 @@ if(strcmp($version, "1.7.0") < 0) {
if(strcmp($version, "1.8.0") < 0) {
system("php ".__DIR__."/upgrades/airtime-1.8/airtime-upgrade.php");
}
if (strcmp($version, "1.9.0") < 0){
system("php ".__DIR__."/upgrades/airtime-1.9/airtime-upgrade.php");
}
AirtimeInstall::SetAirtimeVersion(AIRTIME_VERSION);

View File

@ -124,9 +124,9 @@ class AirtimeInstall
echo "* Creating Airtime database user".PHP_EOL;
// Create the database user
$command = "sudo -u postgres psql postgres --command \"CREATE USER {$CC_CONFIG['dsn']['username']} "
." ENCRYPTED PASSWORD '{$CC_CONFIG['dsn']['password']}' LOGIN CREATEDB NOCREATEUSER;\" 2>/dev/null";
$username = $CC_CONFIG['dsn']['username'];
$password = $CC_CONFIG['dsn']['password'];
$command = "echo \"CREATE USER $username ENCRYPTED PASSWORD '$password' LOGIN CREATEDB NOCREATEUSER;\" | sudo -u postgres psql";
@exec($command, $output, $results);
if ($results == 0) {
@ -148,7 +148,9 @@ class AirtimeInstall
echo "* Creating Airtime database".PHP_EOL;
$command = "sudo -u postgres createdb {$CC_CONFIG['dsn']['database']} --owner {$CC_CONFIG['dsn']['username']} 2> /dev/null";
$database = $CC_CONFIG['dsn']['database'];
$username = $CC_CONFIG['dsn']['username'];
$command = "echo \"CREATE DATABASE $database OWNER $username\" | sudo -u postgres psql";
@exec($command, $output, $results);
if ($results == 0) {
echo "* Database '{$CC_CONFIG['dsn']['database']}' created.".PHP_EOL;

View File

@ -0,0 +1,14 @@
<?php
/**
* @package Airtime
* @subpackage StorageServer
* @copyright 2010 Sourcefabric O.P.S.
* @license http://www.gnu.org/licenses/gpl.txt
*/
set_include_path(__DIR__.'/../../../airtime_mvc/library' . PATH_SEPARATOR . get_include_path());
require_once __DIR__.'/../../../airtime_mvc/application/configs/conf.php';
require_once(dirname(__FILE__).'/../../include/AirtimeInstall.php');
require_once(dirname(__FILE__).'/../../include/AirtimeIni.php');
AirtimeInstall::CreateZendPhpLogFile();

View File

@ -180,7 +180,7 @@ class AirTimeApiClient(ApiClientInterface):
print 'Unable to get Airtime version number.'
print
return False
elif (version[0:4] != "1.8."):
elif (version[0:4] != "1.9."):
if (verbose):
print 'Airtime version: ' + str(version)
print 'pypo not compatible with this version of Airtime.'

View File

@ -0,0 +1,29 @@
api_client = "airtime"
# Hostname
base_url = 'localhost'
base_port = 80
# where the binary files live
bin_dir = '/usr/lib/airtime/media-monitor'
# base path to store recordered shows at
base_recorded_files = '/var/tmp/airtime/show-recorder/'
# where the logging files live
log_dir = '/var/log/airtime/show-recorder'
# Value needed to access the API
api_key = 'AAA'
# Path to the base of the API
api_base = 'api'
# URL to get the version number of the server API
version_url = 'version/api_key/%%api_key%%'
# URL to get the schedule of shows set to record
show_schedule_url = 'recorded-shows/format/json/api_key/%%api_key%%'
# URL to upload the recorded show's file to Airtime
upload_file_url = 'upload-recorded/format/json/api_key/%%api_key%%'

View File

@ -0,0 +1,52 @@
import os
import pyinotify
from pyinotify import WatchManager, Notifier, ThreadedNotifier, EventsCodes, ProcessEvent
# configure logging
try:
logging.config.fileConfig("logging.cfg")
except Exception, e:
print 'Error configuring logging: ', e
sys.exit()
# loading config file
try:
config = ConfigObj('/etc/airtime/recorder.cfg')
except Exception, e:
print 'Error loading config file: ', e
sys.exit()
# watched events
mask = pyinotify.ALL_EVENTS
wm = WatchManager()
wdd = wm.add_watch('/srv/airtime/stor', mask, rec=True)
class PTmp(ProcessEvent):
def process_IN_CREATE(self, event):
if event.dir :
global wm
wdd = wm.add_watch(event.pathname, mask, rec=True)
#print wdd.keys()
print "%s: %s" % (event.maskname, os.path.join(event.path, event.name))
def process_IN_MODIFY(self, event):
if not event.dir :
print event.path
print "%s: %s" % (event.maskname, os.path.join(event.path, event.name))
def process_default(self, event):
print "%s: %s" % (event.maskname, os.path.join(event.path, event.name))
if __name__ == '__main__':
try:
notifier = Notifier(wm, PTmp(), read_freq=2, timeout=1)
notifier.coalesce_events()
notifier.loop()
except KeyboardInterrupt:
notifier.stop()

View File

@ -0,0 +1,22 @@
[loggers]
keys=root
[handlers]
keys=consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s %(levelname)s - [%(filename)s : %(funcName)s() : line %(lineno)d] - %(message)s
datefmt=

View File

@ -8,6 +8,7 @@ if (isset($arr["DOCUMENT_ROOT"]) && ($arr["DOCUMENT_ROOT"] != "") ) {
echo "400 Not executable\r\n";
exit(1);
}
set_include_path('/var/www/airtime/library' . PATH_SEPARATOR . get_include_path());
set_include_path('/var/www/airtime/application/models' . PATH_SEPARATOR . get_include_path());
require_once('/var/www/airtime/application/configs/conf.php');