Author: jtauber
Date: Sat Sep 27 05:34:56 2008
New Revision: 948

Modified:
    trunk/local_apps/account/templatetags/other_service_tags.py

Log:
other_service tag now supports assignment to variable

Modified: trunk/local_apps/account/templatetags/other_service_tags.py
==============================================================================
--- trunk/local_apps/account/templatetags/other_service_tags.py (original)
+++ trunk/local_apps/account/templatetags/other_service_tags.py Sat Sep 27  
05:34:56 2008
@@ -1,12 +1,45 @@
+import re
+
  from django import template
  from account.models import OtherServiceInfo

  register = template.Library()

-def other_service(user, key):
-    try:
-        value = OtherServiceInfo.objects.get(user=user, key=key).value
-    except OtherServiceInfo.DoesNotExist:
-        value = u""
-    return value
-register.simple_tag(other_service)
\ No newline at end of file
+class OtherServiceNode(template.Node):
+    def __init__(self, user, key, asvar):
+        self.user = user
+        self.key = key
+        self.asvar = asvar
+
+    def render(self, context):
+        user = self.user.resolve(context)
+        key = self.key
+        try:
+            value = OtherServiceInfo.objects.get(user=user, key=key).value
+        except OtherServiceInfo.DoesNotExist:
+            value = ''
+
+        if self.asvar:
+            context[self.asvar] = value
+            return ''
+        else:
+            return value
+
+
[EMAIL PROTECTED]
+def other_service(parser, token):
+    bits = token.contents.split(' ')
+    if len(bits) == 3: # {% other_service user key %}
+        user = parser.compile_filter(bits[1])
+        key = bits[2]
+        asvar = None
+    elif len(bits) == 5: # {% other_service user key as var %}
+        if bits[3] != "as":
+            raise template.TemplateSyntaxError("3rd argument to %s should  
be 'as'" % bits[0])
+        user = parser.compile_filter(bits[1])
+        key = bits[2]
+        asvar = bits[4]
+    else:
+        raise template.TemplateSyntaxError("wrong number of arguments  
to %s" % bits[0])
+
+    return OtherServiceNode(user, key, asvar)

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pinax-updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/pinax-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to