Skip to content

Commit

Permalink
more cleans for model/modification
Browse files Browse the repository at this point in the history
  • Loading branch information
tobes committed Mar 29, 2012
1 parent 323049f commit 8406f4e
Showing 1 changed file with 18 additions and 27 deletions.
45 changes: 18 additions & 27 deletions ckan/model/modification.py
@@ -1,33 +1,24 @@
import logging

from vdm.sqlalchemy import State
import ckan.plugins as plugins
import extension
import domain_object

from sqlalchemy.orm import object_session
from sqlalchemy.orm.interfaces import EXT_CONTINUE

from ckan.plugins import SingletonPlugin, PluginImplementations, implements
from ckan.plugins import ISession, IDomainObjectModification, IResourceUrlChange

from ckan.model.extension import ObserverNotifier
from ckan.model.domain_object import DomainObjectOperation

from ckan.model.package import Package
from ckan.model.resource import ResourceGroup, Resource
from ckan.model.package_extra import PackageExtra
from ckan.model.tag import PackageTag
import package as _package
import resource

log = logging.getLogger(__name__)

class DomainObjectModificationExtension(SingletonPlugin, ObserverNotifier):
class DomainObjectModificationExtension(plugins.SingletonPlugin, extension.ObserverNotifier):
"""
A domain object level interface to change notifications
Triggered by all edits to table and related tables, which we filter
out with check_real_change.
"""

implements(ISession, inherit=True)
observers = PluginImplementations(IDomainObjectModification)
plugins.implements(plugins.ISession, inherit=True)
observers = plugins.PluginImplementations(plugins.IDomainObjectModification)

def before_commit(self, session):

Expand All @@ -41,22 +32,22 @@ def before_commit(self, session):
deleted = obj_cache['deleted']

for obj in set(new):
if isinstance(obj, (Package, Resource)):
self.notify(obj, DomainObjectOperation.new)
if isinstance(obj, (_package.Package, resource.Resource)):
self.notify(obj, domain_object.DomainObjectOperation.new)
for obj in set(deleted):
if isinstance(obj, (Package, Resource)):
self.notify(obj, DomainObjectOperation.deleted)
if isinstance(obj, (_package.Package, resource.Resource)):
self.notify(obj, domain_object.DomainObjectOperation.deleted)
for obj in set(changed):
if isinstance(obj, Resource):
self.notify(obj, DomainObjectOperation.changed)
if isinstance(obj, resource.Resource):
self.notify(obj, domain_object.DomainObjectOperation.changed)
if getattr(obj, 'url_changed', False):
for item in PluginImplementations(IResourceUrlChange):
for item in plugins.PluginImplementations(plugins.IResourceUrlChange):
item.notify(obj)

changed_pkgs = set(obj for obj in changed if isinstance(obj, Package))
changed_pkgs = set(obj for obj in changed if isinstance(obj, _package.Package))

for obj in new | changed | deleted:
if not isinstance(obj, Package):
if not isinstance(obj, _package.Package):
try:
related_packages = obj.related_packages()
except AttributeError:
Expand All @@ -67,7 +58,7 @@ def before_commit(self, session):
if package and package not in deleted | new:
changed_pkgs.add(package)
for obj in changed_pkgs:
self.notify(obj, DomainObjectOperation.changed)
self.notify(obj, domain_object.DomainObjectOperation.changed)


def notify(self, entity, operation):
Expand Down

0 comments on commit 8406f4e

Please sign in to comment.