示例#1
0
 def itemClicked(self, event):
     if (self.grillaSeries.selection()):
         item = self.grillaSeries.item(self.grillaSeries.selection())
         print(item['values'][3])
         self.serie = Series().get(item['values'][3])
         imagen = self.serie.getImageCover()
         print(self.labelImagen)
         self.cover = ImageTk.PhotoImage(imagen.resize(self.coverSize))
         self.labelImagen['image'] = self.cover
示例#2
0
    def buscarSerie(self, orderBy=None):
        # print(self.filtros)
        primerfiltro = True
        filtro = ''
        filtrosNoVacios = {}
        listaValores = []
        # al parecer el for acede a la estructura en forma paralela y no tengo forma de determinar el primero. por esto se hace lo siguiente
        # sacamos las listas filtros vacias y solo dejamos la que tienen valores despues obtenemos la lista en la pos 1 y despues concatenemos el resto
        for nombreLista in self.filtros.keys():
            if len(self.filtros[nombreLista]) > 0:
                print('lista: ' + nombreLista + ' long: ' +
                      str(len(self.filtros[nombreLista])))
                filtrosNoVacios[nombreLista] = self.filtros[nombreLista]
        listaKeys = [x for x in filtrosNoVacios.keys()]
        print(filtrosNoVacios)
        if len(listaKeys) > 0:
            primeraLista = filtrosNoVacios[listaKeys[0]]
            print('Primera lista: ' + str(filtrosNoVacios[listaKeys[0]]))
            for valor in primeraLista:
                filtro += listaKeys[0] + ' like ? or '
                listaValores.append(valor)
        print(listaKeys[1:])
        for key in listaKeys[1:]:
            filtro = filtro[:-4] + ' and '
            filtrolocal = ''
            print('lista: ' + str(filtrosNoVacios[key]))
            for valor in filtrosNoVacios[key]:
                filtrolocal += key + ' like ? or '
                listaValores.append(valor)
            filtro = filtro + filtrolocal
        filtro = filtro[:-4]

        if (len(filtro) > 0):
            print(filtro)
            print(listaValores)
            series = Series().getList(listaValores, filtro, orderBy)
        else:
            series = Series().getList(listaValores, '', orderBy)
        for item in self.grillaSeries.get_children():
            self.grillaSeries.delete(item)
        for serie in series:
            self.grillaSeries.insert(
                '',
                0,
                '',
                text='',
                values=(serie.nombre, serie.cantidadNumeros, serie.descripcion,
                        serie.id, serie.image_url, serie.publisherName,
                        serie.AnioInicio))
示例#3
0
    def addNewMedia(self):
        category = input(
            'enter the category name first\n ( film - clip - documentary - series ): '
        )
        id = input('id: ')
        name = input('name: ')
        year = input('year: ')
        director = input('director: ')
        score = input('score: ')
        duration = input('duration: ')
        url = input('url: ')
        info = input('info: ')
        casts = input('casts: ')
        genre = input('genre: ')
        episode = input('episode: ')
        subject = input('subject: ')
        company = input('company: ')
        media_info = [
            id, category, name, year, director, score, duration, url, info,
            casts, genre, episode, subject, company
        ]

        if category == 'film':
            self.medias.append(Film(media_info))
        elif category == 'clip':
            self.medias.append(Clip(media_info))
        elif category == 'documentary':
            self.medias.append(Documentary(media_info))
        elif category == 'series':
            self.medias.append(Series(media_info))
        else:
            print(Fore.RED + 'wrong input')

        self.menu()
示例#4
0
    def __init__(self):
        try:
            f = open('Data.csv')
        except Exception as e:
            print("error: ", e)
            exit()

        big_text = f.read()
        parts = big_text.split('\n')
        self.medias = []
        i = 0

        while i < len(parts):
            info = parts[i].split(',')
            if info[1] == 'film':
                self.medias.append(Film(info))
            elif info[1] == 'documentary':
                self.medias.append(Documentary(info))
            elif info[1] == 'clip':
                self.medias.append(Clip(info))
            elif info[1] == 'series':
                self.medias.append(Series(info))
            i += 1

        print(Fore.LIGHTCYAN_EX + 'data loaded! \nwelcome dear user!')
        self.menu()
