X-Git-Url: https://v.licheni.net/stack/code/dboxswitch.git/blobdiff_plain/6387024f16be8f34ace846b605a8cf05938cd849..f7f331ca8166fd8b4a0c56f065d0021f954ee4c5:/profhandler.py?ds=sidebyside diff --git a/profhandler.py b/profhandler.py old mode 100755 new mode 100644 index 19a6b97..f2be538 --- a/profhandler.py +++ b/profhandler.py @@ -63,7 +63,7 @@ class ProfHandler(): """ 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 """ @@ -92,7 +92,13 @@ class ProfHandler(): 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.") @@ -109,9 +115,20 @@ class ProfHandler(): 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: @@ -122,8 +139,6 @@ class ProfHandler(): 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()) @@ -131,11 +146,16 @@ class ProfHandler(): 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'): @@ -149,6 +169,8 @@ class ProfHandler(): 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: