From 3b1b677b49af194313da766579e9fa1a021afd84 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 1 Dec 2013 23:15:30 -0600 Subject: Speed up master key listing page We were spending a lot of time getting the developer name for a given key on this page, which involved sending one query per key ID. Use the cache to our advantage here and save ourselves the "expensive" lookups. This eliminates ~100 queries per page load. Signed-off-by: Dan McGee --- main/templatetags/pgp.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'main/templatetags') diff --git a/main/templatetags/pgp.py b/main/templatetags/pgp.py index e93e5bca..cc080439 100644 --- a/main/templatetags/pgp.py +++ b/main/templatetags/pgp.py @@ -3,6 +3,7 @@ from django.utils.html import conditional_escape from django.utils.safestring import mark_safe +from ..utils import cache_function from devel.models import DeveloperKey register = template.Library() @@ -42,15 +43,22 @@ def pgp_key_link(key_id, link_text=None): values = (url, format_key(key_id), link_text) return '%s' % values -@register.simple_tag -def user_pgp_key_link(key_id): - normalized = key_id[-16:] + +@cache_function(1800) +def name_for_key(normalized): try: matching_key = DeveloperKey.objects.select_related( 'owner').get(key=normalized, owner_id__isnull=False) + return matching_key.owner.get_full_name() except DeveloperKey.DoesNotExist: - return pgp_key_link(key_id) - return pgp_key_link(key_id, matching_key.owner.get_full_name()) + return None + + +@register.simple_tag +def user_pgp_key_link(key_id): + normalized = key_id[-16:] + name = name_for_key(normalized) + return pgp_key_link(key_id, name) @register.filter(needs_autoescape=True) -- cgit v1.2.3-54-g00ecf From 6d352bc62361edd4ce15189e31fccff5f0eb5e9a Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 22 Dec 2013 21:47:41 -0500 Subject: Pull the bug link generation into a templatetag --- README.BRANDING | 1 + main/templatetags/bugs.py | 6 ++++++ templates/mirrors/mirror_details.html | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 main/templatetags/bugs.py (limited to 'main/templatetags') diff --git a/README.BRANDING b/README.BRANDING index a3855f77..e75eaeb9 100644 --- a/README.BRANDING +++ b/README.BRANDING @@ -9,6 +9,7 @@ Files used to configure branding/url stuff * `settings.py` * `templates/templatetags/package_extras.py` * `main/templatetags/wiki.py` + * `main/templatetags/bugs.py` Files with minor Arch stuff that's just easier to patch ------------------------------------------------------- diff --git a/main/templatetags/bugs.py b/main/templatetags/bugs.py new file mode 100644 index 00000000..d5764435 --- /dev/null +++ b/main/templatetags/bugs.py @@ -0,0 +1,6 @@ +from django import template +register = template.Library() + +@register.simple_tag +def bug_link(bugid): + return "FS#"+bugid+"" diff --git a/templates/mirrors/mirror_details.html b/templates/mirrors/mirror_details.html index a6abcb5e..09e24925 100644 --- a/templates/mirrors/mirror_details.html +++ b/templates/mirrors/mirror_details.html @@ -55,7 +55,7 @@

Mirror Details: {{ mirror.name }}

Flyspray Issue: - {% if mirror.bug %}FS#{{ mirror.bug }}{% endif %} + {% if mirror.bug %}{% bug_link mirror.bug %}{% endif %} Notes: -- cgit v1.2.3-54-g00ecf