def tag_picture(picture_name, tag_person=None): if len(request.args.viewkeys()) > 0: if "all" in request.args: database.alter_picture(g.db, picture_name, public=True) else: database.alter_picture(g.db, picture_name, public=False) if "persons" in request.args: old_persons = set(map(lambda x: x["name"], database.get_all_persons_on_picture(g.db, picture_name))) new_persons = set(filter(lambda x: len(x)>0, map(lambda x: x.strip(), request.args["persons"].splitlines()))) added_persons = new_persons - old_persons deleted_persons = old_persons - new_persons for person in added_persons: database.add_person(g.db, person) database.connect_person_with_picture(g.db, picture_name, person) for person in deleted_persons: database.unconnect_person_from_picture(g.db, picture_name, person) if len(database.get_all_pictures_of_a_person(g.db, person)) < 1: database.delete_person(g.db, person) if "action" in request.args: prev, next = database.get_prev_and_next_picture_name(g.db, picture_name, tag_person) new_name = picture_name if request.args["action"] == "next": new_name = next if request.args["action"] == "prev": new_name = prev if new_name is None: if tag_person is not None: return redirect("/private-pictures/"+str(tag_person)) else: return redirect("/tag") if tag_person is not None: return redirect("/tag/"+str(tag_person)+"/"+new_name) else: return redirect("/tag/"+new_name) stored_picture_data = database.get_picture_data(g.db, picture_name) persons_on_picture = map(lambda x: x["name"], database.get_all_persons_on_picture(g.db, picture_name)) return render_template("tag.html", picture_path = os.path.join("/pictures", picture_name), picture_name = picture_name, checked=stored_picture_data["public_viewable"], persons = "\n".join(persons_on_picture) )
def get_private_pictures(person): pictures = database.get_all_pictures_of_a_person(g.db, person) return render_template("private.html", pictures=pictures, person=person)