Merge branch 'CC-3174' into devel

This commit is contained in:
Naomi Aro 2012-04-12 18:12:01 +02:00
commit 0486d33e27
3 changed files with 31 additions and 7 deletions

View File

@ -16,8 +16,10 @@ class Application_Model_Scheduler {
private $epochNow;
private $nowDT;
private $user;
private $checkUserPermissions = true;
public function __construct($id = null) {
public function __construct() {
$this->con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME);
@ -27,6 +29,11 @@ class Application_Model_Scheduler {
$this->user = Application_Model_User::GetCurrentUser();
}
public function setCheckUserPermissions($value) {
$this->checkUserPermissions = $value;
}
/*
* make sure any incoming requests for scheduling are ligit.
*
@ -83,7 +90,7 @@ class Application_Model_Scheduler {
$id = $instance->getDbId();
$show = $instance->getCcShow($this->con);
if ($this->user->canSchedule($show->getDbId()) === false) {
if ($this->checkUserPermissions && $this->user->canSchedule($show->getDbId()) === false) {
throw new Exception("You are not allowed to schedule show {$show->getDbName()}.");
}

View File

@ -352,7 +352,7 @@ class Application_Model_ShowInstance {
* @param int $plId
* Playlist ID.
*/
public function addPlaylistToShow($pl_id)
public function addPlaylistToShow($pl_id, $checkUserPerm = true)
{
$ts = intval($this->_showInstance->getDbLastScheduled("U")) ? : 0;
$id = $this->_showInstance->getDbId();
@ -369,12 +369,13 @@ class Application_Model_ShowInstance {
*
* @param int $file_id
*/
public function addFileToShow($file_id)
public function addFileToShow($file_id, $checkUserPerm = true)
{
$ts = intval($this->_showInstance->getDbLastScheduled("U")) ? : 0;
$id = $this->_showInstance->getDbId();
$scheduler = new Application_Model_Scheduler();
$scheduler->setCheckUserPermissions($checkUserPerm);
$scheduler->scheduleAfter(
array(array("id" => 0, "instance" => $id, "timestamp" => $ts)),
array(array("id" => $file_id, "type" => "audioclip"))
@ -553,7 +554,7 @@ class Application_Model_ShowInstance {
try {
$rebroad = new Application_Model_ShowInstance($rebroadcast->getDbId());
$rebroad->addFileToShow($file_id);
$rebroad->addFileToShow($file_id, false);
}
catch (Exception $e) {
Logging::log("{$e->getFile()}");

View File

@ -137,8 +137,13 @@ class AirtimeProcessEvent(ProcessEvent):
if self.mmc.is_parent_directory(pathname, self.config.organize_directory):
#file was created in /srv/airtime/stor/organize. Need to process and move
#to /srv/airtime/stor/imported
oldPath = pathname
pathname = self.mmc.organize_new_file(pathname)
name = os.path.basename(pathname)
#delete files from organize if they can not be read properly.
if pathname is None:
os.remove(oldPath)
return
self.mmc.set_needed_file_permissions(pathname, dir)
is_recorded = self.mmc.is_parent_directory(pathname, self.config.recorded_directory)
@ -237,6 +242,11 @@ class AirtimeProcessEvent(ProcessEvent):
del self.cookies_IN_MOVED_FROM[event.cookie]
if self.mmc.is_parent_directory(event.pathname, self.config.organize_directory):
filepath = self.mmc.organize_new_file(event.pathname)
#delete files from organize if they can not be read properly.
if filepath is None:
os.remove(event.pathname)
else:
filepath = event.pathname
@ -244,7 +254,11 @@ class AirtimeProcessEvent(ProcessEvent):
self.file_events.append({'filepath': filepath, 'mode': self.config.MODE_MOVED})
else:
if self.mmc.is_parent_directory(event.pathname, self.config.organize_directory):
self.mmc.organize_new_file(event.pathname)
filepath = self.mmc.organize_new_file(event.pathname)
#delete files from organize if they can not be read properly.
if filepath is None:
os.remove(event.pathname)
else:
#show dragged from unwatched folder into a watched folder. Do not "organize".:q!
if self.mmc.is_parent_directory(event.pathname, self.config.recorded_directory):
@ -285,8 +299,10 @@ class AirtimeProcessEvent(ProcessEvent):
if not dir:
if self.mmc.is_audio_file(pathname):
if pathname in self.ignore_event:
self.logger.info("pathname in ignore event")
self.ignore_event.remove(pathname)
elif not self.mmc.is_parent_directory(pathname, self.config.organize_directory):
self.logger.info("deleting a file not in organize")
#we don't care if a file was deleted from the organize directory.
self.file_events.append({'filepath': pathname, 'mode': self.config.MODE_DELETE})