1 import logging
2 log = logging.getLogger("dataproviders.SimpleFactory")
3
4 import conduit
5 import conduit.dataproviders.SimpleFactory as SimpleFactory
6 import conduit.utils as Utils
7 import conduit.Vfs as Vfs
8
9 import dbus
10
12 """
13 Generic factory for dataproviders that are removable file system based
14 """
15
28
30 log.info("Volume mounted, udi: %s" % device_udi)
31 if device_udi :
32 props = self._get_properties(device_udi)
33 if self.is_interesting(device_udi, props):
34 mount, label = self._get_device_info(props)
35 kwargs = { "mount": mount, "label": label }
36 self.item_added(device_udi, **kwargs)
37 return True
38
45
47 try:
48 device_dbus_obj = self.bus.get_object("org.freedesktop.Hal" ,device_udi)
49 return device_dbus_obj.GetAllProperties(dbus_interface="org.freedesktop.Hal.Device")
50 except:
51 return {}
52
54 """
55 Returns the mount point and label in a 2-tuple
56 """
57 if properties.has_key("volume.mount_point"):
58 mount = str(properties["volume.mount_point"])
59 else:
60 mount = ""
61 if properties.has_key("volume.label"):
62 label = str(properties["volume.label"])
63 else:
64 label = ""
65
66 return (mount, label)
67
69 """
70 Called after VolumeFactory is initialised to detect already connected volumes
71 """
72 for device_udi in self.vol_monitor.get_mounted_volumes():
73 if device_udi != None:
74 props = self._get_properties(device_udi)
75 if self.is_interesting(device_udi, props):
76 mount, label = self._get_device_info(props)
77 kwargs = { "mount": mount, "label": label }
78 self.item_added(device_udi, **kwargs)
79
81 """ VolumeFactory passes mount point and udi to dataproviders """
82 return (kwargs['mount'], udi,)
83