From d62afc815f07632bf4079f4ee1bbedad9e64232a Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Mon, 4 Jun 2012 20:58:05 +0000 Subject: [PATCH] Infrastructure to allow going back to browse page; deleted unneeded templates svn: r19756 --- src/data/templates/detail_breadcrumb.html | 9 +-- .../templates/person_detail-one name.html | 31 --------- src/data/templates/person_detail.html | 69 ------------------- src/data/templates/places.html | 9 --- src/data/templates/pname.html | 49 ------------- src/data/templates/process_action.html | 10 --- .../templates/successful_data_change.html | 9 --- src/data/templates/view_detail_page.html | 10 --- src/data/templates/view_name_detail.html | 6 +- src/data/templates/view_page.html | 3 +- src/data/templates/view_people.html | 14 ++-- src/data/templates/view_person_detail.html | 12 ++-- src/data/templates/view_surname_detail.html | 6 +- src/webapp/grampsdb/admin.py | 2 - src/webapp/grampsdb/models.py | 10 +++ src/webapp/grampsdb/templatetags/my_tags.py | 11 ++- src/webapp/grampsdb/view/person.py | 34 +++++---- src/webapp/grampsdb/views.py | 8 ++- src/webapp/utils.py | 39 ++++++++--- 19 files changed, 105 insertions(+), 236 deletions(-) delete mode 100644 src/data/templates/person_detail-one name.html delete mode 100644 src/data/templates/person_detail.html delete mode 100644 src/data/templates/places.html delete mode 100644 src/data/templates/pname.html delete mode 100644 src/data/templates/process_action.html delete mode 100644 src/data/templates/successful_data_change.html delete mode 100644 src/data/templates/view_detail_page.html diff --git a/src/data/templates/detail_breadcrumb.html b/src/data/templates/detail_breadcrumb.html index d224eb838..13777511a 100644 --- a/src/data/templates/detail_breadcrumb.html +++ b/src/data/templates/detail_breadcrumb.html @@ -1,5 +1,6 @@ {% load my_tags %} - - {% filter breadcrumb %} - {% format "/browse|Browse,/%s|%s,/%s/%s|%s [%s]" view tviews view object.handle tview object.gramps_id %} - {% endfilter %} +{% filter breadcrumb %} + {% format "/browse|Browse" %}|| + {% format "/%s/%s|%s" view args tviews %}|| + {% format "/%s/%s|%s [%s]" view object.handle tview object.gramps_id %} +{% endfilter %} diff --git a/src/data/templates/person_detail-one name.html b/src/data/templates/person_detail-one name.html deleted file mode 100644 index c48a687f6..000000000 --- a/src/data/templates/person_detail-one name.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "base.html" %} - -{% block windowtitle %}Person Details{% endblock %} - -{% block pagetitle %}{{Pname}}{% endblock %} - -{% block content %} -
{% csrf_token %} - - - {% for field in NForm %} -
- - - - - - {% endfor %} -
Preferred Name
{{ field.label_tag }}: {{ field }}

{{ field.help_text }}

{{ field.errors }}
- - {% for field in PForm %} -
- - - - - {% endfor %} -
{{ field.label_tag }}: {{ field }}

{{ field.help_text }}

{{ field.errors }}
- -
-{% endblock %} diff --git a/src/data/templates/person_detail.html b/src/data/templates/person_detail.html deleted file mode 100644 index 0f626d4c2..000000000 --- a/src/data/templates/person_detail.html +++ /dev/null @@ -1,69 +0,0 @@ -{% extends "base.html" %} - -{% block windowtitle %}Person Details{% endblock %} - -{% block pagetitle %}{{Pname}}{% endblock %} - -{% block content %} -
{% csrf_token %} - {{ NForm.management_form }} - Names (hide) -
- - - - - - - - - - - {% for form in NForm.forms %} - - {% for field in form %} - - {% endfor %} - - {% endfor %} - -
Preferred Name?PrefixFirst NameSurnameSuffixType of NameDelete

{{ field }}

-

{{ field.errors }}

{{ NamesetError }}
- - - - - - - - - - - - - -
Reference ID: {{PForm.gramps_id}}{{PForm.private}} Private Last Changed: {{PLastChanged}} -

{{PForm.last_changed.errors}}

Marker: {{PForm.marker_type}} -

{{PForm.marker_type.errors}}

