def as_album(self): album_struct = self.__link_interface.as_album(self.__link_struct) if album_struct is not None: ai = _album.AlbumInterface() ai.add_ref(album_struct) return album.Album(album_struct)
def albums_add(): """ Функция добавления артиста в БД, принимает POST """ #получаем все поля incoming = { 'year': check_in(request.forms.get("year"), r'^\d{4}$'), 'artist': check_in(request.forms.get("artist")), 'genre': check_in(request.forms.get("genre"), r'^[a-zA-Zа-яА-Я]+$'), 'album': check_in(request.forms.get("album")) } #проверяем входные данные на корректность, если None, то данные не корректны for k, v in incoming.items(): if v == None: return HTTPError(400, 'Не верно введен параметр {}'.format(k)) #смотрим, если в БД уже есть такой альбом данного артиста albums_list = album.find(incoming['artist']) if albums_list: if incoming['album'] in [album.album for album in albums_list]: return HTTPError( 409, 'Альбом {} уже есть в базе данных'.format(incoming['album'])) #если все хорошо, значит добавляем в БД. Подсовываем все поля в класс и отправляем его в функцию добавления dump_album print('Добавление нового альбома') new_alb = album.Album(year=int(incoming['year']), artist=incoming['artist'], genre=incoming['genre'], album=incoming['album']) return album.dump_album(new_alb)
def create_album(): # создаем словарь для обработки POST запросов album_data = { "artist": request.forms.get("artist"), "genre": request.forms.get("genre"), "year": int(request.forms.get("year")), "album": request.forms.get("album"), } # валидатор запросов for item in album_data: if not album_data[item]: return f"Упс... Вы не ввели '{item}' " match = re.match(r"[1-2][0-9]{3}", str(album_data['year'])) if not match: return f"Неверно указан год" # переводим словарь в экземпляр класса new_album = album.Album(**album_data) # записываем новый альбом if album.save(new_album): result = f"Альбом {album_data['album']} артиста {album_data['artist']} сохранен" else: message = f"Альбом {album_data['album']} в исполнении {album_data['artist']} уже есть в базе" result = HTTPError(409, message) return result
def add_album(self, album_name, artist_name): if artist_name not in self.artists: raise InputError('Artist not found. Please add artist') artist = self.artists[artist_name] # Find instance of artist new_album = album.Album(album_name) self.albums.append(new_album) new_album.artist = artist # Album to artist connection artist.albums[album_name] = new_album # Artist to album connection return new_album
def load_all_albums(self): for maindir, subdir, file_name_list in os.walk(utils.config["media_path"]): # list all media for filename in file_name_list: # find cover if 'cover.jpg' == filename: _album = album.Album(maindir) _album.initialization() self.albums[maindir] = _album
def request_artist(): artist_data = album.Album( year = request.forms.get("year"), artist = request.forms.get("artist"), genre = request.forms.get("genre"), album = request.forms.get("album") ) if artist_data.year < "1900" or artist_data.year > "2020": return HTTPError(404, "Ошибка. Неправильный формат года выпуска альбома.") else: return album.save(artist_data)
def add_data(): new_album = album.Album(year=request.forms.get("year"), artist=request.forms.get("artist"), genre=request.forms.get("genre"), album=request.forms.get("album")) if validate_input(new_album) == 1: return HTTPError(409, "Год должен быть числом") elif validate_input(new_album) == 2: return HTTPError(409, "Год должен быть в формате YYYY") elif validate_input(new_album) == 3: return HTTPError(409, "Должны быть указаны artist и album") if album.check_original(new_album): return HTTPError(409, "Такой альбом уже существует в базе") else: album.change_database(new_album) return "Данные успешно сохранены"
def load_yadofile(self, path): """ファイル("wch", "wcp", "wpl", "wpt", "wyd", "wrm")を読み込む。""" with cwfile.CWFile(path, "rb") as f: lpath = path.lower() if lpath.endswith(".wyd"): data = environment.Environment(None, f, True) data.skintype = self.skintype self.wyd = data elif lpath.endswith(".wch"): data = adventurer.AdventurerHeader( None, f, True, dataversion=self.dataversion_int) self.wchs.append(data) elif lpath.endswith(".wcp"): data = adventurer.AdventurerCard(None, f, True) self.wcps.append(data) elif lpath.endswith(".wrm"): data = album.Album(None, f, True) self.wrms.append(data) elif lpath.endswith(".wpl"): data = party.Party(None, f, True, dataversion=self.dataversion_int) self.wpls.append(data) elif lpath.endswith(".wpt"): data = party.PartyMembers(None, f, True, dataversion=self.dataversion_int) self.wpts.append(data) elif lpath.endswith(".whs"): cards, albums = party.load_album120(None, f) for data in cards: self.wcps.append(data) for albumdata in albums: self.wrms.append(albumdata) data = None else: f.close() raise ValueError(path) f.close() return data
def save_user(user_data): alb = album.Album( artist=user_data["artist"], year=user_data["year"], genre=user_data["genre"], album=user_data["album"] ) try: int(alb.year) except ValueError: return "Год введен некорректно!" album_list = album.find(alb.artist) album_name = [album.album for album in album_list] if alb.album in album_name: message = "Альбомов {} не найдено" result = HTTPError(409, message) print('Альбом {} уже есть в списке'.format(alb.album)) return result album.main(alb)
def add_album(): year = request.forms.get("year") try: year_validation.year_validation( year) #проверяет валидность значения для года except Exception: return HTTPError(400, 'Некорректное значение для года!') else: new_album = album.Album(year=year, artist=request.forms.get("artist"), genre=request.forms.get("genre"), album=request.forms.get("album")) if not (album.find_album(new_album)): album.save(new_album) else: raise HTTPError(409, f'Альбом {new_album.album} существует')
def create_new_artist(): """ сохраняет в базу данных переданную пользователем информацию о новом альбоме """ class MinError(Exception): """ вспомагательный пустой класс для обработки пользовательского исключения """ pass # вспомагательная переменная (если в базе данных обнаружится существующая запись - изменим на True) exist = False try: # из переданных в веб-формате данных о новом альбоме формируем новую строку для записи в базу # создаем экземпляр класса Album() из модуля "album.py" artist_data = album.Album(year=int(request.forms.get("year")), artist=request.forms.get("artist"), genre=request.forms.get("genre"), album=request.forms.get("album")) # если указанный год альбома меньше 1860 года (т.е. когда была создана первая в мире аудиозапись), # возбуждаем соответствующее исключение if artist_data.year < 1860: raise MinError() # формируем список альбомов по запрошенному артисту albums_list = album.find(artist_data.artist) # сверяем данные нового альбома с существующими альбомами артиста for item in albums_list: if artist_data == item: return HTTPError(409, "Такая запись в базе данных уже есть!") exist = True break # если такого альбома нет - сохраняем в базу данных новый альбом if not exist: album.save(artist_data) return "Данные успешно сохранены!" # перехватываем ошибку, когда пользователь ввел не целое число в year except ValueError: return "Некорректно указан год!" # перехватываем, когда введен год, меньше 1860г except MinError: return "Указанный год меньше 1860г!(в этом году была осуществлена самая первая аудиозапись в мире!)"
def __init__(self): self.album = album.Album() self.left = None self.right = None
def getAlbum(name): for x in allAlbums: if x.albumName == name: return x if __name__ == "__main__": with open("listOfSongs.txt", "r") as listOfSongs: songObj = songClass.Song() artistObj = artistClass.Artist() albumObj = albumClass.Album() for record in listOfSongs: albumName, publishYr, artistName, songName, duration = tuple(record.strip("\n").split("\t")) # Create / Retrieve Song if songObj.songName != songName: if not songName in allSongs: songObj = songClass.Song(songName, artistName, albumName) allSongs.append(songObj) else: songObj = getSong(songName) # Create / Retrieve Artist if artistObj.artistName != artistName: