From cb0d0a2c81f3965b48f0b89e72034dd004aa5339 Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Wed, 16 May 2012 23:33:19 +0000 Subject: [PATCH] Brought json initial data up to date; fixed addition of transaction to database; added gramps_id to reports; can now import gedcom on-line again svn: r19545 --- src/webapp/dbdjango.py | 1 + src/webapp/grampsdb/models.py | 1 + src/webapp/grampsdb/templatetags/my_tags.py | 33 +++++++++++---------- src/webapp/grampsdb/views.py | 11 ++++++- src/webapp/init.py | 19 ++++++++++++ 5 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/webapp/dbdjango.py b/src/webapp/dbdjango.py index 30f2cf662..758a56da6 100644 --- a/src/webapp/dbdjango.py +++ b/src/webapp/dbdjango.py @@ -156,6 +156,7 @@ class DbDjango(DbWriteBase, DbReadBase): self.undo_history_callback = None self.modified = 0 self.txn = DjangoTxn("DbDjango Transaction", self) + self.transaction = None # Import cache for gedcom import, uses transactions, and # two step adding of objects. self.import_cache = {} diff --git a/src/webapp/grampsdb/models.py b/src/webapp/grampsdb/models.py index e946cf411..462d52da6 100644 --- a/src/webapp/grampsdb/models.py +++ b/src/webapp/grampsdb/models.py @@ -829,6 +829,7 @@ class MediaRef(BaseRef): return "MediaRef to " + str(self.ref_object) class Report(models.Model): + gramps_id = models.TextField(blank=True, null=True) name = models.TextField(blank=True, null=True) handle = models.TextField(blank=True, null=True) # report_id report_type = models.TextField(blank=True, null=True) diff --git a/src/webapp/grampsdb/templatetags/my_tags.py b/src/webapp/grampsdb/templatetags/my_tags.py index 2fc2c6cb7..182712663 100644 --- a/src/webapp/grampsdb/templatetags/my_tags.py +++ b/src/webapp/grampsdb/templatetags/my_tags.py @@ -157,22 +157,25 @@ breadcrumb.is_safe = True register.filter('breadcrumb', breadcrumb) def format(string, arg0=None, arg1=None, arg2=None, arg3=None, arg4=None, arg5=None, arg6=None): - if arg0 is None: + try: + if arg0 is None: + return string + elif arg1 is None: + return string % arg0 + elif arg2 is None: + return string % (arg0, arg1) + elif arg3 is None: + return string % (arg0, arg1, arg2) + elif arg4 is None: + return string % (arg0, arg1, arg2, arg3) + elif arg5 is None: + return string % (arg0, arg1, arg2, arg3, arg4) + elif arg6 is None: + return string % (arg0, arg1, arg2, arg3, arg4, arg5) + else: + return string % (arg0, arg1, arg2, arg3, arg4, arg5, arg6) + except: return string - elif arg1 is None: - return string % arg0 - elif arg2 is None: - return string % (arg0, arg1) - elif arg3 is None: - return string % (arg0, arg1, arg2) - elif arg4 is None: - return string % (arg0, arg1, arg2, arg3) - elif arg5 is None: - return string % (arg0, arg1, arg2, arg3, arg4) - elif arg6 is None: - return string % (arg0, arg1, arg2, arg3, arg4, arg5) - else: - return string % (arg0, arg1, arg2, arg3, arg4, arg5, arg6) format.is_safe = True register.simple_tag(format) diff --git a/src/webapp/grampsdb/views.py b/src/webapp/grampsdb/views.py index 561b5d4a5..613c347df 100644 --- a/src/webapp/grampsdb/views.py +++ b/src/webapp/grampsdb/views.py @@ -22,6 +22,8 @@ """ Main view handlers """ import os +import cPickle +import base64 #------------------------------------------------------------------------ # @@ -45,6 +47,9 @@ import webapp from webapp.grampsdb.models import * from webapp.grampsdb.forms import * from webapp.dbdjango import DbDjango +from webapp.libdjango import DjangoInterface + +dji = DjangoInterface() import gen.proxy from Utils import create_id @@ -532,6 +537,7 @@ def view_person_detail(request, view, handle, action="view"): nf.model = name sf = SurnameForm(request.POST, instance=surname) if nf.is_valid() and pf.is_valid() and sf.is_valid(): + # name.preferred and surname.primary get set False in the above is_valid() person = pf.save() # Process data: name = nf.save(commit=False) @@ -546,7 +552,10 @@ def view_person_detail(request, view, handle, action="view"): surname.primary = True # FIXME: why is this False? surname.save() # FIXME: last_saved, last_changed, last_changed_by - # FIXME: update cache + # FIXME: update cache: + raw = dji.get_person(person) + person.cache = base64.encodestring(cPickle.dumps(raw)) + person.save() # FIXME: update probably_alive return redirect("/person/%s" % person.handle) else: # not valid, try again: diff --git a/src/webapp/init.py b/src/webapp/init.py index 0c8ab3fdf..e5966ad50 100644 --- a/src/webapp/init.py +++ b/src/webapp/init.py @@ -65,63 +65,82 @@ for table, entries in [("grampsdb.config", ]), ("grampsdb.report", [(("name", '"Ahnentafel Report"'), + ('gramps_id', '"R0001"'), ("handle", '"ancestor_report"'), ("report_type", '"textreport"')), (("name", '"birthday_report"'), + ('gramps_id', '"R0002"'), ("handle", '"birthday_report"'), ("report_type", '"textreport"')), (("name", '"custom_text"'), + ('gramps_id', '"R0003"'), ("handle", '"custom_text"'), ("report_type", '"textreport"')), (("name", '"descend_report"'), + ('gramps_id', '"R0004"'), ("handle", '"descend_report"'), ("report_type", '"textreport"')), (("name", '"det_ancestor_report"'), + ('gramps_id', '"R0005"'), ("handle", '"det_ancestor_report"'), ("report_type", '"textreport"')), (("name", '"det_descendant_report"'), + ('gramps_id', '"R0006"'), ("handle", '"det_descendant_report"'), ("report_type", '"textreport"')), (("name", '"endofline_report"'), + ('gramps_id', '"R0007"'), ("handle", '"endofline_report"'), ("report_type", '"textreport"')), (("name", '"family_group"'), + ('gramps_id', '"R0008"'), ("handle", '"family_group"'), ("report_type", '"textreport"')), (("name", '"indiv_complete"'), + ('gramps_id', '"R0009"'), ("handle", '"indiv_complete"'), ("report_type", '"textreport"')), (("name", '"kinship_report"'), + ('gramps_id', '"R0010"'), ("handle", '"kinship_report"'), ("report_type", '"textreport"')), (("name", '"tag_report"'), + ('gramps_id', '"R0011"'), ("handle", '"tag_report"'), ("report_type", '"textreport"')), (("name", '"number_of_ancestors_report"'), + ('gramps_id', '"R0012"'), ("handle", '"number_of_ancestors_report"'), ("report_type", '"textreport"')), (("name", '"place_report"'), + ('gramps_id', '"R0013"'), ("handle", '"place_report"'), ("report_type", '"textreport"')), (("name", '"simple_book_title"'), + ('gramps_id', '"R0014"'), ("handle", '"simple_book_title"'), ("report_type", '"textreport"')), (("name", '"summary"'), + ('gramps_id', '"R0015"'), ("handle", '"summary"'), ("report_type", '"textreport"')), (("name", '"GEDCOM Export"'), + ('gramps_id', '"R0016"'), ("handle", '"gedcom_export"'), ("options", '"off=ged"'), ("report_type", '"export"')), (("name", '"Gramps XML Export"'), + ('gramps_id', '"R0017"'), ("handle", '"ex_gpkg"'), ("options", '"off=gramps"'), ("report_type", '"export"')), (("name", '"GEDCOM Import"'), + ('gramps_id', '"R0018"'), ("handle", '"im_ged"'), ("options", '"iff=ged i=http://arborvita.free.fr/Kennedy/Kennedy.ged"'), ("report_type", '"import"')), (("name", '"Gramps package (portable XML) Import"'), + ('gramps_id', '"R0019"'), ("handle", '"im_gpkg"'), ("options", '"iff=gramps i=http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/example/gramps/example.gramps?revision=18333"'), ("report_type", '"import"')),