root / snf-astakos-app / astakos / im / templatetags / astakos_tags.py @ 279d6e51
History | View | Annotate | Download (2.2 kB)
1 | 4f78c22c | Sofia Papagiannaki | from django import template |
---|---|---|---|
2 | c0b26605 | Sofia Papagiannaki | from django.core.urlresolvers import resolve |
3 | 4f78c22c | Sofia Papagiannaki | from django.conf import settings |
4 | 4f78c22c | Sofia Papagiannaki | |
5 | 4f78c22c | Sofia Papagiannaki | register = template.Library() |
6 | 4f78c22c | Sofia Papagiannaki | |
7 | 4f78c22c | Sofia Papagiannaki | MESSAGES_VIEWS_MAP = getattr(settings, 'ASTAKOS_MESSAGES_VIEWS_MAP', { |
8 | 4f78c22c | Sofia Papagiannaki | 'astakos.im.views.index': 'LOGIN_MESSAGES', |
9 | 4f78c22c | Sofia Papagiannaki | 'astakos.im.views.logout': 'LOGIN_MESSAGES', |
10 | 4f78c22c | Sofia Papagiannaki | 'astakos.im.views.login': 'LOGIN_MESSAGES', |
11 | 4f78c22c | Sofia Papagiannaki | 'astakos.im.views.signup': 'SIGNUP_MESSAGES', |
12 | 4f78c22c | Sofia Papagiannaki | 'astakos.im.views.edit_profile': 'PROFILE_MESSAGES', |
13 | 4f78c22c | Sofia Papagiannaki | 'astakos.im.views.change_password': 'PROFILE_MESSAGES', |
14 | 4f78c22c | Sofia Papagiannaki | 'astakos.im.views.invite': 'PROFILE_MESSAGES', |
15 | 4f78c22c | Sofia Papagiannaki | 'astakos.im.views.feedback': 'PROFILE_MESSAGES', |
16 | 4f78c22c | Sofia Papagiannaki | }) |
17 | 4f78c22c | Sofia Papagiannaki | |
18 | 9a06d96f | Olga Brani | |
19 | 4f78c22c | Sofia Papagiannaki | @register.tag(name='display_messages') |
20 | 4f78c22c | Sofia Papagiannaki | def display_messages(parser, token): |
21 | 4f78c22c | Sofia Papagiannaki | return MessagesNode()
|
22 | 4f78c22c | Sofia Papagiannaki | |
23 | 9a06d96f | Olga Brani | |
24 | 4f78c22c | Sofia Papagiannaki | class DummyMessage(object): |
25 | 4f78c22c | Sofia Papagiannaki | def __init__(self, type, msg): |
26 | 4f78c22c | Sofia Papagiannaki | self.message = msg
|
27 | 4f78c22c | Sofia Papagiannaki | self.tags = type |
28 | 4f78c22c | Sofia Papagiannaki | |
29 | 4f78c22c | Sofia Papagiannaki | def __repr__(self): |
30 | 4f78c22c | Sofia Papagiannaki | return "%s: %s" % (self.tags, self.message) |
31 | 4f78c22c | Sofia Papagiannaki | |
32 | 9a06d96f | Olga Brani | |
33 | 4f78c22c | Sofia Papagiannaki | class MessagesNode(template.Node): |
34 | 4f78c22c | Sofia Papagiannaki | |
35 | 4f78c22c | Sofia Papagiannaki | def get_view_messages(self, context): |
36 | 4f78c22c | Sofia Papagiannaki | messages = list(context['GLOBAL_MESSAGES']) |
37 | 4f78c22c | Sofia Papagiannaki | try:
|
38 | 4f78c22c | Sofia Papagiannaki | view = resolve(context['request'].get_full_path())[0] |
39 | 4f78c22c | Sofia Papagiannaki | view_name = "%s.%s" % (view.__module__, view.func_name)
|
40 | 4f78c22c | Sofia Papagiannaki | messages += context[MESSAGES_VIEWS_MAP.get(view_name)] |
41 | 4f78c22c | Sofia Papagiannaki | return messages
|
42 | 4f78c22c | Sofia Papagiannaki | except Exception, e: |
43 | 4f78c22c | Sofia Papagiannaki | return messages
|
44 | 4f78c22c | Sofia Papagiannaki | |
45 | 4f78c22c | Sofia Papagiannaki | def render(self, context): |
46 | 4f78c22c | Sofia Papagiannaki | if self not in context.render_context: |
47 | 4f78c22c | Sofia Papagiannaki | messages = list(context['messages']) |
48 | 4f78c22c | Sofia Papagiannaki | if context['EXTRA_MESSAGES_SET']: |
49 | 4f78c22c | Sofia Papagiannaki | view_messages = self.get_view_messages(context)
|
50 | 4f78c22c | Sofia Papagiannaki | for msg_object in view_messages: |
51 | 4f78c22c | Sofia Papagiannaki | messages.append(DummyMessage(msg_object[0], msg_object[1])) |
52 | 4f78c22c | Sofia Papagiannaki | |
53 | 4f78c22c | Sofia Papagiannaki | if not messages: |
54 | 4f78c22c | Sofia Papagiannaki | return "" |
55 | 4f78c22c | Sofia Papagiannaki | |
56 | 4f78c22c | Sofia Papagiannaki | cls = messages[-1].tags
|
57 | 4f78c22c | Sofia Papagiannaki | content = '<div class="top-msg active %s">' % cls
|
58 | 4f78c22c | Sofia Papagiannaki | for msg in messages: |
59 | 9a06d96f | Olga Brani | content += '<div class="msg %s">%s</div>' % (
|
60 | 9a06d96f | Olga Brani | msg.tags, msg.message) |
61 | 4f78c22c | Sofia Papagiannaki | |
62 | 4f78c22c | Sofia Papagiannaki | content += '<a href="#" title="close" class="close">X</a>'
|
63 | 4f78c22c | Sofia Papagiannaki | content += '</div>'
|
64 | 4f78c22c | Sofia Papagiannaki | context.render_context[self] = content
|
65 | 4f78c22c | Sofia Papagiannaki | |
66 | 4f78c22c | Sofia Papagiannaki | return context.render_context[self] |
67 | 279d6e51 | Olga Brani | |
68 | 279d6e51 | Olga Brani | |
69 | 279d6e51 | Olga Brani | @register.simple_tag
|
70 | 279d6e51 | Olga Brani | def olga(v): |
71 | 279d6e51 | Olga Brani | return v+'a' |