示例#5
0
    def __init__(self, master):
        self.window_root = master

        self.window_root.title("Comic Viewer")
        ws = self.window_root.winfo_screenwidth()
        hs = self.window_root.winfo_screenheight()
        x = int((ws / 2) - (WINDOW_WIDTH / 2))
        y = int((hs / 2) - (WINDOW_HEIGHT / 2) - 10)
        self.window_root.geometry(str(WINDOW_WIDTH) + "x" + str(WINDOW_HEIGHT) + "+" + str(x) + "+" + str(y))

        root_directory = "Mangas"
        comic_name = "Pokemon Adventures"

        self.shown_series = Series(root_directory, comic_name)

        img = self.shown_series.get_current_image()
        self.panel = Label(self.window_root)
        self.show_image(img)

        self.window_root.bind("<Left>", self.handle_left_key_event)
        self.window_root.bind("<Right>", self.handle_right_key_event)
示例#6
0
    def __createPanelComic__(self, parent, comicbook, comicCoverImage, **kw):
        panelComic = ttk.LabelFrame(parent, **kw)
        self.comicCovers.append(ImageTk.PhotoImage(comicCoverImage))
        print(comicbook.getNombreArchivo())
        comicCoverLabel = ttk.Label(
            panelComic,
            image=self.comicCovers[len(self.comicCovers) - 1],
            compound='top')
        comicCoverLabel.grid(column=0, row=0, sticky=(W))
        panelInfo = ttk.LabelFrame(panelComic, text='--')
        panelInfo.grid(column=1, row=0, sticky=(W, E, N))
        series = Series()
        serie = series.get(comicbook.serieId)
        if (series.status == 0):
            print('No se pudo recueperar la serie')
            nombreSerie = ttk.Label(panelInfo, text='Serie: ' + "")
            numerode = ttk.Label(panelInfo,
                                 text='Número: ' + str(comicbook.numero) +
                                 ' de ' + str(0))
        else:
            nombreSerie = ttk.Label(panelInfo, text='Serie: ' + serie.nombre)
            numerode = ttk.Label(panelInfo,
                                 text='Número: ' + str(comicbook.numero) +
                                 ' de ' + str(serie.cantidadNumeros))
        archivo = ttk.Label(panelInfo,
                            text='Archivo: ' + comicbook.getNombreArchivo())
        tituloEjemplar = ttk.Label(panelInfo,
                                   text='Título: ' + comicbook.titulo)

        arcoAlternativo = ttk.Label(panelInfo,
                                    text='Fecha Tapa: ' + comicbook.fechaTapa)
        archivo.grid(sticky=(W), padx=5)
        nombreSerie.grid(sticky=(W), padx=5)
        tituloEjemplar.grid(sticky=(W), padx=5)
        numerode.grid(sticky=(W), padx=5)
        arcoAlternativo.grid(sticky=(W), padx=5)
        return panelComic
示例#7
0
class MainWindow:
    def __init__(self, master):
        self.window_root = master

        self.window_root.title("Comic Viewer")
        ws = self.window_root.winfo_screenwidth()
        hs = self.window_root.winfo_screenheight()
        x = int((ws / 2) - (WINDOW_WIDTH / 2))
        y = int((hs / 2) - (WINDOW_HEIGHT / 2) - 10)
        self.window_root.geometry(str(WINDOW_WIDTH) + "x" + str(WINDOW_HEIGHT) + "+" + str(x) + "+" + str(y))

        root_directory = "Mangas"
        comic_name = "Pokemon Adventures"

        self.shown_series = Series(root_directory, comic_name)

        img = self.shown_series.get_current_image()
        self.panel = Label(self.window_root)
        self.show_image(img)

        self.window_root.bind("<Left>", self.handle_left_key_event)
        self.window_root.bind("<Right>", self.handle_right_key_event)

    def show_image(self, img):
        self.panel.configure(image=img)
        self.panel.image = img
        self.panel.focus_set()
        self.panel.pack(side="bottom", fill="both", expand="yes")

    def handle_left_key_event(self, _):
        previous_page = self.shown_series.get_previous_page()
        self.show_image(previous_page)

    def handle_right_key_event(self, _):
        next_page = self.shown_series.get_next_page()
        self.show_image(next_page)
    def run(self):
        """
        Advances the model until the value of the curr_time property is >= 
        the run_time property of the TimeParams instance passed to the 
        constructor. It returns the results of running the model in an 
        instance of the Results class.
        """
        time_series = [self.curr_time]
        predator_series = [self.predators]
        prey_series = [self.prey]

        while self.advance():
            time_series.append(self.curr_time)
            predator_series.append(self.predators)
            prey_series.append(self.prey)

        predator_series_obj = Series(predator_series,
                                     self.__population_labels.predator_label)

        prey_series_obj = Series(prey_series,
                                 self.__population_labels.prey_label)

        results = Results(time_series, predator_series_obj, prey_series_obj)
        return results
