Ejemplo n.º 1
0
        # 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,
Ejemplo n.º 2
0
        Returns a list of the dataset's extras, as PackageExtra object
        NB includes deleted ones too (state='deleted')
        '''
        from package_extra import PackageExtra
        return meta.Session.query(PackageExtra) \
            .filter_by(package_id=self.id) \
            .all()


class RatingValueException(Exception):
    pass

# 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=[extension.PluginMapperExtension()],
    )