Esempio n. 1
0
def photographer_upload():
    # if request method is post
    if request.method == 'POST':
        form = PhotoUploadForm(name=request.form.get("name"),
                               file=request.files.get("file"))
        if form.validate():
            # get the photographer id from the user
            # save the image and link to photographer
            image_file = form.file.data
            photo = Photo(name=form.name.data,
                          photographer_id=current_user.photographer.id,
                          file=image_file.read())
            image = Image.open(image_file)
            file_type = image_file.headers.get("Content-Type")
            photo.add_image_data(*image.size, file_type)
            # save photo to db
            session_object = db_session()
            session_object.add(photo)
            session_object.commit()
            # success message
            flash("Image Uploaded Successfully", "success")
            return redirect(url_for('dashboard'))
        else:
            return render_template('photographer_uploads.html', form=form)
    # if the request is any other than get
    return render_template('photographer_uploads.html', form=PhotoUploadForm())
Esempio n. 2
0
File: main.py Progetto: g----/barca
def admin(category=None):
    form = None
    data = {}

    if session.get('logged_in'):

        data['form'] =  PhotoUploadForm()
        data['categories'] = _get_categories()

        if request.method == 'POST':
            if request.form.get('add-category') is not None:
                title = request.form['title']
                exist = _get_category(urlize(title))

                if exist:
                    flash("Kategorie '%s' uz existuje." % title, 'error')
                else:
                    db.query("""
                        INSERT INTO category (title, url)
                        VALUES (?, ?)
                        """, (title, urlize(title)))

                    db.commit()
                    flash("Category '%s' saved" % title)
                    return redirect(url_for('admin'))
                #endif
            elif request.form.get('crop-photo') is not None:
                form = PhotoUploadForm(request.form)
                if form.validate():
                    photo = request.files.get('photo')
                    category = form.category.data

                    _c = _get_category(category)

                    filename = photos.save(photo, folder=_c['url'], name=app.config['TEMPORARY_FILENAME'])
                    session['photo_filename'] = filename

                    crop_form = PhotoForm()
                    crop_form.title.data = form.title.data
                    crop_form.description.data = form.description.data
                    crop_form.category.data = category
                    crop_form.category_url.data = _c['url']

                    data['form'] = crop_form
                    data['crop'] = True
                    data['filename'] = filename
                else:
                    flash('Form is not valid', 'error')
                    data['form'] = form
                #endif
            elif request.form.get('save-cropped-photo') is not None or request.form.get('save-photo') is not None:
                crop = False
                if request.form.get('save-cropped-photo') is not None:
                    form = PhotoForm(request.form)
                    crop = True
                    category_url = form.category_url.data
                else:
                    form = PhotoUploadForm(request.form)
                    photo = request.files.get('photo')
                    category = form.category.data

                    _c = _get_category(category)
                    category_url = _c['url']

                    filename = photos.save(photo, folder=category_url, name=app.config['TEMPORARY_FILENAME'])
                    session['photo_filename'] = filename
                #endif

                if form.validate():
                    im_path = '%s/%s' % (app.config['UPLOADED_PHOTOS_DEST'], session['photo_filename'])
                    im = PILImage.open(im_path)
                    im = im.copy().convert('RGBA')

                    if crop:
                        try:
                            box = ( int(form.x1.data), int(form.y1.data), int(form.x2.data), int(form.y2.data))
                            cropped = im.crop(box)
                            cropped.thumbnail(app.config['IMAGE_SIZE'], PILImage.ANTIALIAS)
                        except ValueError:
                            # Spadne sem pokud pri save-cropped-photo neni zadan crop
                            # Dopocitat pruhy + resize
                            cropped = save_resized_image(im.copy())
                        #endtry
                    else:
                        # Spadne sem pri save-photo
                        # Dopocitat pruhy + resize
                        cropped = save_resized_image(im.copy())
                    #enddef

                    db.query("""
                        INSERT INTO photo
                            (title, description, category_id)
                        VALUES (?, ?, ?)
                        """, (form.title.data, form.description.data, form.category.data))

                    db.commit()

                    # Save crop
                    new_im_path = '%s/%s/%s.png' % (app.config['UPLOADED_PHOTOS_DEST'], category_url, db.lastrowid)
                    cropped.save(new_im_path)

                    # Cleanup
                    del(session['photo_filename'])
                    os.unlink(im_path)

                    flash('Photo saved.')
                    return redirect(url_for('admin'))
                else:
                    # TODO zachovani dat ve formulari
                    data['form'] = form
                    if crop:
                        data['crop'] = True
                        data['filename'] = session['photo_filename']
                    #endif
                    flash('Cannot save photo.', 'error')
                #endif
            elif request.form.get('delete-photo') is not None:
                photo = request.form.get('delete-photo')
                category = request.form.get('category')

                db.query("""
                    DELETE FROM photo
                    WHERE id = ?
                    """, (photo,))

                db.commit()
                flash('Photo deleted.')
                #data = {}
                #data['edit_category'] = True
                #data['photos'] = _get_photos(category)
                #data['category'] = _get_category(category)
                return redirect(url_for('admin', category=category))
            elif request.form.get('delete-category') is not None:
                category_id = request.form.get('delete-category')
                db.query("""
                    DELETE FROM photo
                    WHERE category_id = ?
                    """, (category_id,))

                db.query("""
                    DELETE FROM category
                    WHERE id = ?
                    """, (category_id,))
                db.commit()

                flash('Category deleted.')
                return redirect(url_for('admin'))
            #endif
        elif category is not None:
            data = {}
            data['edit_category'] = True
            data['photos'] = _get_photos(category)
            data['category'] = _get_category(category)
        #endif
    else:
        data['form'] = LoginForm()
    #endif
    return render_template('admin.html', **data)