Skip to content

Commit

Permalink
[#1081] Pep8 model.resource
Browse files Browse the repository at this point in the history
  • Loading branch information
tobes committed Jul 3, 2013
1 parent c972c1c commit eb72f9f
Showing 1 changed file with 54 additions and 39 deletions.
93 changes: 54 additions & 39 deletions ckan/model/resource.py
Expand Up @@ -30,12 +30,13 @@
'cache_last_updated', 'webstore_url',
'webstore_last_updated']


##formally package_resource
resource_table = Table(
'resource', meta.metadata,
Column('id', types.UnicodeText, primary_key=True, default=_types.make_uuid),
Column('resource_group_id', types.UnicodeText, ForeignKey('resource_group.id')),
Column('id', types.UnicodeText, primary_key=True,
default=_types.make_uuid),
Column('resource_group_id', types.UnicodeText,
ForeignKey('resource_group.id')),
Column('url', types.UnicodeText, nullable=False),
Column('format', types.UnicodeText),
Column('description', types.UnicodeText),
Expand All @@ -55,27 +56,31 @@
Column('webstore_last_updated', types.DateTime),

Column('extras', _types.JsonDictType),
)
)

resource_group_table = Table(
'resource_group', meta.metadata,
Column('id', types.UnicodeText, primary_key=True, default=_types.make_uuid),
Column('id', types.UnicodeText, primary_key=True,
default=_types.make_uuid),
Column('package_id', types.UnicodeText, ForeignKey('package.id')),
Column('label', types.UnicodeText),
Column('sort_order', types.UnicodeText),
Column('extras', _types.JsonDictType),
)
)

vdm.sqlalchemy.make_table_stateful(resource_table)
resource_revision_table = core.make_revisioned_table(resource_table)

vdm.sqlalchemy.make_table_stateful(resource_group_table)
resource_group_revision_table = core.make_revisioned_table(resource_group_table)
resource_group_revision_table = core.make_revisioned_table(
resource_group_table)


class Resource(vdm.sqlalchemy.RevisionedObjectMixin,
vdm.sqlalchemy.StatefulObjectMixin,
domain_object.DomainObject):
extra_columns = None

def __init__(self, resource_group_id=None, url=u'',
format=u'', description=u'', hash=u'',
extras=None,
Expand Down Expand Up @@ -125,7 +130,7 @@ def as_dict(self, core_columns_only=False):
def get_package_id(self):
'''Returns the package id for a resource. '''
query = meta.Session.query(ResourceGroupRevision) \
.filter(and_(ResourceGroupRevision.id==self.resource_group_id,
.filter(and_(ResourceGroupRevision.id == self.resource_group_id,
ResourceGroupRevision.state == u'active',
ResourceGroupRevision.current == True))
resource_group = query.first()
Expand All @@ -136,9 +141,9 @@ def get_package_id(self):
@classmethod
def get(cls, reference):
'''Returns a resource object referenced by its name or id.'''
query = meta.Session.query(Resource).filter(Resource.id==reference)
query = meta.Session.query(Resource).filter(Resource.id == reference)
resource = query.first()
if resource == None:
if resource is None:
resource = cls.by_name(reference)
return resource

Expand All @@ -153,7 +158,8 @@ def get_columns(cls, extra_columns=True):
@classmethod
def get_extra_columns(cls):
if cls.extra_columns is None:
cls.extra_columns = config.get('ckan.extra_resource_fields', '').split()
cls.extra_columns = config.get(
'ckan.extra_resource_fields', '').split()
for field in cls.extra_columns:
setattr(cls, field, DictProxy(field, 'extras'))
return cls.extra_columns
Expand All @@ -172,14 +178,17 @@ def activity_stream_detail(self, activity_id, activity_type):
activity_type = 'deleted'

res_dict = ckan.lib.dictization.table_dictize(self,
context={'model':model})
return activity.ActivityDetail(activity_id, self.id, u"Resource", activity_type,
{'resource': res_dict})
context={'model': model})
return activity.ActivityDetail(activity_id, self.id, u"Resource",
activity_type,
{'resource': res_dict})


class ResourceGroup(vdm.sqlalchemy.RevisionedObjectMixin,
vdm.sqlalchemy.StatefulObjectMixin,
domain_object.DomainObject):
vdm.sqlalchemy.StatefulObjectMixin,
domain_object.DomainObject):
extra_columns = None

def __init__(self, package_id=None, sort_order=u'', label=u'',
extras=None, **kwargs):
if package_id:
Expand Down Expand Up @@ -218,45 +227,46 @@ def get_columns(cls, extra_columns=True):
@classmethod
def get_extra_columns(cls):
if cls.extra_columns is None:
cls.extra_columns = config.get('ckan.extra_resource_group_fields', '').split()
cls.extra_columns = config.get(
'ckan.extra_resource_group_fields', '').split()
for field in cls.extra_columns:
setattr(cls, field, DictProxy(field, 'extras'))
return cls.extra_columns


## Mappers
## Mappers

meta.mapper(Resource, resource_table, properties={
'resource_group':orm.relation(ResourceGroup,
'resource_group': orm.relation(
ResourceGroup,
# all resources including deleted
# formally package_resources_all
backref=orm.backref('resources_all',
collection_class=ordering_list('position'),
cascade='all, delete',
order_by=resource_table.c.position,
),
)
},
order_by=[resource_table.c.resource_group_id],
extension=[vdm.sqlalchemy.Revisioner(resource_revision_table),
extension.PluginMapperExtension(),
],
)
},
order_by=[resource_table.c.resource_group_id],
extension=[vdm.sqlalchemy.Revisioner(resource_revision_table),
extension.PluginMapperExtension(),
],
)


meta.mapper(ResourceGroup, resource_group_table, properties={
'package':orm.relation(_package.Package,
'package': orm.relation(
_package.Package,
# all resources including deleted
backref=orm.backref('resource_groups_all',
cascade='all, delete, delete-orphan',
order_by=resource_group_table.c.sort_order,
),
)
},
order_by=[resource_group_table.c.package_id],
extension=[vdm.sqlalchemy.Revisioner(resource_group_revision_table),
extension.PluginMapperExtension(),
],
)
},
order_by=[resource_group_table.c.package_id],
extension=[vdm.sqlalchemy.Revisioner(resource_group_revision_table),
extension.PluginMapperExtension(),
],
)

## VDM
Expand All @@ -265,16 +275,23 @@ def get_extra_columns(cls):
ResourceRevision = vdm.sqlalchemy.create_object_version(
meta.mapper, Resource, resource_revision_table)

vdm.sqlalchemy.modify_base_object_mapper(ResourceGroup, core.Revision, core.State)
vdm.sqlalchemy.modify_base_object_mapper(ResourceGroup, core.Revision,
core.State)
ResourceGroupRevision = vdm.sqlalchemy.create_object_version(
meta.mapper, ResourceGroup, resource_group_revision_table)

ResourceGroupRevision.related_packages = lambda self: [self.continuity.package]
ResourceRevision.related_packages = lambda self: [self.continuity.resouce_group.package]
ResourceGroupRevision.related_packages = lambda self: [
self.continuity.package
]
ResourceRevision.related_packages = lambda self: [
self.continuity.resouce_group.package
]


def resource_identifier(obj):
return obj.id


class DictProxy(object):

def __init__(self, target_key, target_dict, data_type=unicode):
Expand Down Expand Up @@ -304,5 +321,3 @@ def __delete__(self, obj):

proxied_dict = getattr(obj, self.target_dict)
proxied_dict.pop(self.target_key)


0 comments on commit eb72f9f

Please sign in to comment.