Beispiel #1
0
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)
Beispiel #2
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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г!(в этом году была осуществлена самая первая аудиозапись в мире!)"
Beispiel #10
0
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)
Beispiel #12
0
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
Beispiel #14
0
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
Beispiel #15
0
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
Beispiel #16
0
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
Beispiel #18
0
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
Beispiel #19
0
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 "Данные успешно сохранены"
Beispiel #20
0
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