bgolub / fftogo

Mobile FriendFeed Client

Benjamin Golub (author)
Sat Jun 20 12:20:32 -0700 2009
fftogo / fftogo / templatetags / fftogo_tags.py
100644 134 lines (121 sloc) 3.603 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
from django import template
from google.appengine.api import memcache
 
register = template.Library()
 
@register.filter
def filter_media(value):
    return value[:3]
 
@register.filter
def filter_thumbnails(value):
    return value[:1]
 
@register.filter
def summary(value):
    services = {
        'dailymotion': {
            'favorite': 'favorites',
        },
        'digg': {
            'comment': 'comments',
        },
        'facebook': {
            'note': 'notes',
            'post': 'posts',
        },
        'flickr': {
            'favorite': 'favorites',
        },
        'hatena': {
            'bookmark': 'bookmarks',
            'photo': 'photos',
            'post': 'posts',
        },
        'meneame': {
            'comment': 'comments',
        },
        'netflix': {
            'queue': 'queue',
            'instant': 'instant queue',
        },
        'netvibes': 'starred',
        'pandora': {
            'artist': 'artist',
        },
        'reddit': {
            'comment': 'comments',
        },
        'vimeo': {
            'like': 'favorites',
        },
        'wakoopa': {
            'review': 'reviews',
        },
        'youtube': {
            'favorite': 'favorites',
        },
        'zooomr': {
            'favorite': 'favorites',
        },
    }
    service = value['service']
    if service['id'] == 'internal':
        return ''
    entryType = service.get('entryType', None)
    type = services.get(service['id'], {}).get(entryType)
    if type:
        return ' '.join([service['name'], type])
    return service['name']
 
@register.filter
def gmpize(value, arg=None):
    if arg:
        if not 'fftogo.com' in value:
            value = 'http://www.google.com/gwt/n?u=%s' % value
        return value
    from BeautifulSoup import BeautifulSoup
    soup = BeautifulSoup(value)
    for a in soup.findAll('a'):
        if not 'fftogo.com' in a['href']:
            a['href'] = 'http://www.google.com/gwt/n?u=%s' % a['href']
    return soup
 
@register.filter
def is_admin(value, arg):
    return value in [administrator['nickname'] for administrator in arg['administrators']]
 
@register.filter
def is_message(value):
    services = (
        'googletalk',
        'identica',
        'plurk',
        'twitter',
    )
    if value['service']['id'] in services:
        return True
    if value['service']['id'] == 'jaiku':
        return value['service']['profileUrl'].lower() in value['link'].lower()
    if value['service']['id'] == 'facebook':
        return value['service'].get('entryType', None) != 'post'
    if value['service']['id'] == 'feed':
        return value['service'].get('entryType', None) != 'post'
    return value['link'] == 'http://friendfeed.com/e/%s' % value['id']
 
@register.filter
def likeable(value, arg):
    if value['anonymous']:
        return True
    return value['user']['nickname'] != arg
 
@register.filter
def liked(value, arg):
    return value in [like['user']['nickname'] for like in arg['likes']]
 
@register.filter
def shorten_comments(value, arg):
    if len(value) > 3 and len(arg) > 1:
        return value[:1] + [{'permalink': True, 'num': len(value) - 2},] + value[-1:]
    return value
 
@register.filter
def shorten_likes(value, arg):
    if len(value) > 4 and len(arg) > 1:
        return value[:3] + [{'permalink': True, 'num': len(value) - 3},]
    return value
 
@register.filter
def twitterize(value):
    import re
    for user in re.findall(r'@(\w+)', value):
        value = value.replace('@%s' % user, '@<a href="http://twitter.com/%s">%s</a>' % (user, user))
    return value