示例#1
0
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}}
示例#2
0
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
        }
    }
示例#3
0
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,
        }
    }
示例#4
0
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,
        }
    }
示例#5
0
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,
        }
    }
示例#6
0
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,
  }
示例#7
0
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,
    }
示例#8
0
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,
  }
示例#9
0
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,
    }
示例#10
0
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}
示例#11
0
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,
                   }
        }
示例#12
0
def profilepic(request):
    url = gravatar_for_user(request.user)
    url = 'https://%s' % url[7:]
    return redirect_to(request, url)
示例#13
0
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,
    }
示例#14
0
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,
    })
示例#15
0
def profilepic(request):
    url = gravatar_for_user(request.user)
    url = 'https://%s' % url[7:]
    return redirect_to(request, url)
示例#16
0
def profilepic(request):
    return redirect_to(request, gravatar_for_user(request.user))
示例#17
0
 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
示例#18
0
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)
示例#19
0
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,
  }
示例#20
0
def profilepic(request):
    return redirect_to(request, gravatar_for_user(request.user));
示例#21
0
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,
    })
示例#22
0
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)
示例#23
0
 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
示例#24
0
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,
    }