Using Gramps Proxy Databases from Gramps-Connect: first revisions
svn: r13863
This commit is contained in:
@@ -22,7 +22,11 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="ColumnAttribute">Description:</td>
|
<td class="ColumnAttribute">Description:</td>
|
||||||
|
{% if user.is_authenticated %}
|
||||||
<td class="ColumnValue" id="data" colspan="3">{{event.description|escape}}</td>
|
<td class="ColumnValue" id="data" colspan="3">{{event.description|escape}}</td>
|
||||||
|
{% else %}
|
||||||
|
<td class="ColumnValue" id="data" colspan="3">[Private]</td>
|
||||||
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="ColumnAttribute">ID:</td>
|
<td class="ColumnAttribute">ID:</td>
|
||||||
|
@@ -18,8 +18,8 @@
|
|||||||
<tr class="{% cycle odd,even %}">
|
<tr class="{% cycle odd,even %}">
|
||||||
<td><a href="/{{view}}/{{family.handle|escape}}" class="noThumb">{{ forloop.counter|row_count:page }}</a></td>
|
<td><a href="/{{view}}/{{family.handle|escape}}" class="noThumb">{{ forloop.counter|row_count:page }}</a></td>
|
||||||
<td><a href="/{{view}}/{{family.handle|escape}}" class="noThumb"><span class="grampsid">[{{family.gramps_id}}]</span></a>
|
<td><a href="/{{view}}/{{family.handle|escape}}" class="noThumb"><span class="grampsid">[{{family.gramps_id}}]</span></a>
|
||||||
<td><a href="/{{view}}/{{family.handle|escape}}">{{family.father.name_set|make_name:user|nbsp}}</a>
|
<td><a href="/{{view}}/{{family.handle|escape}}">{{family.father|make_name:user|nbsp}}</a>
|
||||||
<td><a href="/{{view}}/{{family.handle|escape}}">{{family.mother.name_set|make_name:user|nbsp}}</a>
|
<td><a href="/{{view}}/{{family.handle|escape}}">{{family.mother|make_name:user|nbsp}}</a>
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
<td><a href="/{{view}}/{{family.handle|escape}}">{{family.family_rel_type|escape}}</a>
|
<td><a href="/{{view}}/{{family.handle|escape}}">{{family.family_rel_type|escape}}</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
<div class="content" id="IndividualDetail">
|
<div class="content" id="IndividualDetail">
|
||||||
|
|
||||||
<h3>{{family.father.name_set|make_name:user}} and {{family.mother.name_set|make_name:user}}</h3>
|
<h3>{{family.father|make_name:user}} and {{family.mother|make_name:user}}</h3>
|
||||||
|
|
||||||
<div id="summaryarea">
|
<div id="summaryarea">
|
||||||
<table class="infolist"> {% comment %} 4 cols {% endcomment %}
|
<table class="infolist"> {% comment %} 4 cols {% endcomment %}
|
||||||
@@ -23,9 +23,9 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="ColumnAttribute">Name:</td>
|
<td class="ColumnAttribute">Name:</td>
|
||||||
<td class="ColumnValue" id="data"><a href="/person/{{family.father.handle}}">{{family.father.name_set|make_name:user}} [{{family.father.gramps_id|escape}}]</a></td>
|
<td class="ColumnValue" id="data"><a href="/person/{{family.father.handle}}">{{family.father|make_name:user}} [{{family.father.gramps_id|escape}}]</a></td>
|
||||||
<td class="ColumnAttribute">Name:</td>
|
<td class="ColumnAttribute">Name:</td>
|
||||||
<td class="ColumnValue" id="data"><a href="/person/{{family.mother.handle}}">{{family.mother.name_set|make_name:user}} [{{family.mother.gramps_id|escape}}]</a></td>
|
<td class="ColumnValue" id="data"><a href="/person/{{family.mother.handle}}">{{family.mother|make_name:user}} [{{family.mother.gramps_id|escape}}]</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% if user.is_authenticated or not family.father.handle|probably_alive %}
|
{% if user.is_authenticated or not family.father.handle|probably_alive %}
|
||||||
<tr>
|
<tr>
|
||||||
|
@@ -20,18 +20,16 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{% for name in page.object_list %}
|
{% for name in page.object_list %}
|
||||||
<tr class="{% cycle odd,even %}">
|
<tr class="{% cycle odd,even %}">
|
||||||
<td><a href="{{name.person.handle|escape}}/" class="noThumb">{{ forloop.counter|row_count:page }}</a>
|
{% get_person_from_handle db name.person.handle as person %}
|
||||||
|
{% if person %}
|
||||||
|
<td><a href="{{person.handle}}/" class="noThumb">{{ forloop.counter|row_count:page }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td><a href="{{name.person.handle|escape}}/" class="noThumb">{{name|make_name:user}}</a>
|
<td><a href="{{person.handle}}/" class="noThumb">{{person|make_name}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td><a href="{{name.person.handle|escape}}/" class="grampsid">[{{name.person.gramps_id|escape}}]</a></td>
|
<td><a href="{{person.handle}}/" class="grampsid">[{{person.gramps_id}}]</a></td>
|
||||||
<td><a href="{{name.person.handle|escape}}/" class="noThumb">{{name.person.gender_type|escape}}</a></td>
|
<td><a href="{{person.handle}}/" class="noThumb">{{person.gender_type}}</a></td>
|
||||||
{% if user.is_authenticated %}
|
<td><a href="{{person.handle}}/" class="noThumb">{{person|person_get_birth_date|nbsp}}</a></td>
|
||||||
<td><a href="{{name.person.handle|escape}}/" class="noThumb">{{name.person|person_get_birth_date|nbsp}}</a></td>
|
<td><a href="{{person.handle}}/" class="noThumb">{{person|person_get_death_date|nbsp}}</a></td>
|
||||||
<td><a href="{{name.person.handle|escape}}/" class="noThumb">{{name.person|person_get_death_date|nbsp}}</a></td>
|
|
||||||
{% else %}
|
|
||||||
<td><a href="{{name.person.handle|escape}}/" class="noThumb">[Private]</a>
|
|
||||||
<td><a href="{{name.person.handle|escape}}/" class="noThumb">[Private]</a>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@@ -60,6 +60,15 @@ class DjangoDb(GrampsDbBase):
|
|||||||
self.dji = DjangoInterface()
|
self.dji = DjangoInterface()
|
||||||
self.readonly = False
|
self.readonly = False
|
||||||
self.db_is_open = True
|
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):
|
def get_researcher(self):
|
||||||
obj = gen.lib.Name()
|
obj = gen.lib.Name()
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
"setting" : "db_created" ,
|
"setting" : "db_created" ,
|
||||||
"description" : "database creation date/time" ,
|
"description" : "database creation date/time" ,
|
||||||
"value_type" : "str" ,
|
"value_type" : "str" ,
|
||||||
"value" : "2009-11-22 17:24"
|
"value" : "2009-12-12 20:42"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@@ -1,3 +1,6 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
|
from django import template
|
||||||
from django.template import escape, Library
|
from django.template import escape, Library
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from web.utils import *
|
from web.utils import *
|
||||||
@@ -21,6 +24,40 @@ for filter_name in util_filters:
|
|||||||
func.is_safe = True
|
func.is_safe = True
|
||||||
register.filter(filter_name, func)
|
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
|
probably_alive.is_safe = True
|
||||||
register.filter('probably_alive', probably_alive)
|
register.filter('probably_alive', probably_alive)
|
||||||
|
|
||||||
|
@@ -43,6 +43,9 @@ import web
|
|||||||
from web.grampsdb.models import *
|
from web.grampsdb.models import *
|
||||||
from web.grampsdb.forms import NameForm
|
from web.grampsdb.forms import NameForm
|
||||||
from web.utils import probably_alive
|
from web.utils import probably_alive
|
||||||
|
from web.djangodb import DjangoDb
|
||||||
|
|
||||||
|
from gen.proxy import LivingProxyDb
|
||||||
|
|
||||||
_ = lambda text: text
|
_ = lambda text: text
|
||||||
|
|
||||||
@@ -276,6 +279,15 @@ def view_detail(request, view, handle):
|
|||||||
return render_to_response(view_template, context)
|
return render_to_response(view_template, context)
|
||||||
|
|
||||||
def view(request, view):
|
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 = ""
|
search = ""
|
||||||
if view == "event":
|
if view == "event":
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated():
|
||||||
@@ -499,6 +511,7 @@ def view(request, view):
|
|||||||
context["tview"] = _(view.title())
|
context["tview"] = _(view.title())
|
||||||
context["search"] = search
|
context["search"] = search
|
||||||
context["total"] = total
|
context["total"] = total
|
||||||
|
context["db"] = db
|
||||||
if search:
|
if search:
|
||||||
context["search_query"] = ("&search=%s" % escape(search))
|
context["search_query"] = ("&search=%s" % escape(search))
|
||||||
else:
|
else:
|
||||||
|
@@ -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.template import escape
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.contrib.contenttypes.models import ContentType
|
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()
|
dji = libdjango.DjangoInterface()
|
||||||
|
|
||||||
_dd = DateHandler.displayer.display
|
_dd = DateHandler.displayer.display
|
||||||
_dp = DateHandler.parser.parse
|
_dp = DateHandler.parser.parse
|
||||||
|
|
||||||
@@ -458,10 +475,18 @@ def get_title(place):
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
def person_get_birth_date(person):
|
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):
|
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):
|
def display_date(obj):
|
||||||
date_tuple = dji.get_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]
|
for event_handle in event_ref_list]
|
||||||
return [j for i in retval for j in i]
|
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):
|
if isinstance(name, models.Name):
|
||||||
surname = name.surname.strip()
|
surname = name.surname.strip()
|
||||||
if not surname:
|
if not surname:
|
||||||
@@ -516,16 +541,14 @@ def make_name(name, user):
|
|||||||
return "%s, %s" % (surname, "[Living]")
|
return "%s, %s" % (surname, "[Living]")
|
||||||
else:
|
else:
|
||||||
return "%s, %s" % (surname, name.model.first_name)
|
return "%s, %s" % (surname, name.model.first_name)
|
||||||
elif name: # name_set
|
elif isinstance(name, gen.lib.Person): # name is a gen.lib.Person
|
||||||
try:
|
person = name
|
||||||
name = name.get(preferred=True)
|
name = person.get_primary_name()
|
||||||
except:
|
if name is None:
|
||||||
return "[No preferred name]"
|
return "[No preferred name]"
|
||||||
if name:
|
|
||||||
return make_name(name, user)
|
|
||||||
else:
|
else:
|
||||||
return ""
|
return "%s, %s" % (name.get_surname(), name.get_first_name())
|
||||||
else:
|
else: # no name
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
register_plugins()
|
register_plugins()
|
||||||
|
Reference in New Issue
Block a user