Gender: {{PForm.gender_type}} -

{{PForm.gender_type.errors}}

Parent in these families: - ( - Edit)

    {% for family in ParentF %} -
  • {{family}}
  • - {% endfor %}

Child in these families: - ( Edit)

    {% for family in ChildF %} -
  • {{family}}
  • - {% endfor %}
- - - - -
- -
-{% endblock %} diff --git a/src/data/templates/places.html b/src/data/templates/places.html deleted file mode 100644 index 2c6f6202e..000000000 --- a/src/data/templates/places.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "base.html" %} - -{% block windowtitle %}Places{% endblock %} - -{% block pagetitle %}Places{% endblock %} - -{% block content %} - Congratulations, you found Places -{% endblock %} diff --git a/src/data/templates/pname.html b/src/data/templates/pname.html deleted file mode 100644 index bf4ebd875..000000000 --- a/src/data/templates/pname.html +++ /dev/null @@ -1,49 +0,0 @@ - {{ NForm.management_form }} - - - - - - - - - - - - {% for form in NForm.forms %} -
- - {% for field in form %} - - {% endfor %} - - - - - - - {% endfor %} - -{{ NForm.management_form }} -
Names:
{{ field }}
{{ field.label_tag }}: {{ field }}

{{ field.help_text }}

{{ field.errors }}
- - - - - - - - - {% for form in NForm.forms %} - {% for field in form %} - - {% endfor %} - - - {% endfor %} -
Preferred Name?PrefixFirst NameSurnameSuffixType of NameDelete
{{ field }}

{{ field.errors }}

\ No newline at end of file diff --git a/src/data/templates/process_action.html b/src/data/templates/process_action.html deleted file mode 100644 index 988785a91..000000000 --- a/src/data/templates/process_action.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "view_page_detail.html" %} -{% load my_tags %} - -{% block windowtitle %}Process Action{% endblock %} - -{% block pagetitle %}Process Action{% endblock %} - -{% block content %} - {{message}} -{% endblock %} diff --git a/src/data/templates/successful_data_change.html b/src/data/templates/successful_data_change.html deleted file mode 100644 index ad07ad98b..000000000 --- a/src/data/templates/successful_data_change.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "base.html" %} - -{% block windowtitle %}Data Changes Successfully Saved{% endblock %} - -{% block pagetitle %}Data Changes Successfully Saved{% endblock %} - -{% block content %} - Congratulations, your data changes were successful! -{% endblock %} diff --git a/src/data/templates/view_detail_page.html b/src/data/templates/view_detail_page.html deleted file mode 100644 index 06abdbd51..000000000 --- a/src/data/templates/view_detail_page.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "gramps-base.html" %} -{% block title %}{{sitename}}: {{tview}} detail {% endblock %} -{% block heading %}{{sitename}}: {{tview}} detail {% endblock %} - -{% block content %} - -{{tview}} Detail page. - -{% endblock %} - diff --git a/src/data/templates/view_name_detail.html b/src/data/templates/view_name_detail.html index fc9782bce..590521a77 100644 --- a/src/data/templates/view_name_detail.html +++ b/src/data/templates/view_name_detail.html @@ -16,10 +16,12 @@
{% filter breadcrumb %} - {% format "/browse|Browse,/person|People,/person/%s|Person [%s],/person/%s/name/%s|Name #%s" object.handle object.gramps_id object.handle order order %} + {% format "/browse|Browse" %} || + {% format "/person|People" %} || + {% format "/person/%s|Person [%s]" object.handle object.gramps_id %} || + {% format "/person/%s/name/%s|Name #%s" object.handle order order %} {% endfilter %} -

{{nameform.model|make_name:user}} [{{person.gramps_id}}]

