예제 #1
0
def files_upload():
    if request.method == 'GET':
        return render_template('upload.html')
    elif request.method == 'POST':
        import os

        upload_files = request.files.getlist('files[]')
        upload_file_type = request.values['type']
        if upload_file_type == "" or upload_file_type is None:
            return unprocessable_entry("type is required parameters")
        return_json = []


        for upload_file in upload_files:
            file_name = secure_filename(upload_file.filename)

            if file_name == "":
                return unprocessable_entry("file name are required parameters")

            #확장자 변경
            file_name_list = file_name.split(".")
            if file_name_list[-1] == "jpg-original":
                file_name_list[-1] = "jpg"
            file_type = file_name_list[-1]
            #파일 중복 확인
            files_count = db_session.query(File).filter(File.file_name == file_name).count()

            if files_count > 0:
                file_name_list[-2] = file_name_list[-2]+"_"+str(files_count)
            file_name = ".".join(file_name_list)
            print(UPLOAD_FOLDER+"/"+upload_file_type+"/"+file_name)
            #파일 저장
            file_path = UPLOAD_FOLDER+"/"+upload_file_type+"/"+file_name
            upload_file.save(os.path.join(file_path))

            #파일 사이즈
            file_size = os.path.getsize(file_path)

            new_file = File(file_name, file_type, file_size/1024.0, request.host_url[:-1]+file_path[1:],
                            upload_file_type)
            db_session.add(new_file)

            try:
                db_session.commit()
                data = new_file.to_json()
                data['href'] = request.host_url[:-1] + url_for('files_api.files_detail', file_id=new_file.id)
                return_json.append(data)

            except Exception:
                return unprocessable_entry("file should")


        return render_template('upload.html')
예제 #2
0
 def filter_by_order(cls, query, order):
     if not order in ['desc', 'asc']:
         return None, unprocessable_entry(
             "order parameter invalid, try desc or asc")
     if order == 'desc':
         return query.order_by(-cls.year), None
     return query.order_by(cls.year), None
예제 #3
0
def create_new_image(database, artist=None, **params):
    new_image = Image(artist=artist, **params)
    database.session.add(new_image)
    try:
        database.session.commit()
        data = new_image.to_json_with_detail
        return created_response(data)
    except Exception:
        return unprocessable_entry("title, image_url, image_description should be string, year should be integer")
예제 #4
0
def create_new_artist(database, **params):
    new_artist = Artist(**params)
    database.session.add(new_artist)
    try:
        database.session.commit()
        data = new_artist.to_json_with_detail
        return created_response(data)
    except Exception:
        return unprocessable_entry("name, country, genre should be string, birth_year, death_year should be integer")
예제 #5
0
def images_list_post():
    required_params = [
        'title', 'image_url', 'image_year', 'artist_name', 'image_description'
    ]
    params = {
        param: request.values[param]
        for param in request.values if param in required_params
        if nullify(request.values[param])
    }
    if len(params) != len(required_params):
        return unprocessable_entry(
            "title, image_url, image_year, artist_name, image_description are required parameters"
        )
    artist = Artist.query.filter(Artist.name == params['artist_name']).first()
    if not artist:
        return unprocessable_entry(
            "artist_name not found, artist_name should be in our artists database to add new image."
        )
    return create_new_image(db, artist=artist, **params)
예제 #6
0
def artists_list_post():
    input_params = ['name', 'country', 'genre', 'birth_year', 'death_year']
    params = {
        param: request.values[param]
        for param in request.values if param in input_params
        if nullify(request.values[param])
    }
    if not ('name' in params and 'country' in params and 'genre' in params):
        return unprocessable_entry(
            "name, country, genre are required parameters")
    return create_new_artist(db, **params)
예제 #7
0
def create_new_artist(database, **params):
    new_artist = Artist(**params)
    database.session.add(new_artist)
    try:
        database.session.commit()
        data = new_artist.to_json_with_detail
        return created_response(data)
    except Exception:
        return unprocessable_entry(
            "name, country, genre should be string, birth_year, death_year should be integer"
        )
예제 #8
0
def artists_list_post():
    input_params = ['name', 'country', 'genre', 'birth_year', 'death_year']
    params = {
        param: request.values[param]
        for param in request.values
        if param in input_params
        if nullify(request.values[param])
    }
    if not ('name' in params and 'country' in params and 'genre' in params):
        return unprocessable_entry("name, country, genre are required parameters")
    return create_new_artist(db, **params)
예제 #9
0
 def filter_by_order(cls, query, order): 
     if not order in ['desc', 'asc']:
         return None, unprocessable_entry("order parameter invalid, try desc or asc")
     if order == 'desc':
         return query.order_by(-cls.year), None
     return query.order_by(cls.year), None