def copy_playlist(request): """ vue utilisee pour charger de nouvelles bande-annonces """ if request.method == "POST": form = CopyBaForm(request.POST) if form.is_valid(): usb_ba_path = form.cleaned_data["usb_ba_path"] try: ### copie des bande annonces my_ba_list = MyBaList() usb_ba_list = my_ba_list.select_playlist(my_ba_list.listdir_fullpath_ba(usb_ba_path), "prog") local_ba_list = my_ba_list.ba_list_prog # compare the local_ba_list already there and the usb_ba_list to copy only the new ba local_ba_basename = [os.path.basename(x) for x in local_ba_list] for each_ba in usb_ba_list: if not os.path.basename(each_ba) in local_ba_basename: shutil.copy(each_ba, env_variables.ba_directory) # list again all ba my_ba_list = MyBaList().ba_list_all whole_ba_list = sorted([os.path.basename(x) for x in my_ba_list]) ### copie des slides my_slide_list = MySlideList() usb_slide_list = my_slide_list.select_playlist( my_slide_list.listdir_fullpath_slide(usb_ba_path), "prog" ) local_slide_list = my_slide_list.slide_list_prog # compare the local_slide_list already there and the usb_slide_list to copy only the new ba local_slide_basename = [os.path.basename(x) for x in local_slide_list] for each_slide in usb_slide_list: if not os.path.basename(each_slide) in local_slide_basename: shutil.copy(each_slide, env_variables.ba_directory) # list again all slides my_slide_list = MySlideList().slide_list_all whole_slide_list = sorted([os.path.basename(x) for x in my_slide_list]) return render( request, "bande_annonce/advanced_playlist.html", {"whole_ba_list": whole_ba_list, "whole_slide_list": whole_slide_list}, ) except: message = "ECHEC lors de la copie des bande annonces ou des slides" return render(request, "bande_annonce/to_print.html", {"to_print": message}) else: form = CopyBaForm() return render(request, "bande_annonce/copy_playlist.html", {"form": form})
def clean(): my_ba_list = MyBaList() my_slide_list = MySlideList() try: my_ba_list.delete(my_ba_list.ba_list_in_past) except: logging.error("erreurs en essayant de deleter les bande-annonces locales") print("erreurs en essayant de deleter les bande-annonces locales") try: my_slide_list.delete(my_slide_list.slide_list_in_past) except: logging.error("erreurs en essayant de deleter les slides locaux") print("erreurs en essayant de deleter les slideds locaux")
class MyPlaylist: def __init__(self): self.ba_list = MyBaList() self.slide_list = MySlideList() self.playlist = self.make_playlist_to_run() logging.info("PLAYLIST APRES TOUTES LES INSERTIONS:\n %s" % (self)) def __str__(self): chaine = "Playlist a jouer:\n" for each in self.playlist: if isinstance(each, PlaylistElement): chaine += each.ba_path + "\n" + each.slide_path + "\n" elif isinstance(each, Ba) or isinstance(each, Slide): chaine += each.filepath + "\n" return chaine def make_playlist_to_run(self): """ fonction qui fabrique une playlist a partir de la ba_list, de la slide_list, insere les slides de promo """ playlist = [] # s'il y a un slide, on cree un PlaylistElement avec la ba et le slide correspondant # sinon, on ajoute la ba seule for each_ba in self.ba_list.ba_list_prog: slidename = each_ba.filename.split(".")[0] + ".jpg" if self.slide_list.slidename_is_in_slidelist_prog(slidename): slidepath = self.slide_list.get_slidepath_from_slidename(slidename) playlist.append(PlaylistElement(each_ba.filepath, slidepath)) else: playlist.append(each_ba) # on ajoute a la playlist, les ecrans de promo apres chaque bande-annonce reelle # (c'est a dire une bande annonce plus un slide) if env_variables.slide_promo_list != []: new_playlist = [] for each in playlist: if isinstance(each, PlaylistElement): new_playlist.append(each) new_playlist.extend(map(Slide, env_variables.slide_promo_list)) else: new_playlist.append(each) playlist = list(new_playlist) return playlist
def __init__(self): self.ba_list = MyBaList() self.slide_list = MySlideList() self.playlist = self.make_playlist_to_run() logging.info("PLAYLIST APRES TOUTES LES INSERTIONS:\n %s" % (self))