{% comment %} 4 cols {% endcomment %} diff --git a/src/data/templates/view_page.html b/src/data/templates/view_page.html index 1a0a79463..2245e7421 100644 --- a/src/data/templates/view_page.html +++ b/src/data/templates/view_page.html @@ -10,7 +10,8 @@ {% if tview != "Report" %} {% filter breadcrumb %} - {% format "/browse|Browse,/%s|%s" view tviews %} + {% format "/browse|Browse" %} || + {% format "/%s|%s" view tviews %} {% endfilter %} {% endif %} diff --git a/src/data/templates/view_people.html b/src/data/templates/view_people.html index dab10a05f..8fe89ab9e 100644 --- a/src/data/templates/view_people.html +++ b/src/data/templates/view_people.html @@ -18,14 +18,14 @@ {% for name in page.object_list %} {% if name.person %} - - - - - - + + + + {% endif %} {% endfor %} @@ -33,7 +33,7 @@
{{ forloop.counter|row_count:page }} + {{ forloop.counter|row_count:page }} {{name|make_name:user}}   + {{name|make_name:user}}   [{{name.person.gramps_id}}]{{name.person.gender_type}}  {{name.person.birth|date_as_text:user}}  {{name.person.death|date_as_text:user}}  [{{name.person.gramps_id}}]{{name.person.gender_type}}  {{name.person.birth|date_as_text:user}}  {{name.person.death|date_as_text:user}}  
{% if user.is_superuser %} - {% make_button "Add Person" "/person/add" %} + {% make_button "Add Person" "/person/add" args %} {% endif %} {% endblock %} diff --git a/src/data/templates/view_person_detail.html b/src/data/templates/view_person_detail.html index 66b79d25f..5768fbfbd 100644 --- a/src/data/templates/view_person_detail.html +++ b/src/data/templates/view_person_detail.html @@ -133,18 +133,22 @@ {% if user.is_superuser %} {% if action == "edit" %} - {% make_button "Cancel" "/person/%s" person.handle %} + {% make_button "Cancel" "/person/%s" person.handle args %} + + {% else %} {% ifequal action "add" %} {% make_button "Cancel" "/person/" %} + + {% else %} - {% make_button "Add Person" "/person/add" %} - {% make_button "Edit Person" "/person/%s/edit" person.handle %} - {% make_button "Delete Person" "/person/%s/delete" person.handle %} + {% make_button "Add Person" "/person/add" args %} + {% make_button "Edit Person" "/person/%s/edit" person.handle args %} + {% make_button "Delete Person" "/person/%s/delete" person.handle args %} {% endifequal %} {% endif %} {% else %} diff --git a/src/data/templates/view_surname_detail.html b/src/data/templates/view_surname_detail.html index 0fd3e48ea..42be1c7ed 100644 --- a/src/data/templates/view_surname_detail.html +++ b/src/data/templates/view_surname_detail.html @@ -16,10 +16,12 @@
{% filter breadcrumb %} - {% format "/browse|Browse,/person|People,/person/%s|Person [%s],/person/%s/name/%s|Name #%s" object.handle object.gramps_id object.handle order order %} + {% format "/browse|Browse" %} || + {% format "/person|People" %} || + {% format "/person/%s|Person [%s]" object.handle object.gramps_id %} || + {% format "/person/%s/name/%s|Name #%s" object.handle order order %} {% endfilter %} -

{{person|make_name:user}} [{{person.gramps_id}}]

{% comment %} 4 cols {% endcomment %} diff --git a/src/webapp/grampsdb/admin.py b/src/webapp/grampsdb/admin.py index 26c2567fd..8bc2a70b8 100644 --- a/src/webapp/grampsdb/admin.py +++ b/src/webapp/grampsdb/admin.py @@ -24,8 +24,6 @@ from webapp.grampsdb.models import * from django.contrib import admin -print dir(admin.ModelAdmin) - class MyAdmin(admin.ModelAdmin): def change_view(self, request, object_id, extra_context=None): print "object_id:", object_id diff --git a/src/webapp/grampsdb/models.py b/src/webapp/grampsdb/models.py index 8e0406a25..9464b2f14 100644 --- a/src/webapp/grampsdb/models.py +++ b/src/webapp/grampsdb/models.py @@ -645,6 +645,12 @@ class Surname(models.Model): def __unicode__(self): return "%s" % self.surname + def get_url(self): + # /person/handle/name/1/surname/2 + return "/person/%s/name/%s/surname/%s" % (self.name.person.handle, + self.name.order, + self.order) + class Name(DateObject, SecondaryObject): name_type = models.ForeignKey('NameType', verbose_name="Type", related_name="name_code", @@ -693,6 +699,10 @@ class Name(DateObject, SecondaryObject): tuple(x.name_origin_type), x.connector) for x in self.surname_set.all()] + def get_url(self): + # /person/handle/name/1 + return "/person/%s/name/%s" % (self.person.handle, self.order) + class Lds(DateObject, SecondaryObject): """ BAPTISM = 0 diff --git a/src/webapp/grampsdb/templatetags/my_tags.py b/src/webapp/grampsdb/templatetags/my_tags.py index 5f0738b38..b8b16441f 100644 --- a/src/webapp/grampsdb/templatetags/my_tags.py +++ b/src/webapp/grampsdb/templatetags/my_tags.py @@ -149,11 +149,11 @@ def breadcrumb(path, arg=None): if arg: path = path.replace("{0}", arg) retval = "" - for item in path.split(","): - p, name = item.split("|") + for item in path.split("||"): + p, name = item.split("|", 1) if retval != "": retval += " > " - retval += '%s' % (p, name) + retval += '%s' % (p.strip(), name.strip()) return "

