{{person.name_set|make_name:user}}
-
+ {% comment %} 5 cols {% endcomment %}
@@ -55,40 +52,52 @@
Family | -{{person.name_set|preferred:"surname"}} | -Prefix | -{{person.name_set|preferred:"prefix"}} | +Family: | +{{person.name_set|preferred:"surname"}} | +Prefix: | +{{person.name_set|preferred:"prefix"}} | +Image: | |
Given | -{{person.name_set|preferred:"first_name"}} | -Callname | -{{person.name_set|preferred:"call"}} | +Given: | +{{person.name_set|preferred:"first_name"}} | +Call Name: | +{{person.name_set|preferred:"call"}} | ||
Type | -{{person.name_set|preferred:"name_type"}} | -Patronymic | -{{person.name_set|preferred:"patronymic"}} | +Type: | +{{person.name_set|preferred:"name_type"}} | +Patronymic: | +{{person.name_set|preferred:"patronymic"}} | ||
Description | -- | ||||||||
ID | -{{person.gramps_id|escape}} | -||||||||
Place | -+ | Gender: | +{{person.gender_type|escape}} | +ID: | +{{person.gramps_id|escape}} | +Marker: | +{{person.marker_type|escape}} |
-
-
- Events -
- Names -
- Sources -
- Attributes -
- Notes -
- Gallery -
- Internet -
- Associations -
- LDS -
- References +
- Events +
- Names +
- Sources +
- Attributes +
- Addresses +
- Notes +
- Gallery +
- Internet +
- Associations +
- LDS +
- References
+
- {{ person|events_table|safe }}
+ {{ person|person_event_table:user|safe }}
-
-
-
- {% for name in person.name_set.all %}
-
+
diff --git a/src/web/djangodb.py b/src/web/djangodb.py
index ce8af56d3..4da6d0543 100644
--- a/src/web/djangodb.py
+++ b/src/web/djangodb.py
@@ -59,6 +59,16 @@ class DjangoDb(GrampsDbBase):
obj.unserialize(self.dji.get_place(self.dji.Place.get(handle=handle)))
return obj
+ def get_source_from_handle(self, handle):
+ obj = gen.lib.Source()
+ obj.unserialize(self.dji.get_source(self.dji.Source.get(handle=handle)))
+ return obj
+
+ def get_note_from_handle(self, handle):
+ obj = gen.lib.Note()
+ obj.unserialize(self.dji.get_note(self.dji.Note.get(handle=handle)))
+ return obj
+
def get_person_handles(self):
return [person.handle for person in self.dji.Person.all()]
diff --git a/src/web/grampsdb/templatetags/my_tags.py b/src/web/grampsdb/templatetags/my_tags.py
index 19eebf7c8..d63951436 100644
--- a/src/web/grampsdb/templatetags/my_tags.py
+++ b/src/web/grampsdb/templatetags/my_tags.py
@@ -1,10 +1,18 @@
from django.template import escape, Library
from web.utils import *
+import web.utils
register = Library()
-events_table.is_safe = True
-register.filter('events_table', events_table)
+util_filters = ['person_event_table', 'person_name_table', 'person_source_table', 'person_attribute_table',
+ 'person_address_table', 'person_note_table', 'person_gallery_table', 'person_internet_table',
+ 'person_association_table', 'person_lds_table', 'person_reference_table',
+ 'family_children_table', 'family_event_table', 'family_source_table', 'family_attribute_table',
+ 'family_note_table', 'family_gallery_table', 'family_lds_table']
+for filter_name in util_filters:
+ func = getattr(web.utils, filter_name)
+ func.is_safe = True
+ register.filter(filter_name, func)
person_get_birth_date.is_safe = True
register.filter('person_get_birth_date', person_get_birth_date)
diff --git a/src/web/settings.py b/src/web/settings.py
index 526be41a0..b3072413f 100644
--- a/src/web/settings.py
+++ b/src/web/settings.py
@@ -6,6 +6,8 @@ import os
DEBUG = True
TEMPLATE_DEBUG = DEBUG
+INTERNAL_IPS = ('127.0.0.1',)
+
ADMINS = (
('admin', 'your_email@domain.com'),
)
@@ -35,6 +37,7 @@ MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
+# 'debug_toolbar.middleware.DebugToolbarMiddleware',
)
ROOT_URLCONF = 'web.urls'
@@ -60,8 +63,31 @@ INSTALLED_APPS = (
'django.contrib.admin',
'web.grampsdb',
# 'django_extensions',
+# 'debug_toolbar',
)
+DEBUG_TOOLBAR_PANELS = (
+ 'debug_toolbar.panels.version.VersionDebugPanel',
+ 'debug_toolbar.panels.timer.TimerDebugPanel',
+ 'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
+ 'debug_toolbar.panels.headers.HeaderDebugPanel',
+ 'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
+ 'debug_toolbar.panels.template.TemplateDebugPanel',
+ 'debug_toolbar.panels.sql.SQLDebugPanel',
+ 'debug_toolbar.panels.signals.SignalDebugPanel',
+ 'debug_toolbar.panels.logger.LoggingPanel',
+ )
+
+def custom_show_toolbar(request):
+ return True # Always show toolbar, for example purposes only.
+
+DEBUG_TOOLBAR_CONFIG = {
+ 'INTERCEPT_REDIRECTS': True,
+# 'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar,
+# 'EXTRA_SIGNALS': ['myproject.signals.MySignal'],
+ 'HIDE_DJANGO_SQL': False,
+ }
+
# Had to add these to use settings.configure():
DATABASE_OPTIONS = ''
URL_VALIDATOR_USER_AGENT = ''
diff --git a/src/web/utils.py b/src/web/utils.py
index 2058af7ca..7d92d48aa 100644
--- a/src/web/utils.py
+++ b/src/web/utils.py
@@ -61,7 +61,7 @@ class Table(object):
_ = lambda text: text
-def events_table(djperson):
+def person_event_table(djperson, user):
table = Table()
table.columns(_("Description"),
_("Type"),
@@ -75,7 +75,6 @@ def events_table(djperson):
object_type=obj_type).order_by("order")
event_list = [(obj.ref_object, obj) for obj in event_ref_list]
for (djevent, event_ref) in event_list:
- print djevent.description
table.row(
djevent.description,
table.db.get_event_from_handle(djevent.handle),
@@ -85,6 +84,195 @@ def events_table(djperson):
str(event_ref.role_type))
return table.get_html()
+def person_name_table(djperson, user):
+ table = Table()
+ table.columns(_("Name"),
+ _("Type"),
+ _("Group As"),
+ _("Source"),
+ _("Note Preview"))
+ for name in djperson.name_set.all():
+ obj_type = ContentType.objects.get_for_model(name)
+ sourceq = dji.SourceRef.filter(object_type=obj_type,
+ object_id=name.id).count() > 0
+ note_refs = dji.NoteRef.filter(object_type=obj_type,
+ object_id=name.id)
+ note = ""
+ if note_refs.count() > 0:
+ note = dji.Note.get(id=note_refs[0].object_id).text[:50]
+ table.row(make_name(name, user),
+ str(name.name_type),
+ name.group_as,
+ ["No", "Yes"][sourceq],
+ note)
+ return table.get_html()
+
+def person_source_table(djperson, user):
+ table = Table()
+ table.columns(_("ID"),
+ _("Title"),
+ _("Author"),
+ _("Page"))
+ obj_type = ContentType.objects.get_for_model(djperson)
+ source_refs = dji.SourceRef.filter(object_type=obj_type,
+ object_id=djperson.id)
+ for source_ref in source_refs:
+ source = table.db.get_source_from_handle(source_ref.ref_object.handle)
+ table.row(source,
+ source_ref.ref_object.title,
+ source_ref.ref_object.author,
+ source_ref.page,
+ )
+ return table.get_html()
+
+def person_attribute_table(djperson, user):
+ table = Table()
+ table.columns(_("Type"),
+ _("Value"),
+ )
+ obj_type = ContentType.objects.get_for_model(djperson)
+ attributes = dji.Attribute.filter(object_type=obj_type,
+ object_id=djperson.id)
+ for attribute in attributes:
+ table.row(attribute.attribute_type.name,
+ attribute.value)
+ return table.get_html()
+
+def person_address_table(djperson, user):
+ table = Table()
+ table.columns(_("Date"),
+ _("Address"),
+ _("City"),
+ _("State"),
+ _("Country"))
+ for address in djperson.address_set.all().order_by("order"):
+ locations = address.location_set.all().order_by("order")
+ for location in locations:
+ table.row(display_date(address),
+ location.street,
+ location.city,
+ location.state,
+ location.country)
+ return table.get_html()
+
+def person_note_table(djperson, user):
+ table = Table()
+ table.columns(
+ _("ID"),
+ _("Type"),
+ _("Note"))
+ obj_type = ContentType.objects.get_for_model(djperson)
+ note_refs = dji.NoteRef.filter(object_type=obj_type,
+ object_id=djperson.id)
+ for note_ref in note_refs:
+ note = table.db.get_note_from_handle(
+ note_ref.ref_object.handle)
+ table.row(table.db.get_note_from_handle(note.handle),
+ str(note_ref.ref_object.note_type),
+ note_ref.ref_object.text[:50])
+ return table.get_html()
+
+def person_gallery_table(djperson, user):
+ table = Table()
+ table.columns(_("Name"),
+ _("Type"),
+ )
+ return table.get_html()
+
+def person_internet_table(djperson, user):
+ table = Table()
+ table.columns(_("Type"),
+ _("Path"),
+ _("Description"))
+ urls = dji.Url.filter(person=djperson)
+ for url in urls:
+ table.row(str(url.url_type),
+ url.path,
+ url.desc)
+ return table.get_html()
+
+def person_association_table(djperson, user):
+ table = Table()
+ table.columns(_("Name"),
+ _("ID"),
+ _("Association"))
+ gperson = table.db.get_person_from_handle(djperson.handle)
+ associations = gperson.get_person_ref_list()
+ for association in associations:
+ table.row()
+ return table.get_html()
+
+def person_lds_table(djperson, user):
+ table = Table()
+ table.columns(_("Type"),
+ _("Date"),
+ _("Status"),
+ _("Temple"),
+ _("Place"))
+ obj_type = ContentType.objects.get_for_model(djperson)
+ ldss = djperson.lds_set.all().order_by("order")
+ for lds in ldss:
+ table.row(str(lds.lds_type),
+ display_date(lds),
+ str(lds.status),
+ lds.temple,
+ get_title(lds.place))
+ return table.get_html()
+
+def person_reference_table(djperson, user):
+ table = Table()
+ table.columns(_("Type"),
+ _("ID"),
+ _("Name"))
+ references = dji.PersonRef.filter(ref_object=djperson)
+ for reference in references:
+ table.row(str(reference.reference_type),
+ reference.ref_object.gramps_id,
+ make_name(reference.ref_object))
+ return table.get_html()
+
+def family_children_table(djfamily, user):
+ table = Table()
+ table.columns(_("Column"))
+ table.row("test")
+ return table.get_html()
+
+def family_event_table(djfamily, user):
+ table = Table()
+ table.columns(_("Column"))
+ table.row("test")
+ return table.get_html()
+
+def family_source_table(djfamily, user):
+ table = Table()
+ table.columns(_("Column"))
+ table.row("test")
+ return table.get_html()
+
+def family_attribute_table(djfamily, user):
+ table = Table()
+ table.columns(_("Column"))
+ table.row("test")
+ return table.get_html()
+
+def family_note_table(djfamily, user):
+ table = Table()
+ table.columns(_("Column"))
+ table.row("test")
+ return table.get_html()
+
+def family_gallery_table(djfamily, user):
+ table = Table()
+ table.columns(_("Column"))
+ table.row("test")
+ return table.get_html()
+
+def family_lds_table(djfamily, user):
+ table = Table()
+ table.columns(_("Column"))
+ table.row("test")
+ return table.get_html()
+
## FIXME: these dji function wrappers just use the functions
## written for the import/export. Can be done much more directly.
@@ -142,7 +330,7 @@ def make_name(name, user):
return escape("%s, %s" % (surname, "[Living]"))
else:
return escape("%s, %s" % (surname, name.first_name))
- elif name:
+ elif name: # name_set
name = name.get(preferred=True)
if name:
return make_name(name, user)
{{forloop.counter}} | -{{name|make_name:user}} | -
+ {{ person|person_name_table:user|safe }}
+
+
+ {{ person|person_source_table:user|safe }}
+
+
+ {{ person|person_attribute_table:user|safe }}
+
+
+ {{ person|person_address_table:user|safe }}
+
+
+ {{ person|person_note_table:user|safe }}
+
+
+ {{ person|person_gallery_table:user|safe }}
+
+
+ {{ person|person_internet_table:user|safe }}
+
+
+ {{ person|person_association_table:user|safe }}
+
+
+ {{ person|person_lds_table:user|safe }}
+
+
+ {{ person|person_reference_table:user|safe }}
- table 3
- table 4
- table 5
- table 6
- table 7
- table 8
- table 9
- table 10