removed hardcoded signals in the code.
This commit is contained in:
parent
6101e9dfe3
commit
4acb7d92db
|
@ -2,6 +2,7 @@ import os
|
||||||
from pydispatch import dispatcher
|
from pydispatch import dispatcher
|
||||||
from media.monitor.events import NewFile, DeleteFile, ModifyFile
|
from media.monitor.events import NewFile, DeleteFile, ModifyFile
|
||||||
from media.monitor.log import Loggable
|
from media.monitor.log import Loggable
|
||||||
|
from media.saas.thread import getsig
|
||||||
import media.monitor.pure as mmp
|
import media.monitor.pure as mmp
|
||||||
|
|
||||||
class Bootstrapper(Loggable):
|
class Bootstrapper(Loggable):
|
||||||
|
@ -16,7 +17,7 @@ class Bootstrapper(Loggable):
|
||||||
watch_signal - the signals should send events for every file on.
|
watch_signal - the signals should send events for every file on.
|
||||||
"""
|
"""
|
||||||
self.db = db
|
self.db = db
|
||||||
self.watch_signal = watch_signal
|
self.watch_signal = getsig(watch_signal)
|
||||||
|
|
||||||
def flush_all(self, last_ran):
|
def flush_all(self, last_ran):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -8,6 +8,7 @@ from media.monitor.pure import LazyProperty
|
||||||
from media.monitor.metadata import Metadata
|
from media.monitor.metadata import Metadata
|
||||||
from media.monitor.log import Loggable
|
from media.monitor.log import Loggable
|
||||||
from media.monitor.exceptions import BadSongFile
|
from media.monitor.exceptions import BadSongFile
|
||||||
|
from media.saas.thread import getsig
|
||||||
|
|
||||||
class PathChannel(object):
|
class PathChannel(object):
|
||||||
"""
|
"""
|
||||||
|
@ -15,7 +16,7 @@ class PathChannel(object):
|
||||||
used as a named tuple
|
used as a named tuple
|
||||||
"""
|
"""
|
||||||
def __init__(self, signal, path):
|
def __init__(self, signal, path):
|
||||||
self.signal = signal
|
self.signal = getsig(signal)
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|
||||||
# TODO : Move this to it's file. Also possible unsingleton and use it as a
|
# TODO : Move this to it's file. Also possible unsingleton and use it as a
|
||||||
|
|
|
@ -3,6 +3,7 @@ from pydispatch import dispatcher
|
||||||
import abc
|
import abc
|
||||||
|
|
||||||
from media.monitor.log import Loggable
|
from media.monitor.log import Loggable
|
||||||
|
from media.saas.thread import getsig
|
||||||
import media.monitor.pure as mmp
|
import media.monitor.pure as mmp
|
||||||
|
|
||||||
# Defines the handle interface
|
# Defines the handle interface
|
||||||
|
@ -21,10 +22,10 @@ class ReportHandler(Handles):
|
||||||
"""
|
"""
|
||||||
__metaclass__ = abc.ABCMeta
|
__metaclass__ = abc.ABCMeta
|
||||||
def __init__(self, signal, weak=False):
|
def __init__(self, signal, weak=False):
|
||||||
self.signal = signal
|
self.signal = getsig(signal)
|
||||||
self.report_signal = "badfile"
|
self.report_signal = getsig("badfile")
|
||||||
def dummy(sender, event): self.handle(sender,event)
|
def dummy(sender, event): self.handle(sender,event)
|
||||||
dispatcher.connect(dummy, signal=signal, sender=dispatcher.Any,
|
dispatcher.connect(dummy, signal=self.signal, sender=dispatcher.Any,
|
||||||
weak=weak)
|
weak=weak)
|
||||||
|
|
||||||
def report_problem_file(self, event, exception=None):
|
def report_problem_file(self, event, exception=None):
|
||||||
|
@ -38,7 +39,7 @@ class ProblemFileHandler(Handles, Loggable):
|
||||||
"""
|
"""
|
||||||
def __init__(self, channel, **kwargs):
|
def __init__(self, channel, **kwargs):
|
||||||
self.channel = channel
|
self.channel = channel
|
||||||
self.signal = self.channel.signal
|
self.signal = getsig(self.channel.signal)
|
||||||
self.problem_dir = self.channel.path
|
self.problem_dir = self.channel.path
|
||||||
def dummy(sender, event, exception):
|
def dummy(sender, event, exception):
|
||||||
self.handle(sender, event, exception)
|
self.handle(sender, event, exception)
|
||||||
|
|
|
@ -9,7 +9,7 @@ from media.monitor.events import OrganizeFile, NewFile, MoveFile, DeleteFile, \
|
||||||
DeleteDir, EventRegistry, MoveDir,\
|
DeleteDir, EventRegistry, MoveDir,\
|
||||||
DeleteDirWatch
|
DeleteDirWatch
|
||||||
from media.monitor.log import Loggable, get_logger
|
from media.monitor.log import Loggable, get_logger
|
||||||
|
from media.saas.thread import getsig
|
||||||
# Note: Because of the way classes that inherit from pyinotify.ProcessEvent
|
# Note: Because of the way classes that inherit from pyinotify.ProcessEvent
|
||||||
# interact with constructors. you should only instantiate objects from them
|
# interact with constructors. you should only instantiate objects from them
|
||||||
# using keyword arguments. For example:
|
# using keyword arguments. For example:
|
||||||
|
@ -45,7 +45,7 @@ class BaseListener(object):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Listener(%s), Signal(%s)" % \
|
return "Listener(%s), Signal(%s)" % \
|
||||||
(self.__class__.__name__, self. signal)
|
(self.__class__.__name__, self. signal)
|
||||||
def my_init(self, signal): self.signal = signal
|
def my_init(self, signal): self.signal = getsig(signal)
|
||||||
|
|
||||||
class OrganizeListener(BaseListener, pyinotify.ProcessEvent, Loggable):
|
class OrganizeListener(BaseListener, pyinotify.ProcessEvent, Loggable):
|
||||||
def process_IN_CLOSE_WRITE(self, event):
|
def process_IN_CLOSE_WRITE(self, event):
|
||||||
|
@ -66,14 +66,14 @@ class OrganizeListener(BaseListener, pyinotify.ProcessEvent, Loggable):
|
||||||
self.logger.info("Bootstrapping: File in 'organize' directory: \
|
self.logger.info("Bootstrapping: File in 'organize' directory: \
|
||||||
'%s'" % f)
|
'%s'" % f)
|
||||||
if not mmp.file_locked(f):
|
if not mmp.file_locked(f):
|
||||||
dispatcher.send(signal=self.signal, sender=self,
|
dispatcher.send(signal=getsig(self.signal), sender=self,
|
||||||
event=OrganizeFile(f))
|
event=OrganizeFile(f))
|
||||||
flushed += 1
|
flushed += 1
|
||||||
#self.logger.info("Flushed organized directory with %d files" % flushed)
|
#self.logger.info("Flushed organized directory with %d files" % flushed)
|
||||||
|
|
||||||
@IncludeOnly(mmp.supported_extensions)
|
@IncludeOnly(mmp.supported_extensions)
|
||||||
def process_to_organize(self, event):
|
def process_to_organize(self, event):
|
||||||
dispatcher.send(signal=self.signal, sender=self,
|
dispatcher.send(signal=getsig(self.signal), sender=self,
|
||||||
event=OrganizeFile(event))
|
event=OrganizeFile(event))
|
||||||
|
|
||||||
class StoreWatchListener(BaseListener, Loggable, pyinotify.ProcessEvent):
|
class StoreWatchListener(BaseListener, Loggable, pyinotify.ProcessEvent):
|
||||||
|
@ -101,14 +101,14 @@ class StoreWatchListener(BaseListener, Loggable, pyinotify.ProcessEvent):
|
||||||
|
|
||||||
def delete_watch_dir(self, event):
|
def delete_watch_dir(self, event):
|
||||||
e = DeleteDirWatch(event)
|
e = DeleteDirWatch(event)
|
||||||
dispatcher.send(signal='watch_move', sender=self, event=e)
|
dispatcher.send(signal=getsig('watch_move'), sender=self, event=e)
|
||||||
dispatcher.send(signal=self.signal, sender=self, event=e)
|
dispatcher.send(signal=getsig(self.signal), sender=self, event=e)
|
||||||
|
|
||||||
@mediate_ignored
|
@mediate_ignored
|
||||||
@IncludeOnly(mmp.supported_extensions)
|
@IncludeOnly(mmp.supported_extensions)
|
||||||
def process_create(self, event):
|
def process_create(self, event):
|
||||||
evt = NewFile(event)
|
evt = NewFile(event)
|
||||||
dispatcher.send(signal=self.signal, sender=self, event=evt)
|
dispatcher.send(signal=getsig(self.signal), sender=self, event=evt)
|
||||||
return evt
|
return evt
|
||||||
|
|
||||||
@mediate_ignored
|
@mediate_ignored
|
||||||
|
@ -117,13 +117,13 @@ class StoreWatchListener(BaseListener, Loggable, pyinotify.ProcessEvent):
|
||||||
evt = None
|
evt = None
|
||||||
if event.dir : evt = DeleteDir(event)
|
if event.dir : evt = DeleteDir(event)
|
||||||
else : evt = DeleteFile(event)
|
else : evt = DeleteFile(event)
|
||||||
dispatcher.send(signal=self.signal, sender=self, event=evt)
|
dispatcher.send(signal=getsig(self.signal), sender=self, event=evt)
|
||||||
return evt
|
return evt
|
||||||
|
|
||||||
@mediate_ignored
|
@mediate_ignored
|
||||||
def process_delete_dir(self, event):
|
def process_delete_dir(self, event):
|
||||||
evt = DeleteDir(event)
|
evt = DeleteDir(event)
|
||||||
dispatcher.send(signal=self.signal, sender=self, event=evt)
|
dispatcher.send(signal=getsig(self.signal), sender=self, event=evt)
|
||||||
return evt
|
return evt
|
||||||
|
|
||||||
def flush_events(self, path):
|
def flush_events(self, path):
|
||||||
|
@ -138,6 +138,6 @@ class StoreWatchListener(BaseListener, Loggable, pyinotify.ProcessEvent):
|
||||||
added = 0
|
added = 0
|
||||||
for f in mmp.walk_supported(path, clean_empties=False):
|
for f in mmp.walk_supported(path, clean_empties=False):
|
||||||
added += 1
|
added += 1
|
||||||
dispatcher.send( signal=self.signal, sender=self, event=NewFile(f) )
|
dispatcher.send( signal=getsig(self.signal), sender=self, event=NewFile(f) )
|
||||||
self.logger.info( "Flushed watch directory. added = %d" % added )
|
self.logger.info( "Flushed watch directory. added = %d" % added )
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ from media.monitor.log import Loggable
|
||||||
from media.monitor.listeners import StoreWatchListener, OrganizeListener
|
from media.monitor.listeners import StoreWatchListener, OrganizeListener
|
||||||
from media.monitor.handler import ProblemFileHandler
|
from media.monitor.handler import ProblemFileHandler
|
||||||
from media.monitor.organizer import Organizer
|
from media.monitor.organizer import Organizer
|
||||||
from media.saas.thread import InstanceInheritingThread
|
from media.saas.thread import InstanceInheritingThread, getsig
|
||||||
import media.monitor.pure as mmp
|
import media.monitor.pure as mmp
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,8 +37,8 @@ class Manager(Loggable):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.wm = pyinotify.WatchManager()
|
self.wm = pyinotify.WatchManager()
|
||||||
# These two instance variables are assumed to be constant
|
# These two instance variables are assumed to be constant
|
||||||
self.watch_channel = 'watch'
|
self.watch_channel = getsig('watch')
|
||||||
self.organize_channel = 'organize'
|
self.organize_channel = getsig('organize')
|
||||||
self.watch_listener = StoreWatchListener(signal = self.watch_channel)
|
self.watch_listener = StoreWatchListener(signal = self.watch_channel)
|
||||||
self.__timeout_thread = ManagerTimeout(self)
|
self.__timeout_thread = ManagerTimeout(self)
|
||||||
self.__timeout_thread.daemon = True
|
self.__timeout_thread.daemon = True
|
||||||
|
@ -54,11 +54,11 @@ class Manager(Loggable):
|
||||||
self.organize_channel),
|
self.organize_channel),
|
||||||
}
|
}
|
||||||
def dummy(sender, event): self.watch_move( event.path, sender=sender )
|
def dummy(sender, event): self.watch_move( event.path, sender=sender )
|
||||||
dispatcher.connect(dummy, signal='watch_move', sender=dispatcher.Any,
|
dispatcher.connect(dummy, signal=getsig('watch_move'),
|
||||||
weak=False)
|
sender=dispatcher.Any, weak=False)
|
||||||
def subwatch_add(sender, directory):
|
def subwatch_add(sender, directory):
|
||||||
self.__add_watch(directory, self.watch_listener)
|
self.__add_watch(directory, self.watch_listener)
|
||||||
dispatcher.connect(subwatch_add, signal='add_subwatch',
|
dispatcher.connect(subwatch_add, signal=getsig('add_subwatch'),
|
||||||
sender=dispatcher.Any, weak=False)
|
sender=dispatcher.Any, weak=False)
|
||||||
# A private mapping path => watch_descriptor
|
# A private mapping path => watch_descriptor
|
||||||
# we use the same dictionary for organize, watch, store wd events.
|
# we use the same dictionary for organize, watch, store wd events.
|
||||||
|
@ -81,7 +81,7 @@ class Manager(Loggable):
|
||||||
def watch_signal(self):
|
def watch_signal(self):
|
||||||
""" Return the signal string our watch_listener is reading
|
""" Return the signal string our watch_listener is reading
|
||||||
events from """
|
events from """
|
||||||
return self.watch_listener.signal
|
return getsig(self.watch_listener.signal)
|
||||||
|
|
||||||
def __remove_watch(self,path):
|
def __remove_watch(self,path):
|
||||||
""" Remove path from being watched (first will check if 'path'
|
""" Remove path from being watched (first will check if 'path'
|
||||||
|
@ -131,7 +131,8 @@ class Manager(Loggable):
|
||||||
""" Set the path where problem files should go """
|
""" Set the path where problem files should go """
|
||||||
self.organize['problem_files_path'] = new_path
|
self.organize['problem_files_path'] = new_path
|
||||||
self.organize['problem_handler'] = \
|
self.organize['problem_handler'] = \
|
||||||
ProblemFileHandler( PathChannel(signal='badfile',path=new_path) )
|
ProblemFileHandler( PathChannel(signal=getsig('badfile'),
|
||||||
|
path=new_path) )
|
||||||
|
|
||||||
def get_recorded_path(self):
|
def get_recorded_path(self):
|
||||||
""" returns the path of the recorded directory """
|
""" returns the path of the recorded directory """
|
||||||
|
|
|
@ -7,6 +7,7 @@ from media.monitor.exceptions import BadSongFile
|
||||||
from media.monitor.events import OrganizeFile
|
from media.monitor.events import OrganizeFile
|
||||||
from pydispatch import dispatcher
|
from pydispatch import dispatcher
|
||||||
from os.path import dirname
|
from os.path import dirname
|
||||||
|
from media.saas.thread import getsig
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
class Organizer(ReportHandler,Loggable):
|
class Organizer(ReportHandler,Loggable):
|
||||||
|
@ -36,7 +37,7 @@ class Organizer(ReportHandler,Loggable):
|
||||||
self.channel = channel
|
self.channel = channel
|
||||||
self.target_path = target_path
|
self.target_path = target_path
|
||||||
self.recorded_path = recorded_path
|
self.recorded_path = recorded_path
|
||||||
super(Organizer, self).__init__(signal=self.channel, weak=False)
|
super(Organizer, self).__init__(signal=getsig(self.channel), weak=False)
|
||||||
|
|
||||||
def handle(self, sender, event):
|
def handle(self, sender, event):
|
||||||
""" Intercept events where a new file has been added to the
|
""" Intercept events where a new file has been added to the
|
||||||
|
@ -63,7 +64,7 @@ class Organizer(ReportHandler,Loggable):
|
||||||
def new_dir_watch(d):
|
def new_dir_watch(d):
|
||||||
# TODO : rewrite as return lambda : dispatcher.send(...
|
# TODO : rewrite as return lambda : dispatcher.send(...
|
||||||
def cb():
|
def cb():
|
||||||
dispatcher.send(signal="add_subwatch", sender=self,
|
dispatcher.send(signal=getsig("add_subwatch"), sender=self,
|
||||||
directory=d)
|
directory=d)
|
||||||
return cb
|
return cb
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ from media.monitor.exceptions import BadSongFile
|
||||||
from media.monitor.eventcontractor import EventContractor
|
from media.monitor.eventcontractor import EventContractor
|
||||||
from media.monitor.events import EventProxy
|
from media.monitor.events import EventProxy
|
||||||
from media.monitor.request import ThreadedRequestSync, RequestSync
|
from media.monitor.request import ThreadedRequestSync, RequestSync
|
||||||
from media.saas.thread import InstanceInheritingThread
|
from media.saas.thread import InstanceInheritingThread, getsig
|
||||||
|
|
||||||
class TimeoutWatcher(InstanceInheritingThread,Loggable):
|
class TimeoutWatcher(InstanceInheritingThread,Loggable):
|
||||||
"""
|
"""
|
||||||
|
@ -52,7 +52,7 @@ class WatchSyncer(ReportHandler,Loggable):
|
||||||
tc = TimeoutWatcher(self, self.timeout)
|
tc = TimeoutWatcher(self, self.timeout)
|
||||||
tc.daemon = True
|
tc.daemon = True
|
||||||
tc.start()
|
tc.start()
|
||||||
super(WatchSyncer, self).__init__(signal=signal)
|
super(WatchSyncer, self).__init__(signal=getsig(signal))
|
||||||
|
|
||||||
def handle(self, sender, event):
|
def handle(self, sender, event):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -7,7 +7,7 @@ import media.monitor.pure as mmp
|
||||||
from media.monitor.exceptions import FailedToObtainLocale, FailedToSetLocale
|
from media.monitor.exceptions import FailedToObtainLocale, FailedToSetLocale
|
||||||
from media.monitor.log import get_logger, setup_logging
|
from media.monitor.log import get_logger, setup_logging
|
||||||
from std_err_override import LogWriter
|
from std_err_override import LogWriter
|
||||||
from media.saas.thread import InstanceThread, user, apc
|
from media.saas.thread import InstanceThread, user, apc, getsig
|
||||||
from media.monitor.log import Loggable
|
from media.monitor.log import Loggable
|
||||||
from media.monitor.exceptions import CouldNotCreateIndexFile
|
from media.monitor.exceptions import CouldNotCreateIndexFile
|
||||||
from media.monitor.toucher import ToucherThread
|
from media.monitor.toucher import ToucherThread
|
||||||
|
@ -44,7 +44,7 @@ class MM2(InstanceThread, Loggable):
|
||||||
manager = Manager()
|
manager = Manager()
|
||||||
apiclient = apc()
|
apiclient = apc()
|
||||||
config = user().mm_config
|
config = user().mm_config
|
||||||
watch_syncer = WatchSyncer(signal='watch',
|
watch_syncer = WatchSyncer(signal=getsig('watch'),
|
||||||
chunking_number=config['chunking_number'],
|
chunking_number=config['chunking_number'],
|
||||||
timeout=config['request_max_wait'])
|
timeout=config['request_max_wait'])
|
||||||
airtime_receiver = AirtimeMessageReceiver(config,manager)
|
airtime_receiver = AirtimeMessageReceiver(config,manager)
|
||||||
|
|
Loading…
Reference in New Issue