diff options
Diffstat (limited to 'django/archives/util.py')
-rw-r--r-- | django/archives/util.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/django/archives/util.py b/django/archives/util.py index 4bfe306..425fffe 100644 --- a/django/archives/util.py +++ b/django/archives/util.py @@ -1,5 +1,6 @@ from django.http import HttpResponse from django.db import connection +from django.utils.functional import SimpleLazyObject def validate_new_user(username, email, firstname, lastname): # Only allow user creation if they are already a subscriber @@ -13,3 +14,31 @@ def validate_new_user(username, email, firstname, lastname): return HttpResponse("You are not currently subscribed to any mailing list on this server. Account not created.") +def _get_gitrev(): + # Return the current git revision, that is used for + # cache-busting URLs. + try: + with open('../.git/refs/heads/master') as f: + return f.readline()[:8] + except IOError: + # A "git gc" will remove the ref and replace it with a packed-refs. + try: + with open('../.git/packed-refs') as f: + for l in f.readlines(): + if l.endswith("refs/heads/master\n"): + return l[:8] + # Not found in packed-refs. Meh, just make one up. + return 'ffffffff' + except IOError: + # If packed-refs also can't be read, just give up + return 'eeeeeeee' + +# Template context processor to add information about the root link and +# the current git revision. git revision is returned as a lazy object so +# we don't spend effort trying to load it if we don't need it (though +# all general pages will need it since it's used to render the css urls) +def PGWebContextProcessor(request): + gitrev = SimpleLazyObject(_get_gitrev) + return { + 'gitrev': gitrev, + } |