示例#9
0
 def main(self):
     choice = 1
     while choice != 4:
         choice = int(input())
         if choice == 1:
             cal = Cal()
             cal.op()
             print("--------------")
             print(cal.choice)
             if cal.choice == 0:
                 self.menu()
         elif choice == 2:
             ser = Series()
             print("--------------")
             if ser.choice == 0:
                 self.menu()
         else:
             break
示例#10
0
async def task(serie_config, browser_context, aio_session, torrent_client):

    config = serie_config
    serie = Series(**config)
    page = await browser_context.newPage()
    await page.setViewport({"width": 1920, "height": 1080})
    #await page.setUserAgent(user_agent)
    episode = serie.episode - 1
    while serie.episode > episode:
        episode = serie.episode
        async for torrent_file in serie.get_torrent(page, aio_session):

            if torrent_file is not None:
                logger.info("%s %i - in task: download torrent ok", serie.name,
                            serie.episode)

                if not serie.path.exists():
                    serie.path.mkdir(mode=0o777)

                torrent_id = torrent_client.add_torrent(
                    torrent_file, True, str(serie.path))

                config.read()
                config["episode"] = serie.episode + 1
                config.write()

                # await asyncio.sleep(10)
                torrent = torrent_client.get_torrent_status(torrent_id)
                if torrent.size <= torrent.free_space - 100000000:
                    torrent.start()
                    logger.info("%s %i- in task: start %s", serie.name,
                                serie.episode, torrent.name)

                logger.debug("%s %i - in task: Cancel pending Task",
                             serie.name, serie.episode)

                serie.stop()
                config.read()
                serie = Series(**config)

    try:
        await page.close()
    except Exception as error:
        logger.error("%s - in task: %s", serie.name, error)
