cc-4105: major code reformatting effort

This commit is contained in:
Rudi Grinberg 2012-08-13 17:31:54 -04:00
parent 5d33ca7c6f
commit 3af6036d9e
4 changed files with 44 additions and 59 deletions

View file

@ -181,6 +181,11 @@ class AirtimeMessageReceiver(Loggable):
try:
self.logger.info("Attempting to delete '%s'" %
msg['filepath'])
# We use FileMediator to ignore any paths with
# msg['filepath'] so that we do not send a duplicate delete
# request that we'd normally get form pyinotify. But right
# now event contractor would take care of this sort of
# thing anyway so this might not be necessary after all
FileMediator.ignore(msg['filepath'])
os.unlink(msg['filepath'])
if not os.path.exists(msg['filepath']):
@ -189,11 +194,11 @@ class AirtimeMessageReceiver(Loggable):
except Exception as e:
self.logger.info("Failed to delete '%s'" % msg['filepath'])
self.logger.info("Error: " % str(e))
else:
else: # validation for filepath existence failed
self.logger.info("Attempting to delete file '%s' that does not \
exist. Full request coming:" % msg['filepath'])
self.logger.info(msg)
else:
else: # we did not get the special 'delete' tag. no deleting
self.logger.info("No clippy confirmation, ignoring event. \
Out of curiousity we will print some details.")
self.logger.info(msg)

View file

@ -97,9 +97,9 @@ class BaseEvent(Loggable):
self.logger.info("Morphing %s into %s" % ( str(self), str(evt) ) )
self._raw_event = evt
self.path = evt.path
self.add_safe_pack_hook(evt._pack_hook)
self.__class__ = evt.__class__
evt._morph_target = True
self.add_safe_pack_hook(evt._pack_hook)
return self
class FakePyinotify(object):

View file

@ -36,13 +36,12 @@ from media.monitor.log import Loggable, get_logger
# OrganizeListener('watch_signal') <= wrong
# OrganizeListener(signal='watch_signal') <= right
# TODO : remove this FileMediator stuff it's not used anywhere and it's too
# complicated
class FileMediator(object):
"""
FileMediator is used an intermediate mechanism that filters out certain
events.
"""
ignored_set = set([]) # for paths only
# TODO : unify ignored and skipped.
# for "special" conditions. could be generalized but too lazy now.
skip_checks = set([])
logger = get_logger()
@staticmethod
@ -51,31 +50,10 @@ class FileMediator(object):
def ignore(path): FileMediator.ignored_set.add(path)
@staticmethod
def unignore(path): FileMediator.ignored_set.remove(path)
@staticmethod
def skip_next(*what_to_skip,**kwargs):
# Poor man's default arguments
if 'key' not in kwargs: kwargs['key'] = 'maskname'
for skip in what_to_skip:
# standard nasty hack, too long to explain completely in comments
# but the gist of it is:
# 1. python's scoping rules are sometimes strange.
# 2. workaround is very similar to what you do in javascript when
# you write stuff like (function (x,y) { console.log(x+y); })(2,4)
# to be avoid clobbering peoples' namespace.
skip_check = (lambda skip:
lambda v: getattr(v,kwargs['key']) == skip)(skip)
FileMediator.skip_checks.add( skip_check )
def mediate_ignored(fn):
def wrapped(self, event, *args,**kwargs):
event.pathname = unicode(event.pathname, "utf-8")
skip_events = [s_check for s_check in FileMediator.skip_checks
if s_check(event)]
for s_check in skip_events:
FileMediator.skip_checks.remove( s_check )
# Only process skip_checks one at a time
FileMediator.logger.info("Skip checked: '%s'" % str(event))
return
if FileMediator.is_ignored(event.pathname):
FileMediator.logger.info("Ignoring: '%s' (once)" % event.pathname)
FileMediator.unignore(event.pathname)

View file

@ -8,14 +8,16 @@ from media.monitor.log import get_logger, setup_logging
from media.monitor.config import MMConfig
from media.monitor.toucher import ToucherThread
from media.monitor.syncdb import AirtimeDB
from media.monitor.exceptions import FailedToObtainLocale, FailedToSetLocale, \
from media.monitor.exceptions import FailedToObtainLocale, \
FailedToSetLocale, \
NoConfigFile
from media.monitor.airtime import AirtimeNotifier, AirtimeMessageReceiver
from media.monitor.airtime import AirtimeNotifier, \
AirtimeMessageReceiver
from media.monitor.watchersyncer import WatchSyncer
from media.monitor.eventdrainer import EventDrainer
from media.update.replaygainupdater import ReplayGainUpdater
import media.monitor.pure as mmp
import media.monitor.pure as mmp
from api_clients import api_client as apc