""" Generate and returns the profiles
it assumes that self.pdir is defined """
#this is generated every time to handle the case of the user renaming the directories by hand
- return [os.path.join(self.pdir, f) for f in os.listdir(self.pdir)]
+ return sorted([os.path.join(self.pdir, f) for f in os.listdir(self.pdir)])
def getProfileFolder(self):
""" Generates, in a os dependant way, the local folder where all profiles are stored """
print("Creating a new profile")
if self.isValidProfileName(profileName):
- os.makedirs(os.path.join(self.getProfileFolder(), profileName))
+ try:
+ os.makedirs(os.path.join(self.getProfileFolder(), profileName))
+ except OSError,e:
+ if e.errno == errno.EEXIST:
+ raise AppError("Profile exists.")
+ else:
+ raise AppError(str(e))
else:
raise AppError('Profile Name not valid.\nAllowed only ascii characters.')
print("Profile "+profileName+" created.")
raise AppError('Profile Name does not exists')
else:
raise AppError('Profile Name not valid')
- print("Profile "+profileName+" created.")
+ print("Profile "+profileName+" deleted.")
+
+ def isCurrentProfile(self, ppath):
+ """ Returns true if the current profile path is currently activated """
+
+ pl = platform.system()
+ if pl in ('Linux','Darwin'):
+ if os.path.exists(self.getDropboxDirectory()):
+ return True if os.readlink(self.getDropboxDirectory()) == ppath else False
+ else:
+ return False
def isValidProfileName(self, pname):
+
if self.reg.match(pname) is not None:
return True
else:
if ppath in self.getProfilesList():
self.stopDropbox()
try:
- print self.getDropboxDirectory()
- print ppath
if pl in ('Linux','Darwin'):
if os.path.exists(self.getDropboxDirectory()):
os.unlink(self.getDropboxDirectory())
else:
raise NotImplementedError, "Not implemented yet."
except IOError as e:
- raise AppError('Error on activating Profile: '+ os.path.basename(ppath))
+ raise AppError('Error on activating Profile: '+ self.getBaseProfileName(ppath))
self.startDropbox()
else:
raise AppError("Trying to acrivate non existant profile")
+ def getBaseProfileName(self, ppath):
+ """ Returns the base name given a profile returned by getProfilesList """
+
+ return os.path.basename(ppath)
+
def getDropboxDirectory(self):
pl = platform.system()
if pl in ('Linux', 'Darwin'):
def stopDropbox(self):
""" Stop dropbox Daemon """
pl = platform.system()
+ if pl == 'Linux':
+ os.system("dropbox stop")
if pl in ('Linux','Darwin'):
pidfile = os.path.expanduser("~/.dropbox/dropbox.pid")
try: