Removed Exif tags completely from NarrativeWeb.
svn: r13836
This commit is contained in:
parent
1191bb227d
commit
9971a4f1a2
@ -65,13 +65,6 @@ from cStringIO import StringIO
|
|||||||
from textwrap import TextWrapper
|
from textwrap import TextWrapper
|
||||||
from unicodedata import normalize
|
from unicodedata import normalize
|
||||||
|
|
||||||
# attempt to import the python exif library?
|
|
||||||
try:
|
|
||||||
import pyexiv2
|
|
||||||
pyexiftaglib = True
|
|
||||||
except ImportError:
|
|
||||||
pyexiftaglib = False
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Set up logging
|
# Set up logging
|
||||||
@ -115,6 +108,10 @@ from libhtml import Html
|
|||||||
# import styled notes from
|
# import styled notes from
|
||||||
# src/plugins/lib/libhtmlbackend.py
|
# src/plugins/lib/libhtmlbackend.py
|
||||||
from libhtmlbackend import HtmlBackend
|
from libhtmlbackend import HtmlBackend
|
||||||
|
|
||||||
|
# if the pyexiv2 library is installed, look for libexiftags
|
||||||
|
# from src/plugins/lib/libexiftags.py
|
||||||
|
from libexiftags import ExifKeyTags
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# constants
|
# constants
|
||||||
@ -310,10 +307,6 @@ class BasePage(object):
|
|||||||
self.create_media = report.options['gallery']
|
self.create_media = report.options['gallery']
|
||||||
self.inc_events = report.options['inc_events']
|
self.inc_events = report.options['inc_events']
|
||||||
|
|
||||||
# only show option if the pyexiv2 library is available on local system
|
|
||||||
if pyexiftaglib:
|
|
||||||
self.exiftagsopt = report.options['exiftagsopt']
|
|
||||||
|
|
||||||
def dump_attribute(self, attr, showsrc):
|
def dump_attribute(self, attr, showsrc):
|
||||||
"""
|
"""
|
||||||
dump attribute for object presented in display_attr_list()
|
dump attribute for object presented in display_attr_list()
|
||||||
@ -826,7 +819,7 @@ class BasePage(object):
|
|||||||
|
|
||||||
# begin attributes division and section title
|
# begin attributes division and section title
|
||||||
with Html("div", class_ = "ubsection", id = "attributes") as section:
|
with Html("div", class_ = "ubsection", id = "attributes") as section:
|
||||||
section += Html("h4", _("Attributes"), inline = True)
|
section += Html("h4", AHEAD, inline = True)
|
||||||
|
|
||||||
# begin attributes table
|
# begin attributes table
|
||||||
with Html("table", class_ = "infolist attrlist") as table:
|
with Html("table", class_ = "infolist attrlist") as table:
|
||||||
@ -2307,7 +2300,7 @@ class EventListPage(BasePage):
|
|||||||
body += eventlist
|
body += eventlist
|
||||||
|
|
||||||
msg = _("This page contains an index of all the events in the database, sorted by their "
|
msg = _("This page contains an index of all the events in the database, sorted by their "
|
||||||
"type, Gramps id, and date (if one is present), Clicking on an "
|
"type, date (if one is present), and gramps id, Clicking on an "
|
||||||
"event’s Gramps ID will load a page for that event.")
|
"event’s Gramps ID will load a page for that event.")
|
||||||
eventlist += Html("p", msg, id = "description")
|
eventlist += Html("p", msg, id = "description")
|
||||||
|
|
||||||
@ -2626,19 +2619,19 @@ class MediaPage(BasePage):
|
|||||||
if next:
|
if next:
|
||||||
medianav += self.media_nav_link(next, _("Next"), True)
|
medianav += self.media_nav_link(next, _("Next"), True)
|
||||||
|
|
||||||
# missing media error msg
|
# missing media error message
|
||||||
errormsg = _("The file has been moved or deleted.")
|
errormsg = _("The file has been moved or deleted.")
|
||||||
missingimage = Html("span", errormsg, class_ = "MissingImage")
|
|
||||||
|
|
||||||
# begin summaryarea division
|
# begin summaryarea division
|
||||||
with Html("div", id = "summaryarea") as summaryarea:
|
with Html("div", id = "summaryarea") as summaryarea:
|
||||||
mediadetail += summaryarea
|
mediadetail += summaryarea
|
||||||
if mime_type:
|
if mime_type:
|
||||||
if mime_type.startswith("image/"):
|
if mime_type.startswith("image"):
|
||||||
if not target_exists:
|
if not target_exists:
|
||||||
with Html("div", id = "MediaDisplay") as mediadisplay:
|
with Html("div", id = "MediaDisplay") as mediadisplay:
|
||||||
summaryarea += mediadisplay
|
summaryarea += mediadisplay
|
||||||
mediadisplay += missingimage
|
mediadisplay += Html("span", errormsg, class_ = "MissingImage")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Check how big the image is relative to the requested 'initial'
|
# Check how big the image is relative to the requested 'initial'
|
||||||
# image size. If it's significantly bigger, scale it down to
|
# image size. If it's significantly bigger, scale it down to
|
||||||
@ -2686,13 +2679,13 @@ class MediaPage(BasePage):
|
|||||||
# Feature #2634; display the mouse-selectable regions.
|
# Feature #2634; display the mouse-selectable regions.
|
||||||
# See the large block at the top of this function where
|
# See the large block at the top of this function where
|
||||||
# the various regions are stored in _region_items
|
# the various regions are stored in _region_items
|
||||||
if len(_region_items):
|
if _region_items:
|
||||||
ordered = Html("ol", class_ = "RegionBox")
|
ordered = Html("ol", class_ = "RegionBox")
|
||||||
mediadisplay += ordered
|
mediadisplay += ordered
|
||||||
while len(_region_items) > 0:
|
while len(_region_items) > 0:
|
||||||
(name, x, y, w, h, linkurl) = _region_items.pop()
|
(name, x, y, w, h, linkurl) = _region_items.pop()
|
||||||
ordered += Html("li", style = "left:%d%%; top:%d%%; width:%d%%; height:%d%%;"
|
ordered += Html("li", style = "left:%d%%; top:%d%%; width:%d%%; height:%d%%;"
|
||||||
% (x, y, w, h)) +(
|
% (x, y, w, h)) + (
|
||||||
Html("a", name, href = linkurl)
|
Html("a", name, href = linkurl)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2733,7 +2726,7 @@ class MediaPage(BasePage):
|
|||||||
)
|
)
|
||||||
mediadisplay += hyper
|
mediadisplay += hyper
|
||||||
else:
|
else:
|
||||||
mediadisplay += missingimage
|
mediadisplay += Html("span", errormsg, class_ = "MissingImage")
|
||||||
else:
|
else:
|
||||||
with Html("div", id = "GalleryDisplay") as mediadisplay:
|
with Html("div", id = "GalleryDisplay") as mediadisplay:
|
||||||
summaryarea += mediadisplay
|
summaryarea += mediadisplay
|
||||||
@ -2774,39 +2767,6 @@ class MediaPage(BasePage):
|
|||||||
)
|
)
|
||||||
table += trow
|
table += trow
|
||||||
|
|
||||||
# display image Exif tags/ keys if any?
|
|
||||||
if pyexiftaglib:
|
|
||||||
if self.exiftagsopt and mime_type.startswith("image/"):
|
|
||||||
|
|
||||||
# if the pyexiv2 library is installed, then show if the option has been set,
|
|
||||||
# yes, then use it and determine if the image has anything written inside of it?
|
|
||||||
image = pyexiv2.Image("%s" % Utils.media_path_full(db, media.get_path()) )
|
|
||||||
image.readMetadata()
|
|
||||||
|
|
||||||
# exif data does exists
|
|
||||||
if len(image.exifKeys() ):
|
|
||||||
|
|
||||||
# initialize the dictionary for holding the image exif tags
|
|
||||||
imagetags = []
|
|
||||||
|
|
||||||
# add exif title header
|
|
||||||
mediadetail += Html("h4", _("Image Exif Tags/ Keys"), inline = True)
|
|
||||||
|
|
||||||
# begin exif table
|
|
||||||
with Html("table", class_ = "exifdata") as table:
|
|
||||||
mediadetail += table
|
|
||||||
|
|
||||||
for keytag in image.exifKeys():
|
|
||||||
if keytag not in imagetags:
|
|
||||||
trow = Html("tr") + (
|
|
||||||
Html("td", keytag, class_ = "ColumnAttribute"),
|
|
||||||
Html("td", image[keytag], class_ = "ColumnValue")
|
|
||||||
)
|
|
||||||
table += trow
|
|
||||||
imagetags.append(keytag)
|
|
||||||
|
|
||||||
##################### End of Exif Tags #####################################################
|
|
||||||
|
|
||||||
# get media notes
|
# get media notes
|
||||||
notelist = self.display_note_list(media.get_note_list() )
|
notelist = self.display_note_list(media.get_note_list() )
|
||||||
if notelist is not None:
|
if notelist is not None:
|
||||||
@ -4980,10 +4940,6 @@ class NavWebReport(Report):
|
|||||||
self.inc_contact = self.options['contactnote'] or \
|
self.inc_contact = self.options['contactnote'] or \
|
||||||
self.options['contactimg']
|
self.options['contactimg']
|
||||||
|
|
||||||
# only show option if the pyexiv2 library is available on local system
|
|
||||||
if pyexiftaglib:
|
|
||||||
self.exiftagsopt = self.options["exiftagsopt"]
|
|
||||||
|
|
||||||
# name format option
|
# name format option
|
||||||
self.name_format = self.options['name_format']
|
self.name_format = self.options['name_format']
|
||||||
|
|
||||||
@ -5327,6 +5283,27 @@ class NavWebReport(Report):
|
|||||||
PlacePage(self, self.title, place, source_list, place_list)
|
PlacePage(self, self.title, place, source_list, place_list)
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
|
|
||||||
|
def get_event_handles(self, db, ind_list):
|
||||||
|
"""
|
||||||
|
creates a list of event handles for this database
|
||||||
|
"""
|
||||||
|
|
||||||
|
event_handle_list = []
|
||||||
|
for person_handle in ind_list:
|
||||||
|
person = db.get_person_from_handle(person_handle)
|
||||||
|
|
||||||
|
for evt_ref in person.get_event_ref_list():
|
||||||
|
event_handle_list.append(evt_ref.ref)
|
||||||
|
|
||||||
|
for fhandle in person.get_family_handle_list():
|
||||||
|
family = db.get_family_from_handle(fhandle)
|
||||||
|
|
||||||
|
for evt_ref in family.get_event_ref_list():
|
||||||
|
event_handle_list.append(evt_ref.ref)
|
||||||
|
|
||||||
|
# return event_handle_list to its caller
|
||||||
|
return event_handle_list
|
||||||
|
|
||||||
def event_pages(self, ind_list):
|
def event_pages(self, ind_list):
|
||||||
"""
|
"""
|
||||||
a dump of all the events sorted by event type, date, and surname
|
a dump of all the events sorted by event type, date, and surname
|
||||||
@ -5341,6 +5318,9 @@ class NavWebReport(Report):
|
|||||||
# gather the information that we will need for these two classes
|
# gather the information that we will need for these two classes
|
||||||
event_types = []
|
event_types = []
|
||||||
|
|
||||||
|
# get the event handle list for this database
|
||||||
|
event_handle_list = self.get_event_handles(db, ind_list)
|
||||||
|
|
||||||
for event_handle in event_handle_list:
|
for event_handle in event_handle_list:
|
||||||
event = self.database.get_event_from_handle(event_handle)
|
event = self.database.get_event_from_handle(event_handle)
|
||||||
event_types.append( str(event.type) )
|
event_types.append( str(event.type) )
|
||||||
@ -5785,12 +5765,6 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
menu.add_option(category_name, 'gallery', self.__gallery)
|
menu.add_option(category_name, 'gallery', self.__gallery)
|
||||||
self.__gallery.connect('value-changed', self.__gallery_changed)
|
self.__gallery.connect('value-changed', self.__gallery_changed)
|
||||||
|
|
||||||
self.__exiftags = BooleanOption(_("Include exif tags on media pages?"), False)
|
|
||||||
self.__exiftags.set_help(_("Do you want to add the exif data tags to the page? You will"
|
|
||||||
" need to have the pyexiv2 library installed on your system."
|
|
||||||
"It can be downloaded and installed from most linux repositories."))
|
|
||||||
menu.add_option(category_name, "exiftagsopt", self.__exiftags)
|
|
||||||
|
|
||||||
self.__maxinitialimagewidth = NumberOption(_("Max width of initial image"),
|
self.__maxinitialimagewidth = NumberOption(_("Max width of initial image"),
|
||||||
_DEFAULT_MAX_IMG_WIDTH, 0, 2000)
|
_DEFAULT_MAX_IMG_WIDTH, 0, 2000)
|
||||||
self.__maxinitialimagewidth.set_help(_("This allows you to set the maximum width "
|
self.__maxinitialimagewidth.set_help(_("This allows you to set the maximum width "
|
||||||
@ -5990,21 +5964,10 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
Handles the changing nature of gallery
|
Handles the changing nature of gallery
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not pyexiftaglib:
|
|
||||||
self.__exiftags.set_available(False)
|
|
||||||
|
|
||||||
if self.__gallery.get_value() == False:
|
if self.__gallery.get_value() == False:
|
||||||
|
|
||||||
# disable option if pyexiv2 library is not installed on system ...
|
|
||||||
if pyexiftaglib:
|
|
||||||
self.__exiftags.set_available(False)
|
|
||||||
self.__maxinitialimagewidth.set_available(False)
|
self.__maxinitialimagewidth.set_available(False)
|
||||||
self.__maxinitialimageheight.set_available(False)
|
self.__maxinitialimageheight.set_available(False)
|
||||||
else:
|
else:
|
||||||
|
|
||||||
# disable option if pyexiv2 library is not installed on system ...
|
|
||||||
if pyexiftaglib:
|
|
||||||
self.__exiftags.set_available(True)
|
|
||||||
self.__maxinitialimagewidth.set_available(True)
|
self.__maxinitialimagewidth.set_available(True)
|
||||||
self.__maxinitialimageheight.set_available(True)
|
self.__maxinitialimageheight.set_available(True)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user