Eliminated function to set div id for class content.
Moved some functions around to classes where they are used. * src/plugins/NarrativeWeb.py svn: r10431
This commit is contained in:
parent
0cc320ac90
commit
d5962794fa
@ -48,7 +48,7 @@ import shutil
|
|||||||
import codecs
|
import codecs
|
||||||
import tarfile
|
import tarfile
|
||||||
import operator
|
import operator
|
||||||
from gettext import gettext as _
|
from TransUtils import sgettext as _
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
from textwrap import TextWrapper
|
from textwrap import TextWrapper
|
||||||
from unicodedata import normalize
|
from unicodedata import normalize
|
||||||
@ -213,6 +213,11 @@ def html_escape(text):
|
|||||||
return ''.join([html_escape_table.get(c, c) for c in text])
|
return ''.join([html_escape_table.get(c, c) for c in text])
|
||||||
|
|
||||||
|
|
||||||
|
def name_to_md5(text):
|
||||||
|
"""This creates an MD5 hex string to be used as filename."""
|
||||||
|
return md5.new(text).hexdigest()
|
||||||
|
|
||||||
|
|
||||||
class BasePage:
|
class BasePage:
|
||||||
"""
|
"""
|
||||||
This the base class to write certain HTML pages.
|
This the base class to write certain HTML pages.
|
||||||
@ -247,10 +252,6 @@ class BasePage:
|
|||||||
self.linkhome = options['linkhome']
|
self.linkhome = options['linkhome']
|
||||||
self.use_gallery = options['gallery']
|
self.use_gallery = options['gallery']
|
||||||
|
|
||||||
def lnkfmt(self, text):
|
|
||||||
"""This creates an MD5 hex string to be used as filename."""
|
|
||||||
return md5.new(text).hexdigest()
|
|
||||||
|
|
||||||
def display_footer(self, of):
|
def display_footer(self, of):
|
||||||
of.write('</div>\n\n') # Terminate div_content
|
of.write('</div>\n\n') # Terminate div_content
|
||||||
|
|
||||||
@ -357,7 +358,10 @@ class BasePage:
|
|||||||
of.write('\t</ol>\n')
|
of.write('\t</ol>\n')
|
||||||
of.write('</div>\n\n')
|
of.write('</div>\n\n')
|
||||||
|
|
||||||
self.start_div_content(of, self.report.cur_fname, content_divid)
|
divid = ''
|
||||||
|
if content_divid:
|
||||||
|
divid = ' id="%s"' % content_divid
|
||||||
|
of.write('<div%s class="content">\n' % divid)
|
||||||
|
|
||||||
def display_nav_links(self, of, currentsection):
|
def display_nav_links(self, of, currentsection):
|
||||||
navs = [
|
navs = [
|
||||||
@ -379,47 +383,6 @@ class BasePage:
|
|||||||
url = '/'.join(['..']*3 + [url])
|
url = '/'.join(['..']*3 + [url])
|
||||||
self.display_nav_link(of, url, nav_text, currentsection)
|
self.display_nav_link(of, url, nav_text, currentsection)
|
||||||
|
|
||||||
def start_div_content(self, of, fname, content_divid=None):
|
|
||||||
"""
|
|
||||||
Give unique ID to 'content' div for styling specific sections separately.
|
|
||||||
Because of how this script was originally written, the appropriate section
|
|
||||||
ID is determined by looking for a directory or HTML file name to associate
|
|
||||||
with that section.
|
|
||||||
|
|
||||||
Note. The divid for the content is determined by the caller of display_header.
|
|
||||||
"""
|
|
||||||
|
|
||||||
if content_divid:
|
|
||||||
divid = content_divid
|
|
||||||
elif "index" in fname:
|
|
||||||
divid = "Home"
|
|
||||||
elif "introduction" in fname:
|
|
||||||
divid = "Introduction"
|
|
||||||
elif "surnames" in fname:
|
|
||||||
divid = "Surnames"
|
|
||||||
elif "ppl" in fname:
|
|
||||||
divid = "IndividualDetail"
|
|
||||||
elif "sources" in fname:
|
|
||||||
divid = "Sources"
|
|
||||||
elif "src" in fname:
|
|
||||||
divid = "SourceDetail"
|
|
||||||
elif "plc" in fname:
|
|
||||||
divid = "PlaceDetail"
|
|
||||||
elif "gallery" in fname:
|
|
||||||
divid = "Gallery"
|
|
||||||
elif "img" in fname:
|
|
||||||
divid = "GalleryDetail"
|
|
||||||
elif "download" in fname:
|
|
||||||
divid = "Download"
|
|
||||||
elif "contact" in fname:
|
|
||||||
divid = "Contact"
|
|
||||||
else:
|
|
||||||
divid = ''
|
|
||||||
|
|
||||||
if divid:
|
|
||||||
divid = ' id="%s"' % divid
|
|
||||||
of.write('<div%s class="content">\n' % divid)
|
|
||||||
|
|
||||||
# TODO. Move this logic to a higher level (caller of display_header).
|
# TODO. Move this logic to a higher level (caller of display_header).
|
||||||
|
|
||||||
# Define 'currentsection' to correctly set navlink item CSS id
|
# Define 'currentsection' to correctly set navlink item CSS id
|
||||||
@ -496,9 +459,11 @@ class BasePage:
|
|||||||
of.write('\t<div id="indivgallery" class="subsection">\n')
|
of.write('\t<div id="indivgallery" class="subsection">\n')
|
||||||
of.write('\t\t<h4>%s</h4>\n' % _('Gallery'))
|
of.write('\t\t<h4>%s</h4>\n' % _('Gallery'))
|
||||||
for mediaref in photolist:
|
for mediaref in photolist:
|
||||||
|
|
||||||
photo_handle = mediaref.get_reference_handle()
|
photo_handle = mediaref.get_reference_handle()
|
||||||
photo = db.get_object_from_handle(photo_handle)
|
photo = db.get_object_from_handle(photo_handle)
|
||||||
mime_type = photo.get_mime_type()
|
mime_type = photo.get_mime_type()
|
||||||
|
|
||||||
title = photo.get_description()
|
title = photo.get_description()
|
||||||
if title == "":
|
if title == "":
|
||||||
title = "(untitled)"
|
title = "(untitled)"
|
||||||
@ -667,24 +632,6 @@ class BasePage:
|
|||||||
of.write(' <span class="grampsid">[%s]</span>' % gid)
|
of.write(' <span class="grampsid">[%s]</span>' % gid)
|
||||||
of.write('</a>')
|
of.write('</a>')
|
||||||
|
|
||||||
def surname_link(self, of, name, opt_val=None, up=False):
|
|
||||||
url = self.report.build_url_fname_html(self.lnkfmt(name), 'srn', up)
|
|
||||||
of.write('<a href="%s">%s' % (url, name))
|
|
||||||
if opt_val != None:
|
|
||||||
of.write(' (%d)' % opt_val)
|
|
||||||
of.write('</a>')
|
|
||||||
|
|
||||||
def galleryNav_link(self, of, handle, name, up=False):
|
|
||||||
# TODO. Check name, if it already has extension
|
|
||||||
url = self.report.build_url_fname(handle, 'img', up)
|
|
||||||
of.write('<a id="%s" href="%s">%s</a>' % (html_escape(name), url, html_escape(name)))
|
|
||||||
|
|
||||||
def media_ref_link(self, of, handle, name, up=False):
|
|
||||||
# TODO. Check name, if it already has extension
|
|
||||||
# TODO. Combine with galleryNav_link
|
|
||||||
url = self.report.build_url_fname(handle, 'img', up)
|
|
||||||
of.write('<a href="%s">%s</a>' % (url, html_escape(name)))
|
|
||||||
|
|
||||||
# TODO. Check img_url of callers
|
# TODO. Check img_url of callers
|
||||||
def media_link(self, of, handle, img_url, name, up, usedescr=True):
|
def media_link(self, of, handle, img_url, name, up, usedescr=True):
|
||||||
url = self.report.build_url_fname(handle, 'img', up)
|
url = self.report.build_url_fname(handle, 'img', up)
|
||||||
@ -781,7 +728,7 @@ class IndividualListPage(BasePage):
|
|||||||
# surname column
|
# surname column
|
||||||
if first:
|
if first:
|
||||||
of.write('\t\t<tr class="BeginSurname">\n')
|
of.write('\t\t<tr class="BeginSurname">\n')
|
||||||
of.write('\t\t\t<td class="ColumnSurname"><a name="%s">%s</a>' % (self.lnkfmt(surname), surname))
|
of.write('\t\t\t<td class="ColumnSurname"><a name="%s">%s</a>' % (name_to_md5(surname), surname))
|
||||||
else:
|
else:
|
||||||
of.write('\t\t<tr>\n')
|
of.write('\t\t<tr>\n')
|
||||||
of.write('\t\t\t<td class="ColumnSurname"> ')
|
of.write('\t\t\t<td class="ColumnSurname"> ')
|
||||||
@ -880,7 +827,7 @@ class SurnamePage(BasePage):
|
|||||||
BasePage.__init__(self, report, title)
|
BasePage.__init__(self, report, title)
|
||||||
|
|
||||||
db = report.database
|
db = report.database
|
||||||
of = self.report.create_file(self.lnkfmt(surname), 'srn')
|
of = self.report.create_file(name_to_md5(surname), 'srn')
|
||||||
self.up = True
|
self.up = True
|
||||||
self.display_header(of, "%s - %s" % (_('Surname'), surname), content_divid='SurnameDetail')
|
self.display_header(of, "%s - %s" % (_('Surname'), surname), content_divid='SurnameDetail')
|
||||||
|
|
||||||
@ -1075,7 +1022,7 @@ class PlacePage(BasePage):
|
|||||||
of = self.report.create_file(place.get_handle(), 'plc')
|
of = self.report.create_file(place.get_handle(), 'plc')
|
||||||
self.up = True
|
self.up = True
|
||||||
self.page_title = ReportUtils.place_name(db, place_handle)
|
self.page_title = ReportUtils.place_name(db, place_handle)
|
||||||
self.display_header(of, "%s - %s" % (_('Places'), self.page_title))
|
self.display_header(of, "%s - %s" % (_('Places'), self.page_title), content_divid='PlaceDetail')
|
||||||
|
|
||||||
media_list = place.get_media_list()
|
media_list = place.get_media_list()
|
||||||
self.display_first_image_as_thumbnail(of, media_list)
|
self.display_first_image_as_thumbnail(of, media_list)
|
||||||
@ -1157,7 +1104,7 @@ class MediaPage(BasePage):
|
|||||||
|
|
||||||
self.copy_thumbnail(handle, photo)
|
self.copy_thumbnail(handle, photo)
|
||||||
self.page_title = photo.get_description()
|
self.page_title = photo.get_description()
|
||||||
self.display_header(of, "%s - %s" % (_('Gallery'), self.page_title))
|
self.display_header(of, "%s - %s" % (_('Gallery'), self.page_title), content_divid='GalleryDetail')
|
||||||
|
|
||||||
of.write('\t<h2>%s:</h2>\n' % _('Gallery'))
|
of.write('\t<h2>%s:</h2>\n' % _('Gallery'))
|
||||||
|
|
||||||
@ -1276,6 +1223,11 @@ class MediaPage(BasePage):
|
|||||||
self.display_footer(of)
|
self.display_footer(of)
|
||||||
self.report.close_file(of)
|
self.report.close_file(of)
|
||||||
|
|
||||||
|
def galleryNav_link(self, of, handle, name, up=False):
|
||||||
|
# TODO. Check name, if it already has extension
|
||||||
|
url = self.report.build_url_fname(handle, 'img', up)
|
||||||
|
of.write('<a id="%s" href="%s">%s</a>' % (html_escape(name), url, html_escape(name)))
|
||||||
|
|
||||||
def display_media_sources(self, of, photo):
|
def display_media_sources(self, of, photo):
|
||||||
for sref in photo.get_source_references():
|
for sref in photo.get_source_references():
|
||||||
self.bibli.add_reference(sref)
|
self.bibli.add_reference(sref)
|
||||||
@ -1334,7 +1286,7 @@ class MediaPage(BasePage):
|
|||||||
else:
|
else:
|
||||||
from_path = os.path.join(const.IMAGE_DIR, "document.png")
|
from_path = os.path.join(const.IMAGE_DIR, "document.png")
|
||||||
|
|
||||||
# FIXME. Why not use copy_file()?
|
# FIXME. Why not use store_file()?
|
||||||
if self.report.archive:
|
if self.report.archive:
|
||||||
self.report.archive.add(from_path, to_path)
|
self.report.archive.add(from_path, to_path)
|
||||||
else:
|
else:
|
||||||
@ -1356,11 +1308,11 @@ class SurnameListPage(BasePage):
|
|||||||
db = report.database
|
db = report.database
|
||||||
if order_by == self.ORDER_BY_NAME:
|
if order_by == self.ORDER_BY_NAME:
|
||||||
of = self.report.create_file(filename)
|
of = self.report.create_file(filename)
|
||||||
self.display_header(of, _('Surnames'))
|
self.display_header(of, _('Surnames'), content_divid='Surnames')
|
||||||
of.write('\t<h2>%s</h2>\n' % _('Surnames'))
|
of.write('\t<h2>%s</h2>\n' % _('Surnames'))
|
||||||
else:
|
else:
|
||||||
of = self.report.create_file("surnames_count")
|
of = self.report.create_file("surnames_count")
|
||||||
self.display_header(of, _('Surnames by person count'))
|
self.display_header(of, _('Surnames by person count'), content_divid='Surnames')
|
||||||
of.write('\t<h2>%s</h2>\n' % _('Surnames by person count'))
|
of.write('\t<h2>%s</h2>\n' % _('Surnames by person count'))
|
||||||
|
|
||||||
of.write('\t<p id="description">%s</p>\n' % _(
|
of.write('\t<p id="description">%s</p>\n' % _(
|
||||||
@ -1415,13 +1367,13 @@ class SurnameListPage(BasePage):
|
|||||||
of.write('\t\t<tr class="BeginLetter">\n')
|
of.write('\t\t<tr class="BeginLetter">\n')
|
||||||
of.write('\t\t\t<td class="ColumnLetter">%s</td>\n' % last_letter)
|
of.write('\t\t\t<td class="ColumnLetter">%s</td>\n' % last_letter)
|
||||||
of.write('\t\t\t<td class="ColumnSurname">')
|
of.write('\t\t\t<td class="ColumnSurname">')
|
||||||
self.surname_link(of, surname)
|
self.surname_link(of, name_to_md5(surname), surname)
|
||||||
of.write('</td>\n')
|
of.write('</td>\n')
|
||||||
elif surname != last_surname:
|
elif surname != last_surname:
|
||||||
of.write('\t\t<tr>\n')
|
of.write('\t\t<tr>\n')
|
||||||
of.write('\t\t\t<td class="ColumnLetter"> </td>\n')
|
of.write('\t\t\t<td class="ColumnLetter"> </td>\n')
|
||||||
of.write('\t\t\t<td class="ColumnSurname">')
|
of.write('\t\t\t<td class="ColumnSurname">')
|
||||||
self.surname_link(of, surname)
|
self.surname_link(of, name_to_md5(surname), surname)
|
||||||
of.write('</td>\n')
|
of.write('</td>\n')
|
||||||
last_surname = surname
|
last_surname = surname
|
||||||
of.write('\t\t\t<td class="ColumnQuantity">%d</td>\n' % len(data_list))
|
of.write('\t\t\t<td class="ColumnQuantity">%d</td>\n' % len(data_list))
|
||||||
@ -1433,6 +1385,13 @@ class SurnameListPage(BasePage):
|
|||||||
self.display_footer(of)
|
self.display_footer(of)
|
||||||
self.report.close_file(of)
|
self.report.close_file(of)
|
||||||
|
|
||||||
|
def surname_link(self, of, fname, name, opt_val=None, up=False):
|
||||||
|
url = self.report.build_url_fname_html(fname, 'srn', up)
|
||||||
|
of.write('<a href="%s">%s' % (url, name))
|
||||||
|
if opt_val != None:
|
||||||
|
of.write(' (%d)' % opt_val)
|
||||||
|
of.write('</a>')
|
||||||
|
|
||||||
class IntroductionPage(BasePage):
|
class IntroductionPage(BasePage):
|
||||||
|
|
||||||
def __init__(self, report, title):
|
def __init__(self, report, title):
|
||||||
@ -1440,7 +1399,8 @@ class IntroductionPage(BasePage):
|
|||||||
|
|
||||||
db = report.database
|
db = report.database
|
||||||
of = self.report.create_file(report.intro_fname)
|
of = self.report.create_file(report.intro_fname)
|
||||||
self.display_header(of, _('Introduction'))
|
# Note. In old NarrativeWeb.py the content_divid depended on filename.
|
||||||
|
self.display_header(of, _('Introduction'), content_divid='Introduction')
|
||||||
|
|
||||||
of.write('\t<h2>%s</h2>\n' % _('Introduction'))
|
of.write('\t<h2>%s</h2>\n' % _('Introduction'))
|
||||||
|
|
||||||
@ -1468,7 +1428,7 @@ class HomePage(BasePage):
|
|||||||
|
|
||||||
db = report.database
|
db = report.database
|
||||||
of = self.report.create_file("index")
|
of = self.report.create_file("index")
|
||||||
self.display_header(of, _('Home'))
|
self.display_header(of, _('Home'), content_divid='Home')
|
||||||
|
|
||||||
of.write('\t<h2>%s</h2>\n' % _('Home'))
|
of.write('\t<h2>%s</h2>\n' % _('Home'))
|
||||||
|
|
||||||
@ -1496,7 +1456,7 @@ class SourcesPage(BasePage):
|
|||||||
|
|
||||||
db = report.database
|
db = report.database
|
||||||
of = self.report.create_file("sources")
|
of = self.report.create_file("sources")
|
||||||
self.display_header(of, _('Sources'))
|
self.display_header(of, _('Sources'), content_divid='Sources')
|
||||||
|
|
||||||
handle_list = list(handle_set)
|
handle_list = list(handle_set)
|
||||||
source_dict = {}
|
source_dict = {}
|
||||||
@ -1552,7 +1512,7 @@ class SourcePage(BasePage):
|
|||||||
of = self.report.create_file(source.get_handle(), 'src')
|
of = self.report.create_file(source.get_handle(), 'src')
|
||||||
self.up = True
|
self.up = True
|
||||||
self.page_title = source.get_title()
|
self.page_title = source.get_title()
|
||||||
self.display_header(of, "%s - %s" % (_('Sources'), self.page_title))
|
self.display_header(of, "%s - %s" % (_('Sources'), self.page_title), content_divid='SourceDetail')
|
||||||
|
|
||||||
media_list = source.get_media_list()
|
media_list = source.get_media_list()
|
||||||
self.display_first_image_as_thumbnail(of, media_list)
|
self.display_first_image_as_thumbnail(of, media_list)
|
||||||
@ -1595,7 +1555,7 @@ class GalleryPage(BasePage):
|
|||||||
|
|
||||||
db = report.database
|
db = report.database
|
||||||
of = self.report.create_file("gallery")
|
of = self.report.create_file("gallery")
|
||||||
self.display_header(of, _('Gallery'))
|
self.display_header(of, _('Gallery'), content_divid='Gallery')
|
||||||
|
|
||||||
of.write('\t<h2>%s</h2>\n\n' % _('Gallery'))
|
of.write('\t<h2>%s</h2>\n\n' % _('Gallery'))
|
||||||
of.write('\t<p id="description">')
|
of.write('\t<p id="description">')
|
||||||
@ -1643,6 +1603,11 @@ class GalleryPage(BasePage):
|
|||||||
self.display_footer(of)
|
self.display_footer(of)
|
||||||
self.report.close_file(of)
|
self.report.close_file(of)
|
||||||
|
|
||||||
|
def media_ref_link(self, of, handle, name, up=False):
|
||||||
|
# TODO. Check name, if it already has extension
|
||||||
|
url = self.report.build_url_fname(handle, 'img', up)
|
||||||
|
of.write('<a href="%s">%s</a>' % (url, html_escape(name)))
|
||||||
|
|
||||||
class DownloadPage(BasePage):
|
class DownloadPage(BasePage):
|
||||||
|
|
||||||
def __init__(self, report, title):
|
def __init__(self, report, title):
|
||||||
@ -1651,7 +1616,7 @@ class DownloadPage(BasePage):
|
|||||||
of = self.report.create_file("download")
|
of = self.report.create_file("download")
|
||||||
self.display_header(of, _('Download'))
|
self.display_header(of, _('Download'))
|
||||||
|
|
||||||
of.write('\t<h2>%s</h2>\n\n' % _('Download'))
|
of.write('\t<h2>%s</h2>\n\n' % _('Download'), content_divid='Download')
|
||||||
|
|
||||||
self.display_footer(of)
|
self.display_footer(of)
|
||||||
self.report.close_file(of)
|
self.report.close_file(of)
|
||||||
@ -1663,7 +1628,7 @@ class ContactPage(BasePage):
|
|||||||
|
|
||||||
db = report.database
|
db = report.database
|
||||||
of = self.report.create_file("contact")
|
of = self.report.create_file("contact")
|
||||||
self.display_header(of, _('Contact'))
|
self.display_header(of, _('Contact'), content_divid='Contact')
|
||||||
|
|
||||||
of.write('\t<h2>%s</h2>\n\n' % _('Contact'))
|
of.write('\t<h2>%s</h2>\n\n' % _('Contact'))
|
||||||
of.write('\t<div id="summaryarea">\n')
|
of.write('\t<div id="summaryarea">\n')
|
||||||
@ -1728,7 +1693,7 @@ class IndividualPage(BasePage):
|
|||||||
db = report.database
|
db = report.database
|
||||||
of = self.report.create_file(person.handle, 'ppl')
|
of = self.report.create_file(person.handle, 'ppl')
|
||||||
self.up = True
|
self.up = True
|
||||||
self.display_header(of, self.sort_name)
|
self.display_header(of, self.sort_name, content_divid='IndividualDetail')
|
||||||
|
|
||||||
self.display_ind_general(of)
|
self.display_ind_general(of)
|
||||||
self.display_ind_events(of)
|
self.display_ind_events(of)
|
||||||
@ -1954,8 +1919,7 @@ class IndividualPage(BasePage):
|
|||||||
|
|
||||||
def display_ind_general(self, of):
|
def display_ind_general(self, of):
|
||||||
self.page_title = self.sort_name
|
self.page_title = self.sort_name
|
||||||
self.display_first_image_as_thumbnail(of,
|
self.display_first_image_as_thumbnail(of, self.person.get_media_list())
|
||||||
self.person.get_media_list())
|
|
||||||
|
|
||||||
of.write('\t<h2>Individuals:</h2>\n')
|
of.write('\t<h2>Individuals:</h2>\n')
|
||||||
of.write('\t<h3>%s</h3>\n' % self.sort_name.strip())
|
of.write('\t<h3>%s</h3>\n' % self.sort_name.strip())
|
||||||
@ -2350,7 +2314,7 @@ class IndividualPage(BasePage):
|
|||||||
if place:
|
if place:
|
||||||
if text:
|
if text:
|
||||||
text += ' '
|
text += ' '
|
||||||
text += _('at') + ' ' + place
|
text += _('place|at') + ' ' + place
|
||||||
|
|
||||||
text += self.get_citation_links(event.get_source_references())
|
text += self.get_citation_links(event.get_source_references())
|
||||||
|
|
||||||
@ -2828,6 +2792,33 @@ class NavWebReport(Report):
|
|||||||
thumb_path = os.path.join(self.build_path('thumb', handle), handle + '.png')
|
thumb_path = os.path.join(self.build_path('thumb', handle), handle + '.png')
|
||||||
return (real_path, thumb_path)
|
return (real_path, thumb_path)
|
||||||
|
|
||||||
|
def copy_file(self, from_fname, to_fname, to_dir=''):
|
||||||
|
"""
|
||||||
|
Copy a file from a source to a (report) destination.
|
||||||
|
If to_dir is not present and if the target is not an archive,
|
||||||
|
then the destination directory will be created.
|
||||||
|
"""
|
||||||
|
if self.archive:
|
||||||
|
dest = os.path.join(to_dir, to_fname)
|
||||||
|
self.archive.add(from_fname, dest)
|
||||||
|
else:
|
||||||
|
dest = os.path.join(self.html_dir, to_dir)
|
||||||
|
if not os.path.isdir(dest):
|
||||||
|
os.makedirs(dest)
|
||||||
|
dest = os.path.join(dest, to_fname)
|
||||||
|
if from_path != dest:
|
||||||
|
shutil.copyfile(from_path, dest)
|
||||||
|
elif self.warn_dir:
|
||||||
|
WarningDialog(
|
||||||
|
_("Possible destination error") + "\n" +
|
||||||
|
_("You appear to have set your target directory "
|
||||||
|
"to a directory used for data storage. This "
|
||||||
|
"could create problems with file management. "
|
||||||
|
"It is recommended that you consider using "
|
||||||
|
"a different directory to store your generated "
|
||||||
|
"web pages."))
|
||||||
|
self.warn_dir = False
|
||||||
|
|
||||||
def store_file(self, from_path, to_path):
|
def store_file(self, from_path, to_path):
|
||||||
"""
|
"""
|
||||||
Store the file in the destination.
|
Store the file in the destination.
|
||||||
|
Loading…
Reference in New Issue
Block a user