Skip to content

Commit

Permalink
domain_object fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
tobes committed Mar 28, 2012
1 parent a89bba5 commit 204d807
Show file tree
Hide file tree
Showing 14 changed files with 42 additions and 34 deletions.
3 changes: 2 additions & 1 deletion ckan/lib/search/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from ckan.model import DomainObjectOperation
from ckan.plugins import SingletonPlugin, implements, IDomainObjectModification
from ckan.logic import get_action
import ckan.model.domain_object

from common import (SearchIndexError, SearchError, SearchQueryError,
make_connection, is_available, SolrSettings)
Expand Down Expand Up @@ -58,7 +59,7 @@ def text_traceback():
_QUERIES['package'] = sql.PackageSearchQuery

def _normalize_type(_type):
if isinstance(_type, model.DomainObject):
if isinstance(_type, ckan.model.domain_object.DomainObject):
_type = _type.__class__
if isinstance(_type, type):
_type = _type.__name__
Expand Down
6 changes: 3 additions & 3 deletions ckan/model/authorization_group.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import datetime

from meta import *
from core import DomainObject
from user import User, user_table
from types import make_uuid
import domain_object

authorization_group_table = Table('authorization_group', metadata,
Column('id', UnicodeText, primary_key=True, default=make_uuid),
Expand All @@ -19,7 +19,7 @@
)


class AuthorizationGroup(DomainObject):
class AuthorizationGroup(domain_object.DomainObject):

@classmethod
def search(cls, querystr, sqlalchemy_query=None):
Expand All @@ -42,7 +42,7 @@ def get(cls, auth_group_reference):
cls.id==auth_group_reference))
return query.first()

class AuthorizationGroupUser(DomainObject):
class AuthorizationGroupUser(domain_object.DomainObject):
pass

def user_in_authorization_group(user, authorization_group):
Expand Down
7 changes: 4 additions & 3 deletions ckan/model/authz.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from user import User
from core import System
from authorization_group import AuthorizationGroup, authorization_group_table
import domain_object

PSEUDO_USER__LOGGED_IN = u'logged_in'
PSEUDO_USER__VISITOR = u'visitor'
Expand Down Expand Up @@ -121,7 +122,7 @@ class Role(Enum):
)


class RoleAction(DomainObject):
class RoleAction(domain_object.DomainObject):
def __repr__(self):
return '<%s role="%s" action="%s" context="%s">' % \
(self.__class__.__name__, self.role, self.action, self.context)
Expand All @@ -130,7 +131,7 @@ def __repr__(self):
# dictionary mapping protected objects (e.g. Package) to related ObjectRole
protected_objects = {}

class UserObjectRole(DomainObject):
class UserObjectRole(domain_object.DomainObject):
name = None
protected_object = None

Expand Down Expand Up @@ -439,7 +440,7 @@ def setup_default_user_roles(domain_object, admins=[]):
admins)

def clear_user_roles(domain_object):
assert isinstance(domain_object, DomainObject)
assert isinstance(domain_object, domain_object.DomainObject)
if isinstance(domain_object, Package):
q = Session.query(PackageRole).filter_by(package=domain_object)
elif isinstance(domain_object, Group):
Expand Down
6 changes: 3 additions & 3 deletions ckan/model/core.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import datetime
from meta import metadata, mapper
from sqlalchemy import Column, DateTime, Text, Boolean
import vdm.sqlalchemy

from domain_object import DomainObject
import domain_object

## VDM-specific tables
revision_table = vdm.sqlalchemy.make_revision_table(metadata)
revision_table.append_column(Column('approved_timestamp', DateTime))

class System(DomainObject):
class System(domain_object.DomainObject):

name = 'system'

Expand All @@ -29,7 +30,6 @@ def by_name(cls, name):


def make_revisioned_table(table):
import datetime
revision_table = vdm.sqlalchemy.make_revisioned_table(table)
revision_table.append_column(Column('expired_id',
Text))
Expand Down
8 changes: 4 additions & 4 deletions ckan/model/domain_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from sqlalchemy import orm
from sqlalchemy.util import OrderedDict

from meta import Session
import meta

class Enum(set):
'''Simple enumeration
Expand All @@ -24,7 +24,7 @@ def __getattr__(self, name):
class DomainObject(object):

text_search_fields = []
Session = Session
Session = meta.Session

def __init__(self, **kwargs):
for k,v in kwargs.items():
Expand All @@ -36,7 +36,7 @@ def count(cls):

@classmethod
def by_name(cls, name, autoflush=True):
obj = Session.query(cls).autoflush(autoflush)\
obj = meta.Session.query(cls).autoflush(autoflush)\
.filter_by(name=name).first()
return obj

Expand All @@ -53,7 +53,7 @@ def text_search(cls, query, term):
@classmethod
def active(cls):
from core import State
return Session.query(cls).filter_by(state=State.ACTIVE)
return meta.Session.query(cls).filter_by(state=State.ACTIVE)

def save(self):
self.add()
Expand Down
3 changes: 2 additions & 1 deletion ckan/model/group_extra.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from package import *
from group import *
from types import JsonType
import domain_object


__all__ = ['GroupExtra', 'group_extra_table', 'GroupExtraRevision']
Expand All @@ -23,7 +24,7 @@

class GroupExtra(vdm.sqlalchemy.RevisionedObjectMixin,
vdm.sqlalchemy.StatefulObjectMixin,
DomainObject):
domain_object.DomainObject):
pass

mapper(GroupExtra, group_extra_table, properties={
Expand Down
3 changes: 2 additions & 1 deletion ckan/model/package_extra.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from package import *
from types import JsonType
from ckan.model import extension
import domain_object

__all__ = ['PackageExtra', 'package_extra_table', 'PackageExtraRevision',
'extra_revision_table']
Expand All @@ -23,7 +24,7 @@

class PackageExtra(vdm.sqlalchemy.RevisionedObjectMixin,
vdm.sqlalchemy.StatefulObjectMixin,
DomainObject):
domain_object.DomainObject):

def related_packages(self):
return [self.package]
Expand Down
3 changes: 2 additions & 1 deletion ckan/model/package_relationship.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from core import *
from package import *
from types import make_uuid
import domain_object

# i18n only works when this is run as part of pylons,
# which isn't the case for paster commands.
Expand All @@ -28,7 +29,7 @@ def _(txt):

class PackageRelationship(vdm.sqlalchemy.RevisionedObjectMixin,
vdm.sqlalchemy.StatefulObjectMixin,
DomainObject):
domain_object.DomainObject):
'''The rule with PackageRelationships is that they are stored in the model
always as the "forward" relationship - i.e. "child_of" but never
as "parent_of". However, the model functions provide the relationships
Expand Down
3 changes: 2 additions & 1 deletion ckan/model/rating.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from package import *
from types import make_uuid
from user import User
import domain_object