示例#11
0
    def __init__(self, parent, comicBook, cnf={}, **kw):
        Frame.__init__(self, parent, cnf, **kw)
        comic = self.comic = comicBook
        self.serie = Series().get(comicBook.serieId)
        notebook = ttk.Notebook(self)
        resumen = ttk.Frame(notebook)  # first page, which would get widgets gridded into it
        detalle = ttk.Frame(notebook)  # second page
        resumen.grid()
        detalle.grid()
        notebook.add(resumen, text='Resumen')
        notebook.add(detalle, text='Detalle')
        self.grid()
        notebook.grid()
        self.comic.openCbFile()
        comicBook.goto(0)
        im = Image.open(comicBook.getPage())
        size = (int(320 * 0.5), int(496 * 0.5))
        self.fImage = ImageTk.PhotoImage(im.resize(size))
        # self.cover = ttk.Label(resumen, image=self.fImage, anc1hor=CENTER, compound='top', text='No anda')
        # self.cover.grid(column=0, row=4, columnspan=2, rowspan=2, sticky=(N, W, E, S))
        self.cover = Canvas(resumen, width=size[0], height=size[1])
        self.cover.create_image((0, 0), image=self.fImage,anchor=NW)  # recordar que esto decide desde donde se muestra la imagen
        self.cover.create_rectangle((2, 2, 160, 248))
        self.cover.grid(column=0, row=0, rowspan=5)

        ttk.Label(resumen, text=comic.getNombreArchivo(False)).grid(column=1, row=0, sticky=(W, N))
        resumen.columnconfigure(1,weight=1)
        resumen.rowconfigure(1, weight=1)
        #tienen 9 lineas de alto y 59 chars de largo el texto
        resumenText = Text(resumen, width=50, height=9)
        if(comic.resumen):
            resumenText.insert(END, comic.resumen)
        resumenText.grid(column=1, row=1, sticky=(N,S,W,S), columnspan = 4)

        size = self.comic.getSize()/(1024*1024)

        ttk.Label(resumen, text="Tipo: "+self.comic.getTipo()+' '+str("%0.2f"%size)+'M' ).grid(column=0, row=5, sticky=(N, W))
        ttk.Label(resumen, text="Páginas: "+str(self.comic.getCantidadPaginas())).grid(column=0, row=6, sticky=(N, W))
        ttk.Label(resumen, text="Mi Valoración:").grid(column=1, row=5, sticky=(N, W))

        ttk.Label(resumen, text="Valoración de la comunidad:").grid(column=1, row=6, sticky=(N, W))
        donde = ttk.Label(resumen)
        donde.config(text="Dónde: {:.90s}".format(self.comic.path))
        donde.grid(column=0, row=7,columnspan=2, sticky=(N, W))
        donde.bind("<Button-1>",self.click)
        # los ttk no usans el text=''
        ttk.Label(detalle, text='Serie:').grid(column=0, row=0, sticky=(N, W))
        entrada = ttk.Entry(detalle, width=50)
        entrada.grid(column=0, row=1, padx=5, sticky=(N, W), columnspan=2)
        entrada.insert(END, self.serie.nombre)

        ttk.Label(detalle, text='Volumen:').grid(column=2, row=0, sticky=(N, W))
        entrada = ttk.Entry(detalle, width=6)
        entrada.grid(column=2, row=1, padx=5, sticky=(N, W))
        entrada.insert(END, self.comic.volumen)

        ttk.Label(detalle, text='Número:').grid(column=3, row=0, sticky=(N, W))
        entrada = Spinbox(detalle, from_=0, to=10000, width=6)
        entrada.grid(column=3, row=1, padx=5, sticky=(N, W))
        entrada.delete(0)
        entrada.insert(END, self.comic.numero)

        ttk.Label(detalle, text='de:').grid(column=4, row=0, sticky=(N, W))
        entrada = Spinbox(detalle, from_=0, to=10000, width=6)
        entrada.grid(column=4, row=1, padx=5, sticky=(N, W))
        entrada.delete(0)
        entrada.insert(END, self.serie.cantidadNumeros)

        ttk.Label(detalle, text='Título:').grid(column=0, row=2, sticky=(N, W))
        entrada = ttk.Entry(detalle, text='Título', width=50)
        entrada.grid(column=0, row=3, padx=5, sticky=(N, W), columnspan=2)
        entrada.insert(END, self.comic.titulo)

        ttk.Label(detalle, text='Fecha:').grid(column=2, row=2, sticky=(N, W))
        entrada = ttk.Entry(detalle, width=10)
        entrada.grid(column=2, row=3, padx=5, sticky=(N, W), columnspan=2)
        entrada.insert(END, self.comic.fechaTapa)

        ttk.Label(detalle, text='Arco Argumental:').grid(column=0, row=4, sticky=(N, W))
        entradaArco = ttk.Entry(detalle, text='', width=50)
        entradaArco.grid(column=0, row=5, padx=5, sticky=(N, W), columnspan=2)
        ttk.Label(detalle, text='Número:').grid(column=2, row=4, sticky=(N, W))
        entradaNumero = Spinbox(detalle, from_=0, to=10000, width=6)
        entradaNumero.grid(column=2, row=5, padx=5, sticky=(N, W))
        ttk.Label(detalle, text='de:').grid(column=3, row=4, sticky=(N, W))
        entradaDe = Spinbox(detalle, text='', from_=0, to=10000, width=6)
        entradaDe.grid(column=3, row=5, padx=5, sticky=(N, W))
        if comic.tieneArcoAlterno():
            entradaArco.insert(END, ArcosArgumentales().get(comic.seriesAlternasNumero[0][0]).nombre)
            entradaNumero.delete(0)
            entradaNumero.insert(END, comic.seriesAlternasNumero[0][1])
            arco = ArcosArgumentales().get(comic.seriesAlternasNumero[0][0])
            entradaDe.delete(0)
            entradaDe.insert(END, arco.getCantidadTitulos())

        notebook.select(0)
        self.entries = {}
        self.variables = {}
        self.varaible = StringVar(self).trace(mode='w', callback=self.__Changed__)
        self.botonGuardar = ttk.Button(self, text='Guardar', command=self.guardar)
        self.botonGuardar.grid(column=0, sticky=(E))
        self.changed = False
