예제 #1
0
def account(request):
    """
        Edit account info 
    """

    user = request.user

    if request.POST and request.is_ajax():
        success = False
        errors = {}
        data = None
        type = request.POST.get('form_type', None)

        if type == 'account-info':
            first_name = request.POST.get('first_name', '')
            last_name = request.POST.get('last_name', '')
            anon_email = request.POST.get('anon_checkbox', False) == 'True'
            location = request.POST.get('location', '')
            website = request.POST.get('website', '')
            bio = request.POST.get('bio', '')

            user.first_name = first_name
            user.last_name = last_name
            user.save()

            profile = user.profile
            profile.anon_email = anon_email
            profile.location = location
            profile.website = website
            profile.bio = bio
            profile.save()

            success = "User info updated!"

        elif type == 'pic':
            pic_url = request.POST.get('pic_url')
            pic_url = put_profile_pic(
                pic_url, user.profile)  #download and upload to our S3
            if pic_url:  #no errors/less than 1mb #patlsotw
                user.profile.pic_url = pic_url
                user.profile.save()
                success = "Profile picture changed!"
            else:
                errors['pic'] = ['Oops -- something went wrong.']

        resp = {
            'success': success,
            'errors': errors,
            'type': type,
            'data': data,
        }

        return JSONResponse(resp)

    return _template_values(request,
                            page_title="edit whitelist",
                            header="account info",
                            navbar='nav_account',
                            sub_navbar="subnav_account_info")
예제 #2
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)
예제 #3
0
def logged_in(request):
    if request.user.is_authenticated():
        return JSONResponse({'res': True, 'username': request.user.username})
    else:
        return JSONResponse({'res': False})
예제 #4
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,
    })