def _perm_check(activity): """Return True if c.user has 'read' access to this activity, otherwise return False. """ extras_dict = activity['obj'].get('activity_extras') if not extras_dict: return True allura_id = extras_dict.get('allura_id') if not allura_id: return True classname, _id = allura_id.split(':') cls = Mapper.by_classname(classname).mapped_class try: _id = bson.ObjectId(_id) except bson.errors.InvalidId: pass obj = cls.query.get(_id=_id) return obj and obj.has_activity_access('read', user)
def get_activity_object(activity_object_dict): """Given a BSON-serialized activity object (e.g. activity.obj dict in a timeline), return the corresponding :class:`ActivityObject`. """ extras_dict = activity_object_dict.activity_extras if not extras_dict: return None allura_id = extras_dict.get('allura_id') if not allura_id: return None classname, _id = allura_id.split(':', 1) cls = Mapper.by_classname(classname).mapped_class try: _id = bson.ObjectId(_id) except bson.errors.InvalidId: pass return cls.query.get(_id=_id)