%s

" % retval breadcrumb.is_safe = True register.filter('breadcrumb', breadcrumb) @@ -181,6 +181,11 @@ def format(string, arg0=None, arg1=None, arg2=None, arg3=None, arg4=None, arg5=N format.is_safe = True register.simple_tag(format) +def make_args(search, page): + return webapp.utils.build_args(search=search, page=page) +make_args.is_safe = True +register.simple_tag(make_args) + def currentSection(view1, view2): # tview, menu if view1.strip().lower() in [view[1] for view in VIEWS] and view2 == "browse": return "class=CurrentSection" diff --git a/src/webapp/grampsdb/view/person.py b/src/webapp/grampsdb/view/person.py index a1df53992..05f7cd413 100644 --- a/src/webapp/grampsdb/view/person.py +++ b/src/webapp/grampsdb/view/person.py @@ -22,7 +22,7 @@ """ Views for Person, Name, and Surname """ ## Gramps Modules -from webapp.utils import _, boolean, update_last_changed +from webapp.utils import _, boolean, update_last_changed, build_search from webapp.grampsdb.models import Person, Name, Surname from webapp.grampsdb.forms import * from webapp.libdjango import DjangoInterface @@ -146,7 +146,8 @@ def process_surname(request, handle, order, sorder, action="view"): neworder += 1 else: request.user.message_set.create(message="You can't delete the only surname") - return redirect("/person/%s/name/%s#tab-surnames" % (person.handle, name.order)) + return redirect("/person/%s/name/%s%s#tab-surnames" % (person.handle, name.order, + build_search(request))) elif action in ["add"]: surname = Surname(name=name, primary=False, name_origin_type=NameOriginType.objects.get(val=NameOriginType._DEFAULT[0])) @@ -166,8 +167,9 @@ def process_surname(request, handle, order, sorder, action="view"): surname = sf.save(commit=False) check_primary(surname, surnames) surname.save() - return redirect("/person/%s/name/%s/surname/%s#tab-surnames" % - (person.handle, name.order, sorder)) + return redirect("/person/%s/name/%s/surname/%s%s#tab-surnames" % + (person.handle, name.order, sorder, + build_search(request))) action = "add" surname.prefix = make_empty(True, surname.prefix, " prefix ") elif action == "save": @@ -179,13 +181,14 @@ def process_surname(request, handle, order, sorder, action="view"): surname = sf.save(commit=False) check_primary(surname, name.surname_set.all().exclude(order=surname.order)) surname.save() - return redirect("/person/%s/name/%s/surname/%s#tab-surnames" % - (person.handle, name.order, sorder)) + return redirect("/person/%s/name/%s/surname/%s%s#tab-surnames" % + (person.handle, name.order, sorder, + build_search(request))) action = "edit" surname.prefix = make_empty(True, surname.prefix, " prefix ") # else, edit again else: - raise + raise Exception("unknown action: '%s'" % action) sf = SurnameForm(instance=surname) sf.model = surname @@ -209,7 +212,7 @@ def process_name(request, handle, order, action="view"): if request.POST.has_key("action"): action = request.POST.get("action") ### Process action: - if action == "view": + if action in "view": pf, nf, sf, person = get_person_forms(handle, order=order) name = nf.model elif action == "edit": @@ -224,7 +227,8 @@ def process_name(request, handle, order, action="view"): check_order(request, person) else: request.user.message_set.create(message = "Can't delete only name.") - return redirect("/person/%s#tab-names" % person.handle) + return redirect("/person/%s%s#tab-names" % (person.handle, + build_search(request))) elif action == "add": # add name person = Person.objects.get(handle=handle) name = Name(person=person, @@ -275,7 +279,8 @@ def process_name(request, handle, order, action="view"): surname.primary = True # FIXME: why is this False? surname.save() dji.rebuild_cache(person) - return redirect("/person/%s/name/%s#tab-surnames" % (person.handle, name.order)) + return redirect("/person/%s/name/%s%s#tab-surnames" % (person.handle, name.order, + build_search(request))) else: action = "add" elif action == "save": @@ -309,7 +314,8 @@ def process_name(request, handle, order, action="view"): surname.primary = True # FIXME: why is this False? surname.save() dji.rebuild_cache(person) - return redirect("/person/%s/name/%s#tab-surnames" % (person.handle, name.order)) + return redirect("/person/%s/name/%s%s#tab-surnames" % (person.handle, name.order, + build_search(request))) else: action = "edit" context = RequestContext(request) @@ -342,7 +348,7 @@ def process_person(request, context, handle, action, add_to=None): # view, edit, elif action == "delete": pf, nf, sf, person = get_person_forms(handle, protect=False, empty=True) person.delete() - return redirect("/person/") + return redirect("/person/%s" % build_search(request)) elif action in ["save", "create"]: # could be create a new person # look up old data, if any: if handle: @@ -391,8 +397,8 @@ def process_person(request, context, handle, action, add_to=None): # view, edit, model = dji.get_model(item) obj = model.objects.get(handle=handle) dji.add_person_ref_default(obj, person) - return redirect("/%s/%s" % (item, handle)) - return redirect("/person/%s" % person.handle) + return redirect("/%s/%s%s" % (item, handle, build_search(request))) + return redirect("/person/%s%s" % (person.handle, build_search(request))) else: # need to edit again if handle: diff --git a/src/webapp/grampsdb/views.py b/src/webapp/grampsdb/views.py index a2d7710ad..ed56f603d 100644 --- a/src/webapp/grampsdb/views.py +++ b/src/webapp/grampsdb/views.py @@ -54,7 +54,7 @@ from django.forms.models import modelformset_factory # #------------------------------------------------------------------------ import webapp -from webapp.utils import _ +from webapp.utils import _, build_args from webapp.grampsdb.models import * from webapp.grampsdb.view import * from webapp.dbdjango import DbDjango @@ -102,6 +102,12 @@ def context_processor(request): context["False"] = False context["sitename"] = Config.objects.get(setting="sitename").value context["default"] = "" + + search = request.GET.get("search", None) or request.POST.get("search", None) + page = request.GET.get("page", None) or request.POST.get("page", None) + context["page"] = page + context["search"] = search + context["args"] = build_args(search=search, page=page) return context def main_page(request): diff --git a/src/webapp/utils.py b/src/webapp/utils.py index 693f7c517..85328b7c4 100644 --- a/src/webapp/utils.py +++ b/src/webapp/utils.py @@ -227,10 +227,36 @@ class Table(object): # We have a couple of HTML bits that we want to unescape: return str(self.doc.doc.htmllist[0]).replace(" ", " ") +def build_args(**kwargs): + retval = "" + first = True + for key in kwargs: + if kwargs[key] is not None: + if first: + retval+= "?" + first = False + else: + retval += "&" + retval += "%s=%s" % (key, kwargs[key]) + return retval + +def build_search(request): + search = request.GET.get("search", None) or request.POST.get("search", None) + page = request.GET.get("page", None) or request.POST.get("page", None) + return build_args(search=search, page=page) + def make_button(text, url, *args): - url = url % args - #return """[ %s ] """ % (url, text) - return """""" % (text, url) + newargs = [] + kwargs = "" + for arg in args: + if arg.startswith("?"): + kwargs = arg + elif arg == "": + pass + else: + newargs.append(arg) + url = url % tuple(newargs) + return mark_safe("""""" % (text, url, kwargs)) def event_table(obj, user, action, url, args): retval = "" @@ -314,13 +340,8 @@ def surname_table(obj, user, action, url=None, *args): except: name = None if name: - links = [] for surname in name.surname_set.all().order_by("order"): - table.row(str(surname.order), surname.surname) - links.append(('URL', - # url is "/person/%s/name/%s/surname" - (url % args) + ("/%s" % surname.order))) - table.links(links) + table.row(str(surname.order), surname) retval += table.get_html() else: retval += "

No such name order = %s

" % order