#!/usr/bin/python2
import dbus
import os
from subprocess import Popen, PIPE

#DeviceIsMounted
#DeviceIsPartitionTable
#DriveVendor
#DeviceFile
#IdLabel
#IdVersion
#DriveSerial
#DeviceSize
#DriveModel
#DriveConnectionInterface
#PartitionType
#PartitionSize


bus = dbus.SystemBus()
proxy = bus.get_object("org.freedesktop.UDisks", "/org/freedesktop/UDisks")
iface = dbus.Interface(proxy, "org.freedesktop.UDisks")
devs = iface.EnumerateDevices()
for dev in devs:
    dev_obj = bus.get_object("org.freedesktop.UDisks", dev)
    dev = dbus.Interface(dev_obj, "org.freedesktop.DBus.Properties")

    #if str(dev.Get('', 'DriveConnectionInterface')) == 'usb' and not str(dev.Get('', 'PartitionType')) and str(dev.Get('', 'DeviceIsMediaAvailable')) == '1':
    if str(dev.Get('', 'DeviceIsMediaAvailable')) == '1' or str(dev.Get('', 'DeviceIsMediaAvailable')) == '0'  :
	mounted = str(dev.Get('', 'DeviceIsMounted'))
	partition = str(dev.Get('', 'DeviceIsPartitionTable'))
	idlabel = str(dev.Get('', 'IdLabel'))
	idversion = str(dev.Get('', 'IdVersion'))
	driveserial = str(dev.Get('', 'DriveSerial'))
	driveconnection = str(dev.Get('', 'DriveConnectionInterface'))
	partitiontype = str(dev.Get('', 'PartitionType'))
	devicefile=str(dev.Get('', 'DeviceFile'))

        path = str(dev.Get('', 'DeviceFile'))
        vend = str(dev.Get('', 'DriveVendor'))
        model = str(dev.Get('', 'DriveModel'))
        size = dev.Get('', 'PartitionSize')
        SYMBOLS = (' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB')
        PREFIX = {}

        for i, s in enumerate(SYMBOLS):
            PREFIX[s] = 1 << (i + 1) * 10

        def convert_bytes(n):
            for s in reversed(SYMBOLS):
                if n >= PREFIX[s]:
                    value = float(n) / PREFIX[s]
                    return '%.1f%s' % (value, s)
            return '%.1fB' % n

        size2 = convert_bytes(size)

	(stdout, stderr) = Popen(["encuentra-fabricante-pendrive",devicefile], stdout=PIPE).communicate()
        #print vend + ' ' + size2 + ', ' + path
        print model +' '+vend + ','+' ,'+stdout +' ,' + path + ' ,' + size2 +' ,mounted:'+mounted+' ,partition:'+partition+' ,idlabel:'+idlabel+' ,idversion:'+idversion+' ,driveserial:'+driveserial+' ,driveconnection:'+driveconnection+' ,partitiontype:'+partitiontype
        #print vend + ' ' + model + ', ' + path
