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())
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)