示例#12
0
class SeriesLookupGui(Frame):
    def __init__(self, parent, serie, cnf={}, **kw):
        Frame.__init__(self, parent, cnf={}, **kw)
        self.columnconfigure(0, weight=1)
        self.serie = serie

        self.rowconfigure(1, weight=1)
        # panel busqueda opciones entrada y boton buscar
        self.panelBusqueda = ttk.Frame(self)
        self.panelBusqueda.grid(column=0, row=0, sticky=(E, W, N))
        self.panelBusqueda.columnconfigure(1, weight=1)
        self.comboOpcionBusqueda = StringVar()
        self.opcionesBusqueda = ttk.Combobox(
            self.panelBusqueda, textvariable=self.comboOpcionBusqueda)
        self.comboOpcionBusqueda.trace(mode='w',
                                       callback=self.__ChangedComboboxFilter__)
        self.opcionesBusqueda['values'] = ('Buscar por Nombre',
                                           'Buscar por Número',
                                           'Buscar por Editorial',
                                           'Buscar por Año')
        self.filtros = {
            'nombre': [''],
            'name': [],
            'cantidadNumeros': [],
            'AnioInicio': []
        }
        self.opcionesBusqueda.grid(sticky=(W))
        self.varaiblePatronBusqueda = StringVar()
        self.entryFiltro = ttk.Entry(self.panelBusqueda,
                                     textvariable=self.varaiblePatronBusqueda)
        self.varaiblePatronBusqueda.trace(mode='w',
                                          callback=self.__ChangedFilter__)
        self.entryFiltro.grid(column=1, row=0, sticky=(W, E))

        ttk.Button(self.panelBusqueda, text='Buscar',
                   command=self.buscarSerie).grid(sticky=(E), column=3, row=0)
        # self.opcionesBusqueda.current(1)

        # panel de grilla y previsualizacion primer cover de serie
        self.framePrincipal = LabelFrame(self)
        self.framePrincipal.grid(sticky=(E, W, S, N), column=0, row=1)
        self.framePrincipal.columnconfigure(0, weight=1)
        self.framePrincipal.rowconfigure(0, weight=1)
        self.coverSize = (240, 372)
        # self.frame.columnconfigure(1,weight=1)
        # self.frame.rowconfigure(0,weight=1)

        # lo necesitamos para agruparla con la scroll
        self.frameGrilla = Frame(self.framePrincipal)
        self.frameGrilla.grid(sticky=(N, W, E, S))
        self.frameGrilla.rowconfigure(0, weight=1)
        self.frameGrilla.columnconfigure(0, weight=1)
        ##config grilla series
        self.grillaSeries = ttk.Treeview(
            self.frameGrilla,
            columns=('name', 'count_of_issues', 'description', 'Id', 'image',
                     'publisher', 'start_year'),
            displaycolumns=('Id', 'name', 'count_of_issues', 'publisher',
                            'start_year'))
        self.grillaSeries.grid(column=0, row=0, rowspan=1, sticky=(N, S, E, W))

        scrollGrid = ttk.Scrollbar(self.frameGrilla,
                                   orient=VERTICAL,
                                   command=self.grillaSeries.yview)
        scrollGrid.grid(column=1, row=0, rowspan=1, sticky=(N, S))

        self.grillaSeries.configure(yscrollcommand=scrollGrid.set)

        self.grillaSeries.heading('Id', text='Id')
        self.grillaSeries.heading('name', text='Nombre')
        self.grillaSeries.heading('count_of_issues', text='Numeros')
        self.grillaSeries.heading('publisher', text='Editorial')
        self.grillaSeries.heading('start_year', text='Año')
        self.grillaSeries.config(show='headings')  # tree, headings

        self.grillaSeries.heading(
            'start_year', command=lambda col='AnioInicio': self.sortby(col))
        self.grillaSeries.heading(
            'name', command=lambda col='nombre': self.sortby(col))
        self.grillaSeries.heading(
            'count_of_issues',
            command=lambda col='cantidadNumeros': self.sortby(col))
        self.grillaSeries.heading('publisher',
                                  command=lambda col='name': self.sortby(col))
        ''' no ordena bien con 70000 registros es lento es mas facil tirar una nueva consutla contra el SQL
        self.grillaSeries.heading('start_year', command=lambda col='start_year': self.sortby(self.grillaSeries, 'start_year', int(True)))
        self.grillaSeries.heading('name', command=lambda col='name': self.sortby(self.grillaSeries, 'name', int(True)))
        self.grillaSeries.heading('count_of_issues', command=lambda col='count_of_issues': self.sortby(self.grillaSeries, 'count_of_issues', int(True)))
        self.grillaSeries.heading('publisher', command=lambda col='publisher': self.sortby(self.grillaSeries, 'publisher', int(True)))
        '''

        self.grillaSeries.bind(
            '<<TreeviewSelect>>',
            self.itemClicked)  # the item clicked can be found via tree.focus()

        self.labelImagen = Label(self.frameGrilla)
        self.labelImagen.grid(column=3, row=0)

        # boton parte inferior formulario
        ttk.Button(self, text='seleccionar',
                   command=self.seleccionarSerie).grid(column=0,
                                                       row=2,
                                                       sticky=(E))
        self.desc = True
        self.opcionesBusqueda.current(0)
        self.entryFiltro.focus()
        self.cover = ImageTk.PhotoImage(
            Image.open('CoverGenerica.png').resize(self.coverSize))
        self.labelImagen['image'] = self.cover

    def __ChangedFilter__(
            self, *args
    ):  # recordar siempre que son 4 paramentros sino da errores raros
        print('__ChangedFilter__ current: ',
              str(self.opcionesBusqueda.current()))
        if (self.opcionesBusqueda.current() == 0):
            print('limpiando filtro nombre')
            del self.filtros['nombre']
            cadena = self.varaiblePatronBusqueda.get()
            self.filtros['nombre'] = [cadena]
            print('filtro cargado: ' + str(self.filtros['nombre']))
        if (self.opcionesBusqueda.current() == 1):
            del self.filtros['cantidadNumeros']
            cadena = self.varaiblePatronBusqueda.get()
            print('cantidadNumeros: ' + str(self.filtros))
            print(len(cadena))
            if len(cadena) > 0:
                self.filtros['cantidadNumeros'] = [
                    self.varaiblePatronBusqueda.get()
                ]

        if (self.opcionesBusqueda.current() == 2):
            del self.filtros['name']
            self.filtros['name'] = [self.varaiblePatronBusqueda.get()]
        if (self.opcionesBusqueda.current() == 3):
            del self.filtros['AnioInicio']
            print('AnioInicio: ' + str(self.filtros))
            cadena = self.varaiblePatronBusqueda.get()
            if len(cadena) > 0:
                self.filtros['AnioInicio'] = [
                    self.varaiblePatronBusqueda.get()
                ]

    def __ChangedComboboxFilter__(self, *args):
        lista = []
        if (self.opcionesBusqueda.current() == 0):
            if ('nombre' in self.filtros):
                lista = self.filtros['nombre']
        elif (self.opcionesBusqueda.current() == 1):
            if ('cantidadNumeros' in self.filtros):
                lista = self.filtros['cantidadNumeros']
        elif (self.opcionesBusqueda.current() == 2):
            if ('name' in self.filtros):
                lista = self.filtros['name']
        elif (self.opcionesBusqueda.current() == 3):
            if ('AnioInicio' in self.filtros):
                lista = self.filtros['AnioInicio']

        self.entryFiltro.delete(0, END)
        cadena = ''
        if lista:
            print('lista de palabras: ' + str(lista))
        for palabra in lista:
            print('palabra: ' + palabra)
            cadena += palabra + " "
        self.entryFiltro.insert(END, cadena[:-1])

    def getSerie(self):
        print('retornando serie: ' + self.serie.nombre)
        return self.serie

    def itemClicked(self, event):
        if (self.grillaSeries.selection()):
            item = self.grillaSeries.item(self.grillaSeries.selection())
            print(item['values'][3])
            self.serie = Series().get(item['values'][3])
            imagen = self.serie.getImageCover()
            print(self.labelImagen)
            self.cover = ImageTk.PhotoImage(imagen.resize(self.coverSize))
            self.labelImagen['image'] = self.cover
            # self.labelImagen.config(image=self.cover)
            # Label(self.frameGrilla, image=self.cover).grid(column=3,row=0)

    def seleccionarSerie(self):
        print(self.serie.id)

    def sortby(self, col):
        print('sort: ' + str(self.opcionesBusqueda.current()))

        if col == 'nombre':
            self.opcionesBusqueda.current(0)
        elif col == 'cantidadNumeros':
            self.opcionesBusqueda.current(1)
        elif col == 'name':
            self.opcionesBusqueda.current(2)
        elif col == 'AnioInicio':
            print('antes de cambiar sort:')
            self.opcionesBusqueda.current(3)
            print('despues de cambiar sort: ' +
                  str(self.opcionesBusqueda.current()))

        if (not self.desc):
            self.buscarSerie('order by ' + col + ' desc')
        else:
            self.buscarSerie('order by ' + col + ' asc')
        self.desc = not self.desc
        '''
        data = [(tree.set(child, col), child) for child in tree.get_children('')]

        # reorder data
        data.sort(reverse=descending)
        for indx, item in enumerate(data):
            tree.move(item[1], '', indx)
            '''

    def buscarSerie(self, orderBy=None):
        # print(self.filtros)
        primerfiltro = True
        filtro = ''
        filtrosNoVacios = {}
        listaValores = []
        # al parecer el for acede a la estructura en forma paralela y no tengo forma de determinar el primero. por esto se hace lo siguiente
        # sacamos las listas filtros vacias y solo dejamos la que tienen valores despues obtenemos la lista en la pos 1 y despues concatenemos el resto
        for nombreLista in self.filtros.keys():
            if len(self.filtros[nombreLista]) > 0:
                print('lista: ' + nombreLista + ' long: ' +
                      str(len(self.filtros[nombreLista])))
                filtrosNoVacios[nombreLista] = self.filtros[nombreLista]
        listaKeys = [x for x in filtrosNoVacios.keys()]
        print(filtrosNoVacios)
        if len(listaKeys) > 0:
            primeraLista = filtrosNoVacios[listaKeys[0]]
            print('Primera lista: ' + str(filtrosNoVacios[listaKeys[0]]))
            for valor in primeraLista:
                filtro += listaKeys[0] + ' like ? or '
                listaValores.append(valor)
        print(listaKeys[1:])
        for key in listaKeys[1:]:
            filtro = filtro[:-4] + ' and '
            filtrolocal = ''
            print('lista: ' + str(filtrosNoVacios[key]))
            for valor in filtrosNoVacios[key]:
                filtrolocal += key + ' like ? or '
                listaValores.append(valor)
            filtro = filtro + filtrolocal
        filtro = filtro[:-4]

        if (len(filtro) > 0):
            print(filtro)
            print(listaValores)
            series = Series().getList(listaValores, filtro, orderBy)
        else:
            series = Series().getList(listaValores, '', orderBy)
        for item in self.grillaSeries.get_children():
            self.grillaSeries.delete(item)
        for serie in series:
            self.grillaSeries.insert(
                '',
                0,
                '',
                text='',
                values=(serie.nombre, serie.cantidadNumeros, serie.descripcion,
                        serie.id, serie.image_url, serie.publisherName,
                        serie.AnioInicio))
示例#13
0
 def _sync_series(self):
     """Synchronize the Series ID property to reflect the current state
     of the Series Number property."""
     from Series import Series
     s = Series(self.series_num)
     self.series_id = s.id