diff --git a/src/data/templates/view_event_detail.html b/src/data/templates/view_event_detail.html
index 24b1bd2b6..4a665b6aa 100644
--- a/src/data/templates/view_event_detail.html
+++ b/src/data/templates/view_event_detail.html
@@ -22,7 +22,11 @@
| {{ forloop.counter|row_count:page }} |
[{{family.gramps_id}}]
- | {{family.father.name_set|make_name:user|nbsp}}
- | {{family.mother.name_set|make_name:user|nbsp}}
+ | {{family.father|make_name:user|nbsp}}
+ | {{family.mother|make_name:user|nbsp}}
{% if user.is_authenticated %}
| {{family.family_rel_type|escape}}
{% else %}
diff --git a/src/data/templates/view_family_detail.html b/src/data/templates/view_family_detail.html
index a727f011d..2ffb5ac69 100644
--- a/src/data/templates/view_family_detail.html
+++ b/src/data/templates/view_family_detail.html
@@ -12,7 +12,7 @@
- {{family.father.name_set|make_name:user}} and {{family.mother.name_set|make_name:user}}
+ {{family.father|make_name:user}} and {{family.mother|make_name:user}}
{% comment %} 4 cols {% endcomment %}
@@ -23,9 +23,9 @@
| Name: |
- {{family.father.name_set|make_name:user}} [{{family.father.gramps_id|escape}}] |
+ {{family.father|make_name:user}} [{{family.father.gramps_id|escape}}] |
Name: |
- {{family.mother.name_set|make_name:user}} [{{family.mother.gramps_id|escape}}] |
+ {{family.mother|make_name:user}} [{{family.mother.gramps_id|escape}}] |
{% if user.is_authenticated or not family.father.handle|probably_alive %}
diff --git a/src/data/templates/view_people.html b/src/data/templates/view_people.html
index 531219058..a3b4333ad 100644
--- a/src/data/templates/view_people.html
+++ b/src/data/templates/view_people.html
@@ -20,18 +20,16 @@
{% for name in page.object_list %}
- | {{ forloop.counter|row_count:page }}
+ {% get_person_from_handle db name.person.handle as person %}
+ {% if person %}
+ | {{ forloop.counter|row_count:page }}
|
- {{name|make_name:user}}
+ | {{person|make_name}}
|
- [{{name.person.gramps_id|escape}}] |
- {{name.person.gender_type|escape}} |
- {% if user.is_authenticated %}
- {{name.person|person_get_birth_date|nbsp}} |
- {{name.person|person_get_death_date|nbsp}} |
- {% else %}
- [Private]
- | [Private]
+ | [{{person.gramps_id}}] |
+ {{person.gender_type}} |
+ {{person|person_get_birth_date|nbsp}} |
+ {{person|person_get_death_date|nbsp}} |
{% endif %}
{% endfor %}
diff --git a/src/web/djangodb.py b/src/web/djangodb.py
index 541218508..9eaffa7af 100644
--- a/src/web/djangodb.py
+++ b/src/web/djangodb.py
@@ -60,6 +60,15 @@ class DjangoDb(GrampsDbBase):
self.dji = DjangoInterface()
self.readonly = False
self.db_is_open = True
+ self.name_formats = range(4)
+ self.bookmarks = []
+ self.family_bookmarks = []
+ self.event_bookmarks = []
+ self.place_bookmarks = []
+ self.source_bookmarks = []
+ self.repo_bookmarks = []
+ self.media_bookmarks = []
+ self.note_bookmarks = []
def get_researcher(self):
obj = gen.lib.Name()
diff --git a/src/web/grampsdb/fixtures/initial_data.json b/src/web/grampsdb/fixtures/initial_data.json
index dca732289..1ad2b0531 100644
--- a/src/web/grampsdb/fixtures/initial_data.json
+++ b/src/web/grampsdb/fixtures/initial_data.json
@@ -18,7 +18,7 @@
"setting" : "db_created" ,
"description" : "database creation date/time" ,
"value_type" : "str" ,
- "value" : "2009-11-22 17:24"
+ "value" : "2009-12-12 20:42"
}
},
{
diff --git a/src/web/grampsdb/templatetags/my_tags.py b/src/web/grampsdb/templatetags/my_tags.py
index 80bfd4270..72beef5e9 100644
--- a/src/web/grampsdb/templatetags/my_tags.py
+++ b/src/web/grampsdb/templatetags/my_tags.py
@@ -1,3 +1,6 @@
+import re
+
+from django import template
from django.template import escape, Library
from django.utils.safestring import mark_safe
from web.utils import *
@@ -21,6 +24,40 @@ for filter_name in util_filters:
func.is_safe = True
register.filter(filter_name, func)
+def get_person_from_handle(db, handle):
+ # db is a Gramps Db interface
+ # handle is a Person Handle
+ return db.get_person_from_handle(handle)
+
+class TemplateNode(template.Node):
+ def __init__(self, args, var_name):
+ self.db = template.Variable(args[0])
+ self.handle = template.Variable(args[1])
+ self.var_name = var_name
+
+ def render(self, context):
+ context[self.var_name] = \
+ get_person_from_handle(self.db.resolve(context),
+ self.handle.resolve(context))
+ return ''
+
+def do_get_person_from_handle(parser, token):
+ try:
+ # Splitting by None == splitting by spaces.
+ tag_name, args = token.contents.split(None, 1)
+ except ValueError:
+ raise template.TemplateSyntaxError, \
+ ("%r tag requires arguments" % token.contents.split()[0])
+ m = re.search(r'(.*?) as (\w+)', args)
+ if not m:
+ raise template.TemplateSyntaxError, \
+ ("%r tag had invalid arguments" % tag_name)
+ args_string, var_name = m.groups()
+ args = args_string.split()
+ return TemplateNode(args, var_name)
+
+register.tag("get_person_from_handle", do_get_person_from_handle)
+
probably_alive.is_safe = True
register.filter('probably_alive', probably_alive)
diff --git a/src/web/grampsdb/views.py b/src/web/grampsdb/views.py
index d98a05986..37ddffd44 100644
--- a/src/web/grampsdb/views.py
+++ b/src/web/grampsdb/views.py
@@ -43,6 +43,9 @@ import web
from web.grampsdb.models import *
from web.grampsdb.forms import NameForm
from web.utils import probably_alive
+from web.djangodb import DjangoDb
+
+from gen.proxy import LivingProxyDb
_ = lambda text: text
@@ -276,6 +279,15 @@ def view_detail(request, view, handle):
return render_to_response(view_template, context)
def view(request, view):
+ db_direct = DjangoDb()
+ if not request.user.is_authenticated():
+ #MODE_EXCLUDE_ALL = 0
+ #MODE_INCLUDE_LAST_NAME_ONLY = 1
+ #MODE_INCLUDE_FULL_NAME_ONLY = 2
+ db = LivingProxyDb(db_direct,
+ LivingProxyDb.MODE_INCLUDE_LAST_NAME_ONLY)
+ else:
+ db = db_direct
search = ""
if view == "event":
if request.user.is_authenticated():
@@ -499,6 +511,7 @@ def view(request, view):
context["tview"] = _(view.title())
context["search"] = search
context["total"] = total
+ context["db"] = db
if search:
context["search_query"] = ("&search=%s" % escape(search))
else:
diff --git a/src/web/utils.py b/src/web/utils.py
index e37c59d9f..4bc414d7e 100644
--- a/src/web/utils.py
+++ b/src/web/utils.py
@@ -23,33 +23,50 @@
#------------------------------------------------------------------------
#
-# Gramps/Django Modules
+# Python Modules
+#
+#------------------------------------------------------------------------
+import locale
+
+#------------------------------------------------------------------------
+#
+# Django Modules
#
#------------------------------------------------------------------------
-import web.grampsdb.models as models
-import web.grampsdb.forms as forms
-from web import libdjango
-from web.djangodb import DjangoDb
-from Simple import SimpleTable, SimpleAccess, make_basic_stylesheet
-import Utils
-import DbState
-import DateHandler
-from gen.lib.date import Date as GDate, Today
-from gen.plug import BasePluginManager
-from cli.grampscli import CLIManager
from django.template import escape
from django.utils.safestring import mark_safe
from django.contrib.contenttypes.models import ContentType
#------------------------------------------------------------------------
#
-# Python Modules
+# Gramps-Connect Modules
#
#------------------------------------------------------------------------
-import locale
+import web.grampsdb.models as models
+import web.grampsdb.forms as forms
+from web import libdjango
+from web.djangodb import DjangoDb
+#------------------------------------------------------------------------
+#
+# Gramps Modules
+#
+#------------------------------------------------------------------------
+from Simple import SimpleTable, SimpleAccess, make_basic_stylesheet
+import Utils
+import DbState
+import DateHandler
+from gen.lib.date import Date as GDate, Today
+import gen.lib
+from gen.plug import BasePluginManager
+from cli.grampscli import CLIManager
+
+#------------------------------------------------------------------------
+#
+# Modeul Constants
+#
+#------------------------------------------------------------------------
dji = libdjango.DjangoInterface()
-
_dd = DateHandler.displayer.display
_dp = DateHandler.parser.parse
@@ -458,10 +475,18 @@ def get_title(place):
return ""
def person_get_birth_date(person):
- return person_get_event(person, models.EventType.BIRTH)
+ db = DjangoDb()
+ event = db.get_birth_or_fallback(person)
+ if event:
+ return event.date
+ return None
def person_get_death_date(person):
- return person_get_event(person, models.EventType.DEATH)
+ db = DjangoDb()
+ event = db.get_death_or_fallback(person)
+ if event:
+ return event.date
+ return None
def display_date(obj):
date_tuple = dji.get_date(obj)
@@ -493,7 +518,7 @@ def person_get_event(person, event_type=None):
for event_handle in event_ref_list]
return [j for i in retval for j in i]
-def make_name(name, user):
+def make_name(name, user=None):
if isinstance(name, models.Name):
surname = name.surname.strip()
if not surname:
@@ -516,16 +541,14 @@ def make_name(name, user):
return "%s, %s" % (surname, "[Living]")
else:
return "%s, %s" % (surname, name.model.first_name)
- elif name: # name_set
- try:
- name = name.get(preferred=True)
- except:
+ elif isinstance(name, gen.lib.Person): # name is a gen.lib.Person
+ person = name
+ name = person.get_primary_name()
+ if name is None:
return "[No preferred name]"
- if name:
- return make_name(name, user)
else:
- return ""
- else:
+ return "%s, %s" % (name.get_surname(), name.get_first_name())
+ else: # no name
return ""
register_plugins()
|