Skip to content

Commit

Permalink
kill package_mapping module
Browse files Browse the repository at this point in the history
  • Loading branch information
tobes committed Apr 26, 2012
1 parent b73e1cc commit 5ffe44b
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 61 deletions.
7 changes: 3 additions & 4 deletions ckan/model/__init__.py
Expand Up @@ -11,12 +11,11 @@
import core
import package
import tag
import package_mapping
import user
import authz
import authorization_group
import group
import group_extra
import authz
import package_extra
import resource
import tracking
Expand Down Expand Up @@ -95,6 +94,8 @@
PACKAGE_VERSION_MAX_LENGTH = package.PACKAGE_VERSION_MAX_LENGTH
package_table = package.package_table
package_revision_table = package.package_revision_table
PackageTagRevision = package.PackageTagRevision
PackageRevision = package.PackageRevision

PackageExtra = package_extra.PackageExtra
PackageExtraRevision = package_extra.PackageExtraRevision
Expand All @@ -105,7 +106,6 @@
package_relationship_table = package_relationship.package_relationship_table
package_relationship_revision_table = package_relationship.package_relationship_revision_table

PackageRevision = package_mapping.PackageRevision

Rating = rating.Rating

Expand All @@ -121,7 +121,6 @@

Tag = tag.Tag
PackageTag = tag.PackageTag
PackageTagRevision = tag.PackageTagRevision
MAX_TAG_LENGTH = tag.MAX_TAG_LENGTH
MIN_TAG_LENGTH = tag.MIN_TAG_LENGTH
tag_table = tag.tag_table
Expand Down
6 changes: 3 additions & 3 deletions ckan/model/authz.py
Expand Up @@ -7,13 +7,13 @@
from sqlalchemy import orm, types, Column, Table, ForeignKey
from pylons import config

import package as _package
import meta
import core
import domain_object
import package as _package
import group
import user as _user
import core
import authorization_group as auth_group
import domain_object
import types as _types

__all__ = ['NotRealUserException', 'Enum', 'Action', 'Role', 'RoleAction',
Expand Down
49 changes: 44 additions & 5 deletions ckan/model/package.py
Expand Up @@ -4,7 +4,7 @@
logger = logging.getLogger(__name__)

from sqlalchemy.sql import select, and_, union, or_
from sqlalchemy.orm import eagerload_all
from sqlalchemy import orm
from sqlalchemy import types, Column, Table
from pylons import config
import vdm.sqlalchemy
Expand All @@ -14,13 +14,15 @@
import license as _license
import types as _types
import domain_object
import ckan.misc
import activity
import extension

import ckan.misc
import ckan.lib.dictization

__all__ = ['Package', 'package_table', 'package_revision_table',
'PACKAGE_NAME_MAX_LENGTH', 'PACKAGE_NAME_MIN_LENGTH',
'PACKAGE_VERSION_MAX_LENGTH']
'PACKAGE_VERSION_MAX_LENGTH', 'PackageTagRevision', 'PackageRevision']

PACKAGE_NAME_MAX_LENGTH = 100
PACKAGE_NAME_MIN_LENGTH = 2
Expand Down Expand Up @@ -71,8 +73,8 @@ def search_by_name(cls, text_query):
def get(cls, reference):
'''Returns a package object referenced by its id or name.'''
query = meta.Session.query(cls).filter(cls.id==reference)
query = query.options(eagerload_all('package_tags.tag'))
query = query.options(eagerload_all('resource_groups_all.resources_all'))
query = query.options(orm.eagerload_all('package_tags.tag'))
query = query.options(orm.eagerload_all('resource_groups_all.resources_all'))
pkg = query.first()
if pkg == None:
pkg = cls.by_name(reference)
Expand Down Expand Up @@ -671,3 +673,40 @@ def activity_stream_detail(self, activity_id, activity_type):
context={'model':ckan.model})
return activity.ActivityDetail(activity_id, self.id, u"Package", activity_type,
{'package': package_dict })

# import here to prevent circular import
import tag

meta.mapper(Package, package_table, properties={
# delete-orphan on cascade does NOT work!
# Why? Answer: because of way SQLAlchemy/our code works there are points
# where PackageTag object is created *and* flushed but does not yet have
# the package_id set (this cause us other problems ...). Some time later a
# second commit happens in which the package_id is correctly set.
# However after first commit PackageTag does not have Package and
# delete-orphan kicks in to remove it!
'package_tags':orm.relation(tag.PackageTag, backref='package',
cascade='all, delete', #, delete-orphan',
),
},
order_by=package_table.c.name,
extension=[vdm.sqlalchemy.Revisioner(package_revision_table),
extension.PluginMapperExtension(),
],
)

vdm.sqlalchemy.modify_base_object_mapper(Package, core.Revision, core.State)
PackageRevision = vdm.sqlalchemy.create_object_version(meta.mapper, Package,
package_revision_table)

def related_packages(self):
return [self.continuity]

PackageRevision.related_packages = related_packages


vdm.sqlalchemy.modify_base_object_mapper(tag.PackageTag, core.Revision, core.State)
PackageTagRevision = vdm.sqlalchemy.create_object_version(meta.mapper, tag.PackageTag,
tag.package_tag_revision_table)

PackageTagRevision.related_packages = lambda self: [self.continuity.package]
39 changes: 0 additions & 39 deletions ckan/model/package_mapping.py

This file was deleted.

10 changes: 0 additions & 10 deletions ckan/model/tag.py
Expand Up @@ -278,13 +278,3 @@ def related_packages(self):
_extension.PluginMapperExtension(),
],
)

# FIXME This is very wrong
# It is part of the circular import crazy
import package_mapping

vdm.sqlalchemy.modify_base_object_mapper(PackageTag, core.Revision, core.State)
PackageTagRevision = vdm.sqlalchemy.create_object_version(meta.mapper, PackageTag,
package_tag_revision_table)

PackageTagRevision.related_packages = lambda self: [self.continuity.package]

0 comments on commit 5ffe44b

Please sign in to comment.