Created
November 4, 2011 10:41
-
-
Save kindly/1339075 to your computer and use it in GitHub Desktop.
start of activity for ckan.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from sqlalchemy.orm.session import SessionExtension | |
| class DatasetActivitySessionExtension(SessionExtension): | |
| def before_commit(self, session): | |
| session.flush() | |
| try: | |
| obj_cache = session._object_cache | |
| revision = session.revision | |
| except AttributeError: | |
| return | |
| new = obj_cache['new'] | |
| changed = obj_cache['changed'] | |
| deleted = obj_cache['deleted'] | |
| activity_detail = {} | |
| activity = {} | |
| ## new packages first to exclude them from changed pacakges | |
| for obj in new: | |
| if isinstance(obj, Package): | |
| activity[obj.id] = dataset_new_activity(obj) | |
| activity_detail.setdefault(obj.id, []).append( | |
| dataset_new_activity_detail(obj) | |
| ) | |
| for obj in new: | |
| if isinstance(obj, Package): | |
| continue | |
| try: | |
| related_datasets = obj.related_packages() | |
| except AttributeError: | |
| continue | |
| for dataset in related_datasets: | |
| if not dataset.id in activity: | |
| activity[dataset.id] = dataset_change_activity(dataset) | |
| activity_detail.setdefault(dataset.id, []).append( | |
| obj_new_activity_detail(obj) | |
| ) | |
| for obj in changed: | |
| try: | |
| related_datasets = obj.related_packages() | |
| except AttributeError: | |
| continue | |
| for dataset in related_datasets: | |
| if not dataset.id in activity: | |
| activity[dataset.id] = dataset_change_activity(dataset) | |
| activity_detail.setdefault(dataset.id, []).append( | |
| obj_changed_activity_detail(obj) | |
| ) | |
| for obj in deleted: | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from sqlalchemy.util import OrderedDict | |
| from sqlalchemy.ext.orderinglist import ordering_list | |
| from sqlalchemy import orm | |
| from pylons import config | |
| import vdm.sqlalchemy | |
| from meta import * | |
| from types import make_uuid, JsonDictType | |
| from core import * | |
| from package import * | |
| from ckan.model import extension | |
| __all__ = ['Activity', 'activity_table', | |
| 'ActivityDetail', 'activity_detail_table', | |
| ] | |
| ##formally package_resource | |
| activity_table = Table( | |
| 'activity', metadata, | |
| Column('id', types.UnicodeText, primary_key=True, default=make_uuid), | |
| Column('timestamp', types.DateTime), | |
| Column('user_id', types.UnicodeText), | |
| Column('object_id', types.UnicodeText), | |
| Column('revision_id', types.UnicodeText), | |
| Column('activity_type', types.UnicodeText), | |
| Column('data', types.UnicodeText), | |
| ) | |
| activity_detail_table = Table( | |
| 'activity_detail', metadata, | |
| Column('id', types.UnicodeText, primary_key=True, default=make_uuid), | |
| Column('activity_id', types.UnicodeText, ForeignKey('activity.id')), | |
| Column('object_id', types.UnicodeText), | |
| Column('object_type', types.UnicodeText), | |
| Column('activity_type', types.UnicodeText), | |
| Column('data', types.UnicodeText), | |
| ) | |
| class Activity: | |
| pass | |
| class ActivityDetail: | |
| pass | |
| mapper(Activity, activity_table) | |
| mapper(ActivityDetail, activity_detail_table, properties={ | |
| 'activity':orm.relation(Activity, | |
| backref=orm.backref('activity_detail') | |
| ) | |
| ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment