def __init__(self, path, db_name): SnippetManagerBase.__init__(self) self.loadAllPathDBs() self._BD = Database(path, db_name) # se vuelven a reobtener los snippets desde esta nueva bd self._Snippets = self.getAllSnippets()
class SnippetManagerCouch (SnippetManagerBase): ''' Clase que hace de wrapper entre las clases de la logica del programa, con la clase Fragmentos''' def __init__(self, path, db_name): SnippetManagerBase.__init__(self) self.loadAllPathDBs() self._BD = Database(path, db_name) # se vuelven a reobtener los snippets desde esta nueva bd self._Snippets = self.getAllSnippets() ########################## ## Metodos de instancia ## ########################## def agregarSnippet(self, datosSnippet): ''' Recibe un dicionario de los datos de lo que sera un nuevo snippet y lo agrega a la BD.''' # llama al metodo de bd para agregar un snippet, devolviendo # el resultado de la operacion como boolean y en caso de error, # el mensaje del error. resultado, mensaje = self._BD.agregarSnippet(datosSnippet) if resultado: # crea una instancia del nuevo snippet newSnippet = Snippet(datosSnippet) # agrega el nuevo snippet a los ya existentes self._addNewSnippetToCollection(newSnippet) # retorna que la operacion fue exitosa, # y ningun mensaje de error return True, None else: # retorna que la operacion no fue exitosa, y # el mensaje de error devuelto por bd return False,mensaje def eliminarSnippet(self, unSnippet): ''' Manda a eliminarSnippet de la Bd que borre el snippet segun su titulo y lenguaje.''' # llama al metodo de bd para eliminar un snippet # y devuelve un booleano con el resultado de la operacion. if self._BD.eliminarSnippet( unSnippet.titulo, unSnippet.lenguaje): # quita del diccionario el snippet self._Snippets.pop((unSnippet.lenguaje, unSnippet.titulo)) # establece como actual snippet a None self._SnippetActual = None return True else: return False def modificarSnippet(self, clave_spviejo, snippet_nuevo): ''' Actualiza el snippet cargado en memoria''' snippet = self._Snippets[clave_spviejo].__dict__ del self._Snippets[clave_spviejo] self._Snippets[ (snippet_nuevo['language'],snippet_nuevo['title']) ] = Snippet(snippet_nuevo) snippet_viejo = {} for campo in snippet : snippet_viejo[ campo.split('__')[1] ] = snippet[campo] return self._BD.modificarSnippet(snippet_viejo, snippet_nuevo) def newSnippet(self, spt): ''' Crea una instancia de snippet. ''' nuevoSnippet = Snippet({ 'title':spt['title'], 'language':spt['language'], 'tags':','.join(spt['tags']), 'contens':spt['contens'], 'description':spt['description'], 'creation':spt['creation'], 'reference':spt['reference'], 'modified':spt['modified'], 'uploader':spt['uploader'], 'starred':spt['starred']} ) # tupla que sera de clave en el diccionario de los snippets clave = (spt['language'],spt['title']) return (clave,nuevoSnippet) ################# ## Metodos Get ## ################# def getAllLenguajes(self): ''' Obtiene una lista de los lenguajes desde la bd.''' # obtiene desde la actual instancia de bd los lenguajes existentes lenguajes = self._BD.getLenguajes() lenguajes.sort() return lenguajes def getAllSnippets(self): ''' Obtiene los snippets desde la bd y carga en un diccionario los snippets en formato objeto Snippet().''' all = self._BD.getAllSnippets() return dict([self.newSnippet(snippet) for snippet in all]) def getLengsAndTitles(self,consulta=None, favorito = None): ''' Obtiene los snippets por lenguajes desde la bd.''' #~ tagsPresicion = bool(self.__DBUtils.configs.searchPresitionTags) tagsPresicion = False return self._BD.getLengAndTitles(consulta, favorito, tagsPresicion) def getSnippetsCount(self): ''' Devuelve un entero con la cantidad de snippets cargados en la BD.''' return self._BD.getSnippetsCount() def getPathDB(self, index): ''' Recupera de la lista de bds la ruta en el indice especificado.''' return self._AllPathDBs[index]