def active(request): url = request.GET.get('url', '') domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active_users = [] active_dusers = [] eyehists = EyeHistory.objects.filter( (Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id)).order_by('-end_time').select_related() for eyehist in eyehists: if len(used_users) >= 6: break user = eyehist.user if user not in used_users: old_level = 3 if eyehist.end_time > \ (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 if url == eyehist.url: active_users.append({ 'username': user.username, 'pic_url': gravatar_for_user(user), 'resourceURI': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time(timezone.now() - eyehist.end_time) }) else: active_dusers.append({ 'username': user.username, 'pic_url': gravatar_for_user(user), 'resourceURI': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time(timezone.now() - eyehist.end_time) }) used_users.append(user) return {'result': {'page': active_users, 'domain': active_dusers}}
def active(request): url = request.GET.get('url', '') domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active_users = [] active_dusers = [] eyehists = EyeHistory.objects.filter( (Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id) ).order_by('-end_time').select_related() for eyehist in eyehists: if len(used_users) >= 6: break user = eyehist.user if user not in used_users: old_level = 3 if eyehist.end_time > \ (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 if url == eyehist.url: active_users.append({'username': user.username, 'pic_url': gravatar_for_user(user), 'resourceURI': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time( timezone.now() - eyehist.end_time) }) else: active_dusers.append({'username': user.username, 'pic_url': gravatar_for_user(user), 'resourceURI': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time( timezone.now() - eyehist.end_time) }) used_users.append(user) return { 'result': { 'page': active_users, 'domain': active_dusers } }
def get_messages(request): url = request.GET.get("url") messages = EyeHistoryMessage.objects.filter( eyehistory__url=url).order_by('-post_time').select_related() message_list = [] for message in messages: eye_hist = message.eyehistory message_list.append({ 'message': message.message, 'post_time': str(message.post_time), 'username': eye_hist.user.username, 'pic_url': gravatar_for_user(eye_hist.user), 'user_url': '%s/users/%s' % (BASE_URL, eye_hist.user.username), 'hum_time': humanize_time(timezone.now() - message.post_time) + ' ago' }) return { 'result': { 'messages': message_list, } }
def get_messages(request): url = request.GET.get('url', '') messages = EyeHistoryMessage.objects.filter(eyehistory__url=url).order_by('-post_time').select_related() message_list = [] for message in messages: eye_hist = message.eyehistory m = twitter_username_re.sub(lambda m: '<a href="http://eyebrowse.csail.mit.edu/users/%s">%s</a>' % (m.group(1), m.group(0)), message.message) message_list.append({'message': m, 'post_time': str(message.post_time), 'username': eye_hist.user.username, 'pic_url': gravatar_for_user(eye_hist.user), 'user_url': '%s/users/%s' % (BASE_URL, eye_hist.user.username), 'hum_time': humanize_time( timezone.now() - message.post_time) + ' ago' }) return { 'result': { 'messages': message_list, } }
def get_messages(request): url = request.GET.get('url', '') messages = EyeHistoryMessage.objects.filter( eyehistory__url=url).order_by('-post_time').select_related() message_list = [] for message in messages: eye_hist = message.eyehistory m = twitter_username_re.sub( lambda m: '<a href="http://eyebrowse.csail.mit.edu/users/%s">%s</a>' % (m.group(1), m.group(0)), message.message) message_list.append({ 'message': m, 'post_time': str(message.post_time), 'username': eye_hist.user.username, 'pic_url': gravatar_for_user(eye_hist.user), 'user_url': '%s/users/%s' % (BASE_URL, eye_hist.user.username), 'hum_time': humanize_time(timezone.now() - message.post_time) + ' ago' }) return { 'result': { 'messages': message_list, } }
def comments_by_page(request): success = False errors = {} data = {} highlights = {} errors['comments_by_page'] = [] if request.GET: url = process_url(request.GET.get('url')) try: cs = EyeHistoryMessage.objects.filter(highlight__page__url=url) for c in cs: from_zone = tz.tzutc() to_zone = tz.tzlocal() date = c.post_time.replace(tzinfo=from_zone) local = date.astimezone(to_zone) user_profile = UserProfile.objects.get(user=c.eyehistory.user) pic = user_profile.pic_url if not pic: pic = gravatar_for_user(c.eyehistory.user) pic = 'https://%s' % pic[7:] if c.highlight.id in data: data[c.highlight.id].append({ 'comment': c.message, 'date': local.strftime('%b %m, %Y, %I:%M %p'), 'user': c.eyehistory.user.username, 'prof_pic': pic, 'id': c.id, }) else: data[c.highlight.id] = [{ 'comment': c.message, 'date': local.strftime('%b %m, %Y, %I:%M %p'), 'user': c.eyehistory.user.username, 'prof_pic': pic, 'id': c.id, }] highlights[c.highlight.id] = c.highlight.highlight success = True except: errors['comments_by_page'].append('Could not get comments') return { 'success': success, 'errors': errors, 'comments': data, 'highlights': highlights, }
def add_comment(request): success = False user = request.user errors = {} comment = {} if request.POST: url = process_url(request.POST.get('url')) highlight = request.POST.get('highlight') tag_name = request.POST.get('tag_name') comment = request.POST.get('comment') errors['add_comment'] = [] t = None try: t = Tag.objects.get(highlight__id=highlight, common_tag__name=tag_name, page__url=url) except: errors['add_comment'].append("Could not get tag " + tag_name) if t: c = Comment(tag=t, user=user, comment=comment) c.save() # v = Vote(comment=c, voter=user) # v.save() from_zone = tz.tzutc() to_zone = tz.tzlocal() date = c.date.replace(tzinfo=from_zone) local = date.astimezone(to_zone) user_profile = UserProfile.objects.get(user=user) pic = user_profile.pic_url if not pic: pic = gravatar_for_user(user) pic = 'https://%s' % pic[7:] comment = { 'comment': c.comment, 'date': local.strftime('%b %m, %Y, %I:%M %p'), 'user': c.user.username, 'prof_pic': pic, 'id': c.id, } success = True return { 'success': success, 'errors': errors, 'comment': comment, }
def tags_by_highlight(request): success = False errors = {} tags = {} sorted_tags = [] user = request.user highlight = '' if request.GET: highlight_id = request.GET.get('highlight_id') url = process_url(request.GET.get('url')) errors['get_tags'] = [] if not len(errors['get_tags']): vts = Tag.objects.filter(highlight__id=highlight_id, page__url=url) highlight = Highlight.objects.get(id=highlight_id).highlight # get relevant info for each value tag for vt in vts: vt_info = { 'user_voted': False, 'name': vt.common_tag.name, 'color': vt.common_tag.color, 'description': vt.common_tag.description, 'is_private': vt.is_private, 'vote_count': len(Vote.objects.filter(tag=vt)), 'is_owner': (vt.user == user), 'id': vt.id, } votes = [] vs = Vote.objects.filter(tag=vt) # get vote info for v in vs: if user == v.voter: vt_info['user_voted'] = True user_profile = UserProfile.objects.get(user=v.voter) pic = user_profile.pic_url if not pic: pic = gravatar_for_user(v.voter) votes.append({ 'name': user_profile.user.username, 'pic': 'https://%s' % pic[7:], }) vt_info['votes'] = votes sorted_tags.append(vt_info) success = True sorted_tags = sorted(sorted_tags, key=lambda x: x["vote_count"], reverse=True) return { 'success': success, 'errors': errors, 'tags': sorted_tags, 'highlight': highlight, }
def comments(request): success = False errors = {} data = {} if request.GET: url = process_url(request.GET.get('url')) highlight = request.GET.get('highlight') tag_name = request.GET.get('tag_name') errors['comments'] = [] comments = [] try: t = Tag.objects.get(highlight__id=highlight, common_tag__name=tag_name) cs = Comment.objects.filter(tag=t).order_by('date') for c in cs: from_zone = tz.tzutc() to_zone = tz.tzlocal() date = c.date.replace(tzinfo=from_zone) local = date.astimezone(to_zone) user_profile = UserProfile.objects.get(user=c.user) pic = user_profile.pic_url if not pic: pic = gravatar_for_user(c.user) pic = 'https://%s' % pic[7:] comments.append({ 'comment': c.comment, 'date': local.strftime('%b %m, %Y, %I:%M %p'), 'user': c.user.username, 'prof_pic': pic, 'id': c.id, }) data['comments'] = comments success = True except: errors['comments'].append("Could not get comments for tag " + tag_name) return { 'success': success, 'errors': errors, 'data': data, }
def get_friends(request): query = request.GET.get('query', None).lower() user_prof = UserProfile.objects.get(user=request.user) friends = user_prof.follows.all() data = [] for friend in friends: if not query or query in friend.user.username.lower(): data.append({'id': friend.id, 'name': '@%s' % (friend.user.username), 'avatar': gravatar_for_user(friend.user), 'type': 'contact'}) if len(data) > 5: break return {'res': data}
def get_messages(request): url = request.GET.get("url") messages = EyeHistoryMessage.objects.filter(eyehistory__url=url).order_by('-post_time').select_related() message_list = [] for message in messages: eye_hist = message.eyehistory message_list.append({'message': message.message, 'post_time': str(message.post_time), 'username': eye_hist.user.username, 'pic_url': gravatar_for_user(eye_hist.user), 'user_url': '%s/users/%s' % (BASE_URL,eye_hist.user.username), 'hum_time': humanize_time(timezone.now() - message.post_time) + ' ago' }) return {'result': { 'messages': message_list, } }
def profilepic(request): url = gravatar_for_user(request.user) url = 'https://%s' % url[7:] return redirect_to(request, url)
def get_info(request): url = request.GET.get("url") domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active = [] eyehists = EyeHistory.objects.filter( (Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id)).order_by('-end_time').select_related() for eyehist in eyehists: if len(active) >= 6: break user = eyehist.user if user not in used_users: old_level = 3 if eyehist.end_time > (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 active.append({ 'username': user.username, 'pic_url': gravatar_for_user(user), 'url': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time(timezone.now() - eyehist.end_time) }) used_users.append(user) message = EyeHistoryMessage.objects.filter( eyehistory__url=url).select_related() about_message = None user_url = None username = None if message: about_message = humanize_time(timezone.now() - message[0].post_time) + ' ago' message = message[0].message if not about_message: chat_message = ChatMessage.objects.filter(url=url).select_related() if chat_message: about_message = humanize_time(timezone.now() - chat_message[0].date) + ' ago' message = '"%s"' % (chat_message[0].message) user_url = '%s/users/%s' % (BASE_URL, chat_message[0].author.username) username = chat_message[0].author.username if not about_message: about_message = '' message = '' return { 'url': url, 'active_users': active, 'message': message, 'about_message': about_message, 'user_url': user_url, 'username': username, }
def bubble_info(request): url = request.POST.get('url', '') domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active = [] followers = User.objects.filter(userprofile__followed_by=request.user) eyehists = EyeHistory.objects.filter( (Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id)).order_by('-end_time').select_related() for eyehist in eyehists: if len(active) >= 6: break user = eyehist.user if user not in used_users and user in followers: old_level = 3 if eyehist.end_time > \ (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 url_level = "site-level" if eyehist.url == url: url_level = "page-level" active.append({ 'username': user.username, 'pic_url': gravatar_for_user(user), 'url': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'url_level': url_level, 'time_ago': humanize_time(timezone.now() - eyehist.end_time) }) used_users.append(user) messages = EyeHistoryMessage.objects.filter( Q(eyehistory__url=url) & Q(post_time__gt=timestamp)).order_by('-post_time').select_related() about_message = None user_url = None username = None message = None for m in messages: if m.eyehistory.user in followers: message = m.message about_message = humanize_time(timezone.now() - m.post_time) + ' ago' user_url = '%s/users/%s' % (BASE_URL, m.eyehistory.user.username) username = m.eyehistory.user.username break if not about_message: chat_messages = ChatMessage.objects.filter( url=url).order_by('-date').select_related() for c in chat_messages: if c.author in followers: about_message = humanize_time(timezone.now() - c.date) + ' ago' message = '"%s"' % (c.message) user_url = '%s/users/%s' % (BASE_URL, c.author.username) username = c.author.username break if not about_message: about_message = '' message = '' return JSONResponse({ 'url': url, 'active_users': active, 'message': message, 'about_message': about_message, 'user_url': user_url, 'username': username, })
def profilepic(request): return redirect_to(request, gravatar_for_user(request.user))
def dehydrate(self, bundle): bundle.data['username'] = bundle.obj.user.username bundle.data['pic_url'] = gravatar_for_user( User.objects.get(username=bundle.obj.user.username)) return bundle
def ticker_info(request): timestamp = timezone.now() - datetime.timedelta(minutes=5) followers = User.objects.filter(userprofile__followed_by=request.user) history = EyeHistory.objects.filter( start_time__gt=timestamp).order_by('-start_time').select_related() most_recent_hist = None mutelist_urls = MuteList.objects.filter( user=request.user, url__isnull=False ).values_list('url', flat=True) mutelist_words = MuteList.objects.filter( user=request.user, word__isnull=False ).values_list('word', flat=True) users = [] for h in history: if h.user not in users and h.user in followers: if most_recent_hist == None: show = True if len(mutelist_urls) > 0: for m in mutelist_urls: if m in h.url: show = False if show and len(mutelist_words) > 0: for m in mutelist_words: if m in h.title: show = False if show: most_recent_hist = h users.append({ 'username': h.user.username, 'pic_url': gravatar_for_user(h.user), 'url': '%s/users/%s' % (BASE_URL, h.user.username), }) res = {} res['online_users'] = sorted(users, key=lambda u: u['username']) if most_recent_hist != None: res['history_item'] = { 'username': most_recent_hist.user.username, 'pic_url': gravatar_for_user(most_recent_hist.user), 'user_url': '%s/users/%s' % (BASE_URL, most_recent_hist.user.username), 'url': most_recent_hist.url, 'title': most_recent_hist.title, 'favicon': most_recent_hist.favIconUrl, 'time_ago': humanize_time(timezone.now() - most_recent_hist.start_time) } t = Tag.objects.filter(user=request.user, domain=most_recent_hist.domain) if t.exists(): res['history_item']['tag'] = {'name': t[0].name, 'color': t[0].color} else: res['history_item'] = None return JSONResponse(res)
def comments_by_highlight(request): success = False errors = {} comments = [] errors['comments_by_highlight'] = [] user = request.user user_contributed = False hl_id = request.GET.get('highlight_id') eyehist_message = EyeHistoryMessage.objects.filter(highlight__id=hl_id) #TODO: return tags along with comments if len(comments) != 0: success = True if len(Tag.objects.filter(highlight__id=hl_id, user=user)) > 0: user_contributed = True for tag in Tag.objects.filter(highlight__id=hl_id): if len(Vote.objects.filter(tag=tag)) > 0: user_contributed = True for m in eyehist_message: tags = {} from_zone = tz.tzutc() to_zone = tz.tzlocal() date = m.post_time.replace(tzinfo=from_zone) local = date.astimezone(to_zone) user_profile = UserProfile.objects.get(user=m.eyehistory.user) pic = user_profile.pic_url if not pic: pic = gravatar_for_user(m.eyehistory.user) pic = 'https://%s' % pic[7:] ts = Tag.objects.filter(comment__id=m.id) for t in ts: tags[t.common_tag.name] = { 'name': t.common_tag.name, 'color': t.common_tag.color, 'description': t.common_tag.description } comments.append({ 'comment': m.message, 'date': local.strftime('%b %m, %Y, %I:%M %p'), 'time': local.strftime("%s"), 'user': m.eyehistory.user.username, 'prof_pic': pic, 'id': m.id, 'tags': tags, }) return { 'success': success, 'errors': errors, 'comments': sorted(comments, key=lambda x:x['time']), 'user_contributed': user_contributed, }
def profilepic(request): return redirect_to(request, gravatar_for_user(request.user));
def bubble_info(request): url = request.POST.get('url', '') domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active = [] followers = User.objects.filter(userprofile__followed_by=request.user) eyehists = EyeHistory.objects.filter(( Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id) ).order_by('-end_time').select_related() for eyehist in eyehists: if len(active) >= 6: break user = eyehist.user if user not in used_users and user in followers: old_level = 3 if eyehist.end_time > \ (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 url_level = "site-level" if eyehist.url == url: url_level = "page-level" active.append({'username': user.username, 'pic_url': gravatar_for_user(user), 'url': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'url_level': url_level, 'time_ago': humanize_time( timezone.now() - eyehist.end_time) }) used_users.append(user) messages = EyeHistoryMessage.objects.filter( Q(eyehistory__url=url) & Q(post_time__gt=timestamp) ).order_by('-post_time').select_related() about_message = None user_url = None username = None message = None for m in messages: if m.eyehistory.user in followers: message = m.message about_message = humanize_time( timezone.now() - m.post_time) + ' ago' user_url = '%s/users/%s' % (BASE_URL, m.eyehistory.user.username) username = m.eyehistory.user.username break if not about_message: chat_messages = ChatMessage.objects.filter( url=url).order_by('-date').select_related() for c in chat_messages: if c.author in followers: about_message = humanize_time(timezone.now() - c.date) + ' ago' message = '"%s"' % (c.message) user_url = '%s/users/%s' % (BASE_URL, c.author.username) username = c.author.username break if not about_message: about_message = '' message = '' return JSONResponse({ 'url': url, 'active_users': active, 'message': message, 'about_message': about_message, 'user_url': user_url, 'username': username, })
def ticker_info(request): timestamp = timezone.now() - datetime.timedelta(minutes=5) followers = User.objects.filter(userprofile__followed_by=request.user) history = EyeHistory.objects.filter( start_time__gt=timestamp).order_by('-start_time').select_related() most_recent_hist = None mutelist_urls = MuteList.objects.filter(user=request.user, url__isnull=False).values_list( 'url', flat=True) mutelist_words = MuteList.objects.filter(user=request.user, word__isnull=False).values_list( 'word', flat=True) users = [] for h in history: if h.user not in users and h.user in followers: if most_recent_hist == None: show = True if len(mutelist_urls) > 0: for m in mutelist_urls: if m in h.url: show = False if show and len(mutelist_words) > 0: for m in mutelist_words: if m in h.title: show = False if show: most_recent_hist = h users.append({ 'username': h.user.username, 'pic_url': gravatar_for_user(h.user), 'url': '%s/users/%s' % (BASE_URL, h.user.username), }) res = {} res['online_users'] = sorted(users, key=lambda u: u['username']) if most_recent_hist != None: res['history_item'] = { 'username': most_recent_hist.user.username, 'pic_url': gravatar_for_user(most_recent_hist.user), 'user_url': '%s/users/%s' % (BASE_URL, most_recent_hist.user.username), 'url': most_recent_hist.url, 'title': most_recent_hist.title, 'favicon': most_recent_hist.favIconUrl, 'time_ago': humanize_time(timezone.now() - most_recent_hist.start_time) } t = Tag.objects.filter(user=request.user, domain=most_recent_hist.domain) if t.exists(): res['history_item']['tag'] = { 'name': t[0].name, 'color': t[0].color } else: res['history_item'] = None return JSONResponse(res)
def get_info(request): url = request.GET.get("url") domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active = [] eyehists = EyeHistory.objects.filter((Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id)).order_by('-end_time').select_related() for eyehist in eyehists: if len(active) >= 6: break user = eyehist.user if user not in used_users: old_level = 3 if eyehist.end_time > (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 active.append({'username': user.username, 'pic_url': gravatar_for_user(user), 'url': '%s/users/%s' % (BASE_URL,user.username), 'old_level': old_level, 'time_ago': humanize_time(timezone.now()-eyehist.end_time) }) used_users.append(user) message = EyeHistoryMessage.objects.filter(eyehistory__url=url).select_related() about_message = None user_url = None username = None if message: about_message = humanize_time(timezone.now() - message[0].post_time) + ' ago' message = message[0].message if not about_message: chat_message = ChatMessage.objects.filter(url=url).select_related() if chat_message: about_message = humanize_time(timezone.now() - chat_message[0].date) + ' ago' message = '"%s"' % (chat_message[0].message) user_url = '%s/users/%s' % (BASE_URL,chat_message[0].author.username) username = chat_message[0].author.username if not about_message: about_message = '' message = '' return { 'url' : url, 'active_users': active, 'message': message, 'about_message': about_message, 'user_url': user_url, 'username': username, }