Django debug support; added table support; add missing DjangoDb funcs; minor css tweaks

svn: r13594
This commit is contained in:
Doug Blank
2009-11-15 22:47:43 +00:00
parent fa21027a23
commit 313bcfa0cd
7 changed files with 332 additions and 67 deletions

View File

@@ -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()]

View File

@@ -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)

View File

@@ -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 = ''

View File

@@ -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)