__all__ = ['Rating']

Expand All @@ -17,7 +18,7 @@
Column('created', DateTime, default=datetime.datetime.now),
)

class Rating(DomainObject):
class Rating(domain_object.DomainObject):
pass

mapper(Rating, rating_table,
Expand Down
5 changes: 3 additions & 2 deletions ckan/model/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from package import *
from ckan.model import extension
from ckan.model.activity import ActivityDetail
import domain_object

__all__ = ['Resource', 'resource_table',
'ResourceGroup', 'resource_group_table',
Expand Down Expand Up @@ -66,7 +67,7 @@

class Resource(vdm.sqlalchemy.RevisionedObjectMixin,
vdm.sqlalchemy.StatefulObjectMixin,
DomainObject):
domain_object.DomainObject):
extra_columns = None
def __init__(self, resource_group_id=None, url=u'',
format=u'', description=u'', hash=u'',
Expand Down Expand Up @@ -158,7 +159,7 @@ def activity_stream_detail(self, activity_id, activity_type):

class ResourceGroup(vdm.sqlalchemy.RevisionedObjectMixin,
vdm.sqlalchemy.StatefulObjectMixin,
DomainObject):
domain_object.DomainObject):
extra_columns = None
def __init__(self, package_id=None, sort_order=u'', label=u'',
extras=None, **kwargs):
Expand Down
3 changes: 2 additions & 1 deletion ckan/model/task_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from core import *
from types import make_uuid
from datetime import datetime
import domain_object

__all__ = ['TaskStatus', 'task_status_table']

Expand All @@ -19,7 +20,7 @@
sa.UniqueConstraint('entity_id', 'task_type', 'key')
)

class TaskStatus(DomainObject):
class TaskStatus(domain_object.DomainObject):
@classmethod
def get(cls, reference):
'''Returns a task status object referenced by its id.'''
Expand Down
17 changes: 8 additions & 9 deletions ckan/model/types.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
## IMPORTS FIXED
import datetime
import copy
import uuid

from sqlalchemy import types

from pylons import config

from ckan.model import meta
import meta
import ckan.lib.helpers as h

def make_uuid():
return unicode(uuid.uuid4())

import uuid
class UuidType(types.TypeDecorator):
impl = types.Unicode

Expand All @@ -30,7 +30,6 @@ def default(cls):
return unicode(uuid.uuid4())


from ckan.lib.helpers import json
class JsonType(types.TypeDecorator):
'''Store data as JSON serializing on save and unserializing on use.
Expand All @@ -45,17 +44,17 @@ def process_bind_param(self, value, engine):
return None
else:
# ensure_ascii=False => allow unicode but still need to convert
return unicode(json.dumps(value, ensure_ascii=False))
return unicode(h.json.dumps(value, ensure_ascii=False))

def process_result_value(self, value, engine):
if value is None:
return {}
else:
return json.loads(value)
return h.json.loads(value)

def copy(self):
return JsonType(self.impl.length)

def is_mutable(self):
return True

Expand All @@ -73,7 +72,7 @@ def process_bind_param(self, value, engine):
if isinstance(value, basestring):
return unicode(value)
else:
return unicode(json.dumps(value, ensure_ascii=False))
return unicode(h.json.dumps(value, ensure_ascii=False))

def copy(self):
return JsonDictType(self.impl.length)
Expand Down
4 changes: 2 additions & 2 deletions ckan/model/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from sqlalchemy.orm import synonym

from meta import *
from core import DomainObject
from types import make_uuid
import domain_object

user_table = Table('user', metadata,
Column('id', UnicodeText, primary_key=True, default=make_uuid),
Expand All @@ -22,7 +22,7 @@
Column('about', UnicodeText),
)

class User(DomainObject):
class User(domain_object.DomainObject):

VALID_NAME = re.compile(r"^[a-zA-Z0-9_\-]{3,255}$")
DOUBLE_SLASH = re.compile(':\/([^/])')
Expand Down
5 changes: 3 additions & 2 deletions ckan/model/vocabulary.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from meta import Table, types, Session
from core import metadata, Column, DomainObject, mapper
from core import metadata, Column, mapper
from types import make_uuid
import tag
import domain_object

VOCABULARY_NAME_MIN_LENGTH = 2
VOCABULARY_NAME_MAX_LENGTH = 100
Expand All @@ -13,7 +14,7 @@
unique=True),
)

class Vocabulary(DomainObject):
class Vocabulary(domain_object.DomainObject):

def __init__(self, name):
self.id = make_uuid()
Expand Down

0 comments on commit 204d807

Please sign in to comment.