Serge Noiraud 06cb9d7ea6 Narweb: Private notes for home, intro and contact (#953)
If the notes are private, we can't use them in these pages.
2020-01-09 12:09:25 -06:00

143 lines
5.6 KiB
Python

# -*- coding: utf-8 -*-
#!/usr/bin/env python
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2007 Donald N. Allingham
# Copyright (C) 2007 Johan Gonqvist <johan.gronqvist@gmail.com>
# Copyright (C) 2007-2009 Gary Burton <gary.burton@zen.co.uk>
# Copyright (C) 2007-2009 Stephane Charette <stephanecharette@gmail.com>
# Copyright (C) 2008-2009 Brian G. Matherly
# Copyright (C) 2008 Jason M. Simanek <jason@bohemianalps.com>
# Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
# Copyright (C) 2010 Doug Blank <doug.blank@gmail.com>
# Copyright (C) 2010 Jakim Friant
# Copyright (C) 2010- Serge Noiraud
# Copyright (C) 2011 Tim G L Lyons
# Copyright (C) 2013 Benny Malengier
# Copyright (C) 2016 Allen Crider
# Copyright (C) 2018 Theo van Rijn
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
Narrative Web Page generator.
Classe:
ContactPage
"""
#------------------------------------------------
# python modules
#------------------------------------------------
from decimal import getcontext
import logging
#------------------------------------------------
# Gramps module
#------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
from gramps.gen.utils.config import get_researcher
from gramps.plugins.lib.libhtml import Html
#------------------------------------------------
# specific narrative web import
#------------------------------------------------
from gramps.plugins.webreport.basepage import BasePage
from gramps.plugins.webreport.common import FULLCLEAR
_ = glocale.translation.sgettext
LOG = logging.getLogger(".NarrativeWeb")
getcontext().prec = 8
class ContactPage(BasePage):
"""
This class is responsible for displaying information about the 'Researcher'
"""
def __init__(self, report, title):
"""
@param: report -- The instance of the main report class for this report
@param: title -- Is the title of the web page
"""
BasePage.__init__(self, report, title)
output_file, sio = self.report.create_file("contact")
result = self.write_header(self._('Contact'))
contactpage, head, dummy_body, outerwrapper = result
# begin contact division
with Html("div", class_="content", id="Contact") as section:
outerwrapper += section
# begin summaryarea division
with Html("div", id='summaryarea') as summaryarea:
section += summaryarea
contactimg = self.add_image('contactimg', head, 200)
if contactimg is not None:
summaryarea += contactimg
# get researcher information
res = get_researcher()
with Html("div", id='researcher') as researcher:
summaryarea += researcher
if res.name:
res.name = res.name.replace(',,,', '')
researcher += Html("h3", res.name, inline=True)
if res.addr:
researcher += Html("span", res.addr,
id='streetaddress', inline=True)
if res.locality:
researcher += Html("span", res.locality,
id="locality", inline=True)
text = "".join([res.city, res.state, res.postal])
if text:
city = Html("span", res.city, id='city', inline=True)
state = Html("span", res.state, id='state', inline=True)
postal = Html("span", res.postal, id='postalcode',
inline=True)
researcher += (city, state, postal)
if res.country:
researcher += Html("span", res.country,
id='country', inline=True)
if res.email:
researcher += Html("span", id='email') + (
Html("a", res.email,
href='mailto:%s' % res.email, inline=True)
)
# add clear line for proper styling
summaryarea += FULLCLEAR
note_id = report.options['contactnote']
if note_id:
note = self.r_db.get_note_from_gramps_id(note_id)
if note:
note_text = self.get_note_format(note, False)
# attach note
summaryarea += note_text
# add clearline for proper styling
# add footer section
footer = self.write_footer(None)
outerwrapper += (FULLCLEAR, footer)
# send page out for porcessing
# and close the file
self.xhtml_writer(contactpage, output_file, sio, 0)