~rosco2/ubuntu/wily/gramps/bug-1492304

« back to all changes in this revision

Viewing changes to gramps/plugins/textreport/placereport.py

  • Committer: Package Import Robot
  • Author(s): Ross Gammon
  • Date: 2015-08-11 23:03:11 UTC
  • mfrom: (1.4.3)
  • mto: This revision was merged to the branch mainline in revision 58.
  • Revision ID: package-import@ubuntu.com-20150811230311-acjr8gcfe8isx7ij
* New upstream release
* Drop patches applied upstream or cherry-picked from there
* Add version constraints for gtk and pygobject
* Add goocanvas dependency - available soon
* Drop webkit dpendency as HTML view has been removed
* Force removal of upstream packages when installing Debian one
  (LP: #1464845)
* Drop fixperm override as permissions fixed upstream
* Fix spelling error in changelog
* Switch to nose for unit tests
* Add build dependencies for the nose tests
* Update copyright file
* Add uversionmangle to watch file to deal with alpha/beta versions
* Add manual test cases
* Drop FAQ URL from upstream metadata - changes every release
* Add patch to fix transparent windows in Ubuntu.
  Thanks to Lance Orner (LP: #1451259)

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
                                    TableStyle, TableCellStyle,
46
46
                                    FONT_SANS_SERIF, FONT_SERIF, 
47
47
                                    INDEX_TYPE_TOC, PARA_ALIGN_CENTER)
48
 
from gramps.gen.proxy import PrivateProxyDb
49
48
from gramps.gen.sort import Sort
50
49
from gramps.gen.utils.location import get_main_location
51
50
from gramps.gen.display.place import displayer as place_displayer
52
51
from gramps.gen.lib import PlaceType
 
52
from gramps.gen.errors import ReportError
53
53
 
54
54
class PlaceReport(Report):
55
55
    """
70
70
        
71
71
        places          - List of places to report on.
72
72
        center          - Center of report, person or event
73
 
        incpriv         - Whether to include private data
 
73
        incl_private    - Whether to include private data
 
74
        name_format     - Preferred format to display names
74
75
 
75
76
        """
76
77
 
78
79
 
79
80
        self._user = user
80
81
        menu = options.menu
 
82
 
 
83
        stdoptions.run_private_data_option(self, menu)
 
84
 
81
85
        places = menu.get_option_by_name('places').get_value()
82
86
        self.center  = menu.get_option_by_name('center').get_value()
83
 
        self.incpriv = menu.get_option_by_name('incpriv').get_value()
84
87
 
85
88
        self.set_locale(menu.get_option_by_name('trans').get_value())
86
89
 
87
 
        name_format = menu.get_option_by_name("name_format").get_value()
88
 
        if name_format != 0:
89
 
            self._name_display.set_default_format(name_format)
 
90
        stdoptions.run_name_format_option(self, menu)
90
91
        self._nd = self._name_display
91
92
 
92
 
        if self.incpriv:
93
 
            self.database = database
94
 
        else:
95
 
            self.database = PrivateProxyDb(database)
96
 
 
97
93
        filter_option = menu.get_option_by_name('filter')
98
94
        self.filter = filter_option.get_filter()
 
95
 
99
96
        self.sort = Sort(self.database)
100
97
 
101
98
        if self.filter.get_name() != '':
106
103
            # Use the place handles selected without a filter
107
104
            self.place_handles = self.__get_place_handles(places)
108
105
 
 
106
        if not self.place_handles:
 
107
            raise ReportError(_('Place Report'),
 
108
                _('Please select at least one place before running this.'))
 
109
 
109
110
        self.place_handles.sort(key=self.sort.by_place_title_key)
110
111
 
111
112
    def write_report(self):
202
203
 
203
204
        for evt_handle in event_handles:
204
205
            event = self.database.get_event_from_handle(evt_handle)
205
 
            if event:
 
206
            if event: # will be None if marked private
206
207
                date = self._get_date(event.get_date_object())
207
208
                descr = event.get_description()
208
209
                event_type = self._(self._get_type(event.get_type()))
210
211
                person_list = []
211
212
                ref_handles = [x for x in
212
213
                               self.database.find_backlink_handles(evt_handle)]
 
214
                if not ref_handles: # since the backlink may point to private
 
215
                    continue        # data, ignore an event with no backlinks
213
216
                for (ref_type, ref_handle) in ref_handles:
214
217
                    if ref_type == 'Person':
215
218
                        person_list.append(ref_handle)
392
395
        opt.set_filters(filter_list)
393
396
        menu.add_option(category_name, "filter", opt)
394
397
 
395
 
        stdoptions.add_name_format_option(menu, category_name)
396
 
 
397
398
        places = PlaceListOption(_("Select places individually"))
398
399
        places.set_help(_("List of places to report on"))
399
400
        menu.add_option(category_name, "places", places)
400
401
 
 
402
        stdoptions.add_private_data_option(menu, category_name)
 
403
 
 
404
        stdoptions.add_name_format_option(menu, category_name)
 
405
 
401
406
        center = EnumeratedListOption(_("Center on"), "Event")
402
407
        center.set_items([
403
408
                ("Event",   _("Event")),
405
410
        center.set_help(_("If report is event or person centered"))
406
411
        menu.add_option(category_name, "center", center)
407
412
 
408
 
        incpriv = BooleanOption(_("Include private data"), True)
409
 
        incpriv.set_help(_("Whether to include private data"))
410
 
        menu.add_option(category_name, "incpriv", incpriv)
411
 
 
412
413
        stdoptions.add_localization_option(menu, category_name)
413
414
 
414
415
    def make_default_style(self, default_style):