Browse Source

Add endpoint to delete entire photo album

pull/2/head
Noah Petherbridge 5 years ago
parent
commit
95da4b19a1
4 changed files with 76 additions and 1 deletions
  1. +21
    -0
      rophako/modules/photo.py
  2. +4
    -1
      rophako/www/photos/album.html
  3. +14
    -0
      rophako/www/photos/delete_album.html
  4. +37
    -0
      scripts/orphaned-photos.py

+ 21
- 0
rophako/modules/photo.py View File

@@ -245,6 +245,27 @@ def arrange_albums():
return template("photos/arrange_albums.html")


@mod.route("/delete_album/<album>", methods=["GET", "POST"])
@login_required
def delete_album(album):
"""Delete an entire album."""
photos = Photo.list_photos(album)
if photos is None:
flash("That album doesn't exist.")
return redirect(url_for(".albums"))

if request.method == "POST":
# Do it.
for photo in photos:
Photo.delete_photo(photo["key"])
flash("The album has been deleted.")
return redirect(url_for(".albums"))

g.info["album"] = album

return template("photos/delete_album.html")


@mod.route("/arrange_photos/<album>", methods=["GET", "POST"])
@login_required
def arrange_photos(album):

+ 4
- 1
rophako/www/photos/album.html View File

@@ -26,7 +26,10 @@

<ul>
<li><a href="{{ url_for('photo.upload') }}">Upload a Photo</a></li>
{% if photos|length > 0 %}<li><a href="{{ url_for('photo.arrange_photos', album=album) }}">Rearrange Photos</a></li>{% endif %}
{% if photos|length > 0 %}
<li><a href="{{ url_for('photo.arrange_photos', album=album) }}">Rearrange Photos</a></li>
<li><a href="{{ url_for('photo.delete_album', album=album) }}">Delete Album</a></li>
{% endif %}
</ul>
{% endif %}


+ 14
- 0
rophako/www/photos/delete_album.html View File

@@ -0,0 +1,14 @@
{% extends "layout.html" %}
{% block title %}Delete Album{% endblock %}
{% block content %}

<h1>Delete Album</h1>

<form name="delete" action="{{ url_for('photo.delete_album', album=album) }}" method="POST">
<input type="hidden" name="token" value="{{ csrf_token() }}">
Are you <strong>sure</strong> you want to delete the album <strong>{{ album }}</strong>?<p>

<button type="submit">Yes, Delete This Album</button>
</form>

{% endblock %}

+ 37
- 0
scripts/orphaned-photos.py View File

@@ -0,0 +1,37 @@
#!/usr/bin/env python

"""Locate any orphaned photos.

Usage: scripts/orphaned-photos.py <path/to/db> <path/to/static/photos>"""

import sys
import os
import codecs
import json
import glob

sys.path.append(".")
import rophako.jsondb as JsonDB

def main():
if len(sys.argv) == 1:
print "Usage: {} <path/to/static/photos>".format(__file__)
sys.exit(1)

photo_root = sys.argv[1]

db = JsonDB.get("photos/index")
photos = set()
for album in db["albums"]:
for key, data in db["albums"][album].iteritems():
for img in ["large", "thumb", "avatar"]:
photos.add(data[img])

# Get all the images and compare.
for img in glob.glob("{}/*.*".format(photo_root)):
fname = img.split("/")[-1]
if not fname in photos:
print "Orphan:", fname

if __name__ == "__main__":
main()

Loading…
Cancel
Save