def gallerify(id): """ Ads and removes image from gallery """ image = UserImages.get_image(id) if not image: return redirect(url_for("user_images", username=session["user"])) UserImages.gallerify(image) return redirect(url_for("user_images", username=session["user"]))
def delete_image(id): image = UserImages.get_image(id) if not image: abort(404) if image.owner.username != session["user"]: flash("Don't try to delete other\'s dude\'s pictures...dude") return redirect(url_for("index")) else: try: UserImages.delete_image(image) except: error = "Error occured when writing to database" flash(error) return redirect(url_for("index")) if image.imgur_img: resp = ImgurHandler(get_config().imgur_id).delete_image(image.delete_hash) if not resp["success"]: handle_errors(resp) return redirect(url_for("user_images", username=session["user"]))
def delete_image(id): image = UserImages.get_image(id) if not image: abort(404) if image.owner.username != session["user"]: flash("Don't try to delete other\'s dude\'s pictures...dude") return redirect(url_for("index")) else: try: UserImages.delete_image(image) except: error = "Error occured when writing to database" flash(error) return redirect(url_for("index")) if image.imgur_img: resp = ImgurHandler(get_config().imgur_id).delete_image( image.delete_hash) if not resp["success"]: handle_errors(resp) return redirect(url_for("user_images", username=session["user"]))
def user_images(username, page): per_page = settings.get("images_per_page", 10) images = UserImages.get_gallery_images(page=page, per_page=per_page, username=username) show_pagination = images.wrapped_count() > per_page images_uploaded = bool(tuple(images)) if not tuple(images) and page != 1: abort(404) thumbnail_size = settings.get("thumbnail_size", "l") pagination = Pagination(page, per_page, images.wrapped_count()) return render_template("user_images.html", images_uploaded=images_uploaded, pagination=pagination, show_upload_btn=True, thumbnail_size=thumbnail_size, images=images, show_pagination=show_pagination)
def gallery(page): if not get_config().show_gallery: return redirect(url_for("index")) per_page = settings.get("images_per_page", 10) images = UserImages.get_gallery_images(page=page, per_page=per_page, gallery=True) if not tuple(images) and page != 1: abort(404) count = images.wrapped_count() show_pagination = count > per_page thumbnail_size = settings.get("thumbnail_size", "l") images_uploaded = count > 0 pagination = Pagination(page, per_page, count) return render_template("gallery.html", images_uploaded=images_uploaded, pagination=pagination, thumbnail_size=thumbnail_size, images=images, show_pagination=show_pagination)
def test_test_gallery_methods(self): with test_database(db, (Users, UserImages)): Users.create_user(username="******", password="******") user1 = Users.select().get() UserImages.add_image(image_link = self.ADDRESS,\ description = "test",\ is_vertical = True, \ owner = user1,\ imgur_img = False,\ delete_hash = None) image = UserImages.select().get() self.assertFalse(image.gallery) UserImages.gallerify(image) self.assertTrue(image.gallery) UserImages.gallerify(image) self.assertFalse(image.gallery) for num in range(2, 10): UserImages.add_image(image_link = "test image %d" % num,\ description = "test %d" % num,\ owner = user1) self.assertEquals(9, UserImages.get_count()) paginated = UserImages.get_gallery_images(1, 2) self.assertEquals(2, len(tuple(paginated))) self.assertIn(self.ADDRESS, str(tuple(paginated))) self.assertNotIn("test image 3", str(tuple(paginated))) paginated = UserImages.get_gallery_images(5, 2) self.assertIn("test image 9", str(tuple(paginated))) self.assertEquals(1, len(tuple(paginated)))
def test_creating_and_deleting_image(self): with test_database(db, (Users, UserImages)): Users.create_user(username="******", password="******") user1 = Users.select().get() UserImages.add_image(image_link = self.ADDRESS,\ description = "test",\ is_vertical = True, \ owner = user1,\ imgur_img = False,\ delete_hash = None) image = UserImages.select().get() self.assertEquals(self.ADDRESS, image.image_link) self.assertEquals("test", image.description) self.assertEquals(user1, image.owner) UserImages.add_image(image_link = self.ADDRESS,\ description = "test",\ is_vertical = True, \ owner = user1,\ imgur_img = False,\ delete_hash = None) self.assertEquals(2, UserImages.get_count()) self.assertTrue(UserImages.check_exists(self.ADDRESS)) self.assertFalse(UserImages.check_exists(self.ADDRESS + "bam")) image = UserImages.get_image(2) UserImages.delete_image(image) self.assertEquals(1, UserImages.get_count()) image = UserImages.get_image(1) UserImages.delete_image(image) self.assertEquals(0, UserImages.get_count())
def upload_image(): error = None if request.method == "POST": description = request.form.get('description', None) if request.form.get("imgur-img"): image = request.files["image"] if not image: error = "No image chosen" return render_template("upload_image.html", error=error) user_id = get_config().imgur_id extension = split_filename(image.filename, True) if extension not in app.config["ALLOWED_FILENAMES"]: error = "Allowed extensions are %r"\ % (", ".join(app.config["ALLOWED_FILENAMES"])) return render_template("upload_image.html", error=error) filename = secure_filename(image.filename.strip()) user = Users.get_user_by_username(session["user"]) config = dict( image=image, name=filename, description=description) response = ImgurHandler(user_id, config).send_image() if not response["success"]: error = "Error uploading to imgur" return render_template("upload_image.html", error=error) response_data = response["data"] image_link = response_data["link"] is_vertical = response_data["width"] + 10 < response_data["height"] delete_hash = response_data["deletehash"] try: UserImages.add_image(image_link=image_link, description=description, delete_hash=delete_hash, is_vertical=is_vertical, imgur_img=True, owner=user) return redirect(url_for("user_images", username=user.username)) except: error = "Error writing to database" return render_template("upload_image.html", error=error) return render_template("upload_image.html", error=response) elif request.form.get('save-link'): link = request.form.get('image-link', None) if not link: error = "No link given" return render_template("upload_image.html", error=error) user = Users.get_user_by_username(session["user"]) try: UserImages.add_image(image_link=link, description=description, is_vertical=True, imgur_img=False, owner=user) return redirect(url_for("user_images", username=user.username)) except Exception as e: error = "Error writing to database" return render_template("upload_image.html", error=error) else: return render_template("upload_image.html")
def test_test_gallery_methods(self): with test_database(db, (Users, UserImages)): Users.create_user(username = "******", password = "******") user1 = Users.select().get() UserImages.add_image(image_link = self.ADDRESS,\ description = "test",\ is_vertical = True, \ owner = user1,\ imgur_img = False,\ delete_hash = None) image = UserImages.select().get() self.assertFalse(image.gallery) UserImages.gallerify(image) self.assertTrue(image.gallery) UserImages.gallerify(image) self.assertFalse(image.gallery) for num in range(2, 10): UserImages.add_image(image_link = "test image %d" % num,\ description = "test %d" % num,\ owner = user1) self.assertEquals(9, UserImages.get_count()) paginated = UserImages.get_gallery_images(1, 2) self.assertEquals(2, len(tuple(paginated))) self.assertIn(self.ADDRESS, str(tuple(paginated))) self.assertNotIn("test image 3", str(tuple(paginated))) paginated = UserImages.get_gallery_images(5, 2) self.assertIn("test image 9", str(tuple(paginated))) self.assertEquals(1, len(tuple(paginated)))
def test_creating_and_deleting_image(self): with test_database(db, (Users, UserImages)): Users.create_user(username = "******", password = "******") user1 = Users.select().get() UserImages.add_image(image_link = self.ADDRESS,\ description = "test",\ is_vertical = True, \ owner = user1,\ imgur_img = False,\ delete_hash = None) image = UserImages.select().get() self.assertEquals(self.ADDRESS ,image.image_link) self.assertEquals("test", image.description) self.assertEquals(user1, image.owner) UserImages.add_image(image_link = self.ADDRESS,\ description = "test",\ is_vertical = True, \ owner = user1,\ imgur_img = False,\ delete_hash = None) self.assertEquals(2, UserImages.get_count()) self.assertTrue(UserImages.check_exists(self.ADDRESS)) self.assertFalse(UserImages.check_exists(self.ADDRESS + "bam")) image = UserImages.get_image(2) UserImages.delete_image(image) self.assertEquals(1, UserImages.get_count()) image = UserImages.get_image(1) UserImages.delete_image(image) self.assertEquals(0, UserImages.get_count())
def upload_image(): error = None if request.method == "POST": description = request.form.get('description', None) if request.form.get("imgur-img"): image = request.files["image"] if not image: error = "No image chosen" return render_template("upload_image.html", error=error) user_id = get_config().imgur_id extension = split_filename(image.filename, True) if extension not in app.config["ALLOWED_FILENAMES"]: error = "Allowed extensions are %r"\ % (", ".join(app.config["ALLOWED_FILENAMES"])) return render_template("upload_image.html", error=error) filename = secure_filename(image.filename.strip()) user = Users.get_user_by_username(session["user"]) config = dict(image=image, name=filename, description=description) response = ImgurHandler(user_id, config).send_image() if not response["success"]: error = "Error uploading to imgur" return render_template("upload_image.html", error=error) response_data = response["data"] image_link = response_data["link"] is_vertical = response_data["width"] + 10 < response_data["height"] delete_hash = response_data["deletehash"] try: UserImages.add_image(image_link=image_link, description=description, delete_hash=delete_hash, is_vertical=is_vertical, imgur_img=True, owner=user) return redirect(url_for("user_images", username=user.username)) except: error = "Error writing to database" return render_template("upload_image.html", error=error) return render_template("upload_image.html", error=response) elif request.form.get('save-link'): link = request.form.get('image-link', None) if not link: error = "No link given" return render_template("upload_image.html", error=error) user = Users.get_user_by_username(session["user"]) try: UserImages.add_image(image_link=link, description=description, is_vertical=True, imgur_img=False, owner=user) return redirect(url_for("user_images", username=user.username)) except Exception as e: error = "Error writing to database" return render_template("upload_image.html", error=error) else: return render_template("upload_image.html")