def crear_bd_contactos(self, archivo, nombre_archivo, nombre_bd) -> int:
        model_base_contactos = BaseDatosContacto()
        if self._existe_bd_contactos(nombre_bd):
            raise (OmlError(
                _("Ya existe una base de datos de contactos con ese nombre")))
        self.parser = BaseDatosContactoArchivoCSVParser(
            nombre_archivo, archivo)

        if not self.parser.es_valida_extension(
        ) or not self.parser.es_valido_archivo():
            file_invalid_msg = _(
                "El archivo especificado para realizar la importación de "
                "contactos no es válido.")
            raise (OmlArchivoImportacionInvalidoError(file_invalid_msg))

        if not self.parser.headers_no_repetidos():
            raise OmlParserRepeatedColumnsError(
                _("El archivo a procesar tiene nombres de columnas "
                  "repetidos."))

        model_base_contactos.archivo_importacion = archivo
        model_base_contactos.nombre_archivo_importacion = nombre_archivo
        model_base_contactos.nombre = nombre_bd
        model_base_contactos.save()

        return model_base_contactos.id
Beispiel #2
0
 def _sanear_nombres_de_columnas(self, nombres):
     nombres_saneados = [self._sanear_nombre_de_columna(nombre) for nombre in nombres]
     # Validar que no se repiten las columnas
     if not len(nombres) == len(set([x.lower() for x in nombres_saneados])):
         raise OmlParserRepeatedColumnsError(_("El archivo a procesar tiene nombres de columnas "
                                               "repetidos."))
     return nombres_saneados
Beispiel #3
0
    def previsualiza_archivo(self, base_datos_contactos):
        """
        Lee un archivo CSV y devuelve contenidos de
        las primeras tres filas.
        """

        file_obj = base_datos_contactos.archivo_importacion.file
        workbook = csv.reader(file_obj, self._get_dialect(file_obj))

        structure_dic = []
        for i, row in enumerate(workbook):
            if row:
                structure_dic.append(row)

            if i == 2:
                break

        if i < 2:
            logger.warn(
                _("El archivo CSV seleccionado posee menos de 2 "
                  "filas."))
            raise OmlParserMinRowError(
                _("El archivo CSV posee menos de "
                  "2 filas"))

        # Validar que no se repiten las columnas
        if not len(structure_dic[0]) == len(set(structure_dic[0])):
            raise OmlParserRepeatedColumnsError(
                _("El archivo a procesar tiene nombres de columnas "
                  "repetidos."))

        return structure_dic
    def valida_lista_rapida(self, archivo, nombre_archivo, nombre_lista):
        if self._existe_lista_rapida(nombre_lista):
            raise (OmlError(
                _("Ya existe una lista de contactos rapida con ese nombre")))
        self.parser = ListaRapidaArchivoCSVParser(nombre_archivo, archivo)

        if not self.parser.es_valida_extension(
        ) or not self.parser.es_valido_archivo():
            file_invalid_msg = _(
                "El archivo especificado para realizar la importación de "
                "contactos no es válido.")
            raise (OmlArchivoImportacionInvalidoError(file_invalid_msg))

        if not self.parser.headers_no_repetidos():
            raise OmlParserRepeatedColumnsError(
                _("El archivo a procesar tiene nombres de columnas "
                  "repetidos."))