def new_album(): """ Сохранение нового альбома методом POST """ album_data = { "artist": request.forms.get("artist"), "album": request.forms.get("album"), "genre": request.forms.get("genre"), "year": request.forms.get("year"), } # проверяем все поля на корректность error = validate_data(album_data) if error: return HTTPError(400, error) # проверяем, есть ли в базе альбом с теми же данными alb_id = id_album_exists(album_data) if alb_id: return HTTPError(409, "Альбом уже есть, id: {}".format(alb_id)) # все проверки пройдены, сохраняем новый альбом album.save(album_data) with HTML(notprint=True) as doc: with TopLevelTag("head") as head: head += Tag("title", text = "Сохранение альбома") doc += head with TopLevelTag("body") as body: body += Tag("a", href=START, text = "На стартовую страницу") body += Tag("h2", text = "Альбом сохранен") doc += body return str(doc)
def create_album(): """ Отправляем POST-запрос на сервер. Сохраняем данные в БД Пример Httpie: http -f POST localhost:8080/albums year=2000 artist="Madonna" genre="Pop" album="Music" """ # Извлекаем данные POST-запроса year = request.forms.get("year") artist = request.forms.get("artist") genre = request.forms.get("genre") album_name = request.forms.get("album") try: year = int(year) # Если год в некоректном формате except ValueError: return HTTPError(400, "Указан некорректный год альбома") try: # Сохраняем запись об альбоме в БД new_album = album.save(year, artist, genre, album_name) except AssertionError as err: # Если ошибки формата данных result = HTTPError(400, str(err)) except album.AlreadyExists as err: # Если альбом существует result = HTTPError(409, str(err)) else: # Выводим сообщение если все ОК print("Новый альбом под ID #{} успешно сохранен".format(new_album.id)) result = "Новый альбом под ID #{} успешно сохранен".format( new_album.id) return result
def albums_add(): """ Получает данные альбома методом POST и если нет такого альбома у такого артиста, добавляет его :return: Результат записи данных альбома """ artist, album_name = request.forms.get("artist"), request.forms.get( "album") album_data = { "year": request.forms.get("year"), "genre": request.forms.get("genre"), "artist": artist, "album": album_name } if album.find(artist, album_name): result = \ HTTPError(409, "Данные не обновлены. Альбом {} артиста {} уже есть". format(album_name, artist)) else: result = album.save(album_data) if result == "OK": result = "Данные успешно сохранены" else: result = \ HTTPError(422, "Данные не обновлены. " + result) return result
def save_album(album_data): ''' Сохраняем данные по альбому ''' artist = album_data["artist"] album_name = album_data["album"] message = check_data(album_data) if message: message += '\nАльбом не создан!' result = HTTPError(400, message) else: album.save(album_data) #сохраняем альбом в базу данных result = "Альбом с названием {} артиста {} успешно создан".format( album_name, artist) return result
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 album(): if valid_album(request.forms.get("year")): album_data = { "year": request.forms.get("year"), "artist": request.forms.get("artist"), "genre": request.forms.get("genre"), "album": request.forms.get("album") } if valid(album_data): save(album_data) return "Данные успешно сохранены" else: result = HTTPError(409, "Альбом уже в базе данных") return result else: result = HTTPError(400, "Недопустимое значение `year` ") return result
def user(): user_data = request.forms.get("artist") user_data1 = request.forms.get("genre") user_data2 = request.forms.get("year") user_data3 = request.forms.get("album") try: int(user_data2) except ValueError: message = "неправильно введен год" result = HTTPError(500, message) else: album.save(user_data, user_data1, user_data2, user_data3) if album.save(user_data, user_data1, user_data2, user_data3) != 0: message = "Альбом уже существует" result = HTTPError(404, message) else: result = "Данные сохранены" return result
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 create_album(): year = int(request.forms.get("year")) artist = request.forms.get("artist") genre = request.forms.get("genre") album_name = request.forms.get("album") new_album = album.save(year, artist, genre, album_name) logger.info("new row was added: {} - {}".format(new_album.artist, new_album.album)) if isinstance(new_album, album.Album): return redirect("/albums") return new_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_album(): album_data = { "year": request.forms.get("year"), "artist": request.forms.get("artist"), "genre": request.forms.get("genre"), "album": request.forms.get("album") } # проверяем данные пользователя # проверка корректности ввода года if album_data["year"].isdigit() and len(album_data["year"]) == 4: # проверяем наличие такого же альбома в базе same_album = album.find_same_album(album_data["artist"], album_data["album"]) if same_album: print("уже есть") message = "Такой альбом уже присутствует в базе" result = HTTPError(409, message) else: album.save(album_data) result = print("Успешно") else: message = "Некорректный год {}".format(album_data["year"]) result = HTTPError(400, message) return result
def albumspost(): year = request.forms.get("year") artist = request.forms.get("artist") genre = request.forms.get("genre") album1 = request.forms.get("album") try: year = int(year) except ValueError: return HTTPError(400, "Указан некорректный год альбома") albums_list = album.findalbum(album1) if not albums_list: new_album = album.save(year, artist, genre, album1) else: print("Есть такой альбом в базе") return
def make_album(): year = request.forms.get("year") artist = request.forms.get("artist") genre = request.forms.get("genre") album_name = request.forms.get("album") try: year = int(year) except ValueError: return HTTPError(400, "Год альбома введен неверно!") try: new_album = album.save(year, artist, genre, album_name) except AssertionError as err: result = HTTPError(400, str(err)) except album.AlreadyExists as err: result = HTTPError(409, str(err)) else: print("Новый альбом с ID #{} успешно сохранен!".format(new_album.id)) result = "Альбом с ID #{} успешно сохранен".format(new_album.id) return result
def create_album(): year = request.forms.get('year') artist = request.forms.get('artist') genre = request.forms.get('genre') album_name = request.forms.get('album') try: year = int(year) except ValueError: return HTTPError(400, 'Указан некорректный год альбома') try: new_album = album.save(year, artist, genre, album_name) except AssertionError as err: result = HTTPError(400, str(err)) except album.AlreadyExists as err: result = HTTPError(409, str(err)) else: result = 'Альбом #{} успешно сохранен'.format(new_album.id) return result
def create_album(): year = request.forms.get("year") artist = request.forms.get("artist") genre = request.forms.get("genre") album_name = request.forms.get("album") try: year = int(year) except ValueError: return HTTPError(400, "Указан некорректный год альбома") try: new_album = album.save(year, artist, genre, album_name) except AssertionError as err: result = HTTPError(400, str(err)) except album.AlreadyExists as err: result = HTTPError(409, str(err)) else: print("New #{} album successfully saved".format(new_album.id)) result = "Альбом #{} успешно сохранен".format(new_album.id) return result
def create_album(): year = request.forms.get("year") artist = request.forms.get("artist") genre = request.forms.get("genre") album_name = request.forms.get("album") try: year = int(year) except ValueError: return HTTPError(400, "Incorrect year data") try: new_album = album.save(year, artist, genre, album_name) except AssertionError as err: result = HTTPError(400, str(err)) except album.AlreadyExists as err: result = HTTPError(409, str(err)) else: print("New #{} album successfully saved".format(new_album.id)) result = "Album #{} was successfully saved".format(new_album.id) return result
def create_album(): year = request.forms.get("year") artist = request.forms.get("artist") genre = request.forms.get("genre") album_name = request.forms.get("album") try: year = int(year) except ValueError: return HTTPError(400, "Год альбома указан некорректно") try: new_album = album.save(year, artist, genre, album_name) except AssertionError as err: result = HTTPError(400, str(err)) except album.AlreadyExists as err: result = HTTPError(409, str(err)) else: print("Новый альбом {} сохранён в базу данных".format(new_album.album)) result = "Новый альбом {} сохранён в базу данных".format( new_album.album) return result
def artist(): year = request.forms.get("year") artist = request.forms.get("artist") genre = request.forms.get("genre") album_name = request.forms.get("album") try: year = int(year) except ValueError: return HTTPError(400, "Указан некорректный год альбома") try: new_album = album.save(year, artist, genre, album_name) except AssertionError as err: res = HTTPError(400, str(err)) except album.AlreadyExists as err: res = HTTPError(409, str(err)) else: res = "Альбом сохранен" return res resource_path = save_album(al_data) print("User saved at: ", resource_path) return "Данные успешно сохранены"
def new_album(): if request.forms.get("year") is None or request.forms.get( "artist") is None or request.forms.get( "genre") is None or request.forms.get("album") is None: return HTTPError(400, "Некорректные параметры") try: year = int(request.forms.get("year")) except: result = HTTPError(400, "Некорректные параметр - год записи") else: #Считаем год валидным, если это целое между 1000 и 3000 if year > 1000 and year < 3000: album_data = { "artist": request.forms.get("artist"), "genre": request.forms.get("genre"), "album": request.forms.get("album"), "year": int(request.forms.get("year")) } result = album.save(album_data) if result == "Этот альбом уже есть в базе данных": return HTTPError(409, result) return result