Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-10-16 11:32:53 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-10-16 11:32:53 (GMT)
commite425c1d886450f8d34ed8301de26ab4ea5de70ca (patch)
tree10a65d1aea33f85d35068e26d71a168cc176527d
parent8b115859504deabd446b0dda5d63ff4f91fbabfe (diff)
Fallback to mime parents if the main one doesn't have matches
-rw-r--r--lib/sugar/datastore/datastore.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/sugar/datastore/datastore.py b/lib/sugar/datastore/datastore.py
index a865c30..6f1e146 100644
--- a/lib/sugar/datastore/datastore.py
+++ b/lib/sugar/datastore/datastore.py
@@ -117,20 +117,28 @@ class DSObject(object):
file_path = property(get_file_path, set_file_path)
+ def _get_activities_for_mime(self, mime_type):
+ registry = activity.get_registry()
+ result = registry.get_activities_for_type(mime_type)
+ if not result:
+ for parent_mime in mime.get_mime_parents(mime_type):
+ result.extend(registry.get_activities_for_type(parent_type))
+
def get_activities(self):
activities = []
- if self.metadata['activity']:
- activity_info = activity.get_registry().get_activity(self.metadata['activity'])
+ bundle_id = self.metadata['activity']
+ if bundle_id:
+ activity_info = activity.get_registry().get_activity(bundle_id)
if activity_info:
activities.append(activity_info)
mime_type = self.metadata['mime_type']
if mime_type:
- activities_info = activity.get_registry().get_activities_for_type(mime_type)
- for activity_info in activities_info:
- if activity_info.bundle_id != self.metadata['activity']:
- activities.append(activity_info)
+ activities_info = self._get_activities_for_mime(mime_type)
+ for info in activities_info:
+ if activity_info.bundle_id != bundle_id:
+ activities.append(info)
return activities