示例#1
0
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)
                           )
示例#2
0
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)