Ejemplo n.º 1
0
def remove_favorite(request, flowgram):
    try:
        models.Favorite.objects.get(owner=request.user, flowgram=flowgram).delete()
        controller.record_stat(request, 'remove_favorite_website', '0', flowgram.id)
    except:
        # Ignoring Flowgrams that were not already favorites.
        pass
Ejemplo n.º 2
0
def my_logout(request):
    controller.record_stat(request, 'view_logout_website', '0', '')
    auth.logout(request)
    if request.GET.get('redirect', 'true').lower() == 'true':
        return helpers.go_back(request)
    else:
        return data_response.create(request.POST.get('enc', 'json'), 'ok', {})
Ejemplo n.º 3
0
def help_article(request, question_id):

    question = Question.objects.get(id=question_id)
    controller.record_stat(request, 'view_help_website', '0', question_id)
    return req_render_to_response(request, 'help/help_article.html', {
        'question': question,
    })
Ejemplo n.º 4
0
def help(request):
    
    category_list = Category.objects.all()
    controller.record_stat(request, 'view_help_website', '0', 'help index')
    return req_render_to_response(request, 'help/help.html', {
        'category_list': category_list,
    })
Ejemplo n.º 5
0
def create_easy(request, enc):
    (flowgram, new) = controller.get_working_flowgram(request.user)

    hash_parts = ["%s-%s" % (key, request.GET[key]) for key in sorted(request.GET.keys())]

    controller.record_stat(request, "view_create_website", "0", "")

    return helpers.redirect("/r/%s/%s" % (flowgram.id, "__".join(hash_parts)))
Ejemplo n.º 6
0
def invite(request, invitees, personal_message):
    from flowgram.core.mail import send_invitations

    invitees = helpers.get_email_addresses_from_comma_separated_string(invitees)

    send_invitations(request.user, invitees, personal_message)

    controller.record_stat(request, 'add_invite_website', '0', '%d invitees' % len(invitees))
Ejemplo n.º 7
0
def view_toprated(request, enc):
    context = get_default_context()
    context['next'] = '/browse/toprated'
    controller.record_stat(request, 'view_browse_rate_website', '0', '')
    return webhelpers.flowgram_lister(request, 
                                      enc=enc,
                                      queryset=cached_sets.top_rated(),
                                      template_name='flowgram/view_toprated.html',
                                      extra_context=context)
Ejemplo n.º 8
0
def view_your_flowgrams_thumb(request, enc, user, sort_criterion, prpusort, page):
    controller.record_stat(request, 'view_browse_userFGs_website', '0',
                               'FGs owner user id = ' + str(user.id))

    users_flowgrams = models.Flowgram.objects.filter(owner=user)

    fgs = {}

    page_owner = request.user == user
    if page_owner:
        active = 'you'
        activesecondary = 'viewall'

        if prpusort == 'private':
            fgs = users_flowgrams.filter(public=False)
        elif prpusort == 'public':
            fgs = users_flowgrams.filter(public=True)
        else:
            fgs = users_flowgrams

        fgs = fgs.order_by(helpers.convert_sort_criterion(sort_criterion, '-modified_at'))
    else:
        #TODO(cyap) figure out multiple views on this for owner/non-owners
        active = 'browse'
        activesecondary = 'viewalluser'

        fgs = users_flowgrams.filter(public=True)\
                  .order_by(helpers.convert_sort_criterion(sort_criterion, '-modified_at'))

    helpers.delete_blank_flowgrams(fgs)
        
    args = {'template_name': 'flowgram/view_your_flowgrams_thumb.html',
            'template_object_name': 'flowgram',
            'paginate_by': 14, 
            'allow_empty': True,
            'page': page,
            'extra_context': {
                'user': request.user,
                'u': user,
                'profile': user.get_profile(),
                'active': active,
                'subs_active': localsettings.FEATURE['subscriptions_fw'],
                'activesecondary': activesecondary,
                'pageowner': page_owner,
                'mostviewed': cached_sets.most_viewed()[:6],
                'display_mode': request.COOKIES.get('flowgram_results_filter_type', 'grid'),
                'num_favs': len(models.Favorite.objects.filter(owner=user)),
                'sort_criterion': sort_criterion,
                'pub_priv': prpusort,
                'multiple_owners': False,
                'sortable': True,
                'send_to_details': localsettings.FEATURE['send_to_details'],
                'posts': webhelpers.get_latest_fg_blog_posts(),
                },
            'queryset': fgs}
    return object_list(request, **args)
Ejemplo n.º 9
0
def view_newest(request, enc):
    context = get_default_context()
    context['fg_timestamp'] = True
    context['next'] = '/browse/newest'
    controller.record_stat(request, 'view_browse_new_website', '0', '')
    return webhelpers.flowgram_lister(request, 
                                      enc=enc,
                                      queryset=cached_sets.newest(),
                                      template_name='flowgram/view_newest.html',
                                      extra_context=context)
Ejemplo n.º 10
0
def delete_comment(request, enc, comment_id):
    comment = get_object_or_404(models.Comment, id=comment_id)

    if not permissions.can_edit(request.user, comment.flowgram):
        log.sec_req(request, "User tried to delete comment on flowgram %s." % (comment.flowgram.id))
        raise Http404

    comment.delete()

    controller.record_stat(request, 'del_comment_website', '0', comment_id)
    return helpers.go_back(request)
Ejemplo n.º 11
0
def record_bulk_stats(request):
    for stat_index in range(5):
        type_key = "type%s" % stat_index
        # Exiting when the first missing entry is encountered.
        if not type_key in request.POST:
            break

        type_value = request.POST.get(type_key, None)
        num_value = int(request.POST.get("num%s" % stat_index, 0))
        string_value = request.POST.get("string%s" % stat_index, "")

        controller.record_stat(request, type_value, num_value, string_value)
Ejemplo n.º 12
0
def view_featured(request, enc):
    context = {'hero': cached_sets.get_hero(models.feat.FEATURED_PAGE),
               'mostviewed': cached_sets.most_viewed()[:6],
               'category_bestof_fgs': helpers.get_category_bestof_fgs(),
               'next': '/browse/featured',
               'send_to_details': localsettings.FEATURE['send_to_details'],
               'posts': webhelpers.get_latest_fg_blog_posts(),
               }
    controller.record_stat(request, 'view_browse_feat_website', '0', '')
    return webhelpers.flowgram_lister(request,
                                      enc=enc,
                                      queryset=cached_sets.get_featured(models.feat.FEATURED_PAGE),
                                      template_name='flowgram/view_featured.html',
                                      extra_context=context)
Ejemplo n.º 13
0
def add_tag(request, enc, flowgram, tag_name):
    tag_name = tag_name.strip()
    
    (tag, null) = models.Tag.objects.get_or_create(adder=request.user,
                                                   flowgram=flowgram,
                                                   name=tag_name)
    
    controller.record_stat(request, 'add_tag_website', '0', flowgram.id)
    
    if localsettings.FEATURE['notify_fw']:
        controller.store_fgtagged_event({'current_user': request.user,
                                         'fg_id': flowgram.id,
                                         'eventCode': 'FG_TAGGED'})

    return HttpResponse(tag.name)
Ejemplo n.º 14
0
def view_favorites(request, enc, user, sort_criterion, prpusort):
    favs = models.Favorite.objects.filter(owner=user)
    
    controller.record_stat(request,
                           'view_favorites_website',
                           '0',
                           'fave owner user id = ' + str(user.id))
    
    fav_fgs = []
    for favorite in favs:
        flowgram = favorite.flowgram
        is_public_str = 'public' if flowgram.public else 'private'

        if request.user == user:
            if prpusort == 'all' or prpusort == is_public_str:
                fav_fgs.append(flowgram)
        elif flowgram.public:
            fav_fgs.append(flowgram)
    
    (page_owner, active) = (True, 'you') if request.user == user else (False, 'browse')
    
    fav_fgs = helpers.sort_flowgrams(fav_fgs,
                                     helpers.convert_sort_criterion(sort_criterion, '-modified_at'))
    
    extra_context = {
        'u': user,
        'profile': user.get_profile(),
        'fgs': fav_fgs,
        'active': active,
        'subs_active': localsettings.FEATURE['subscriptions_fw'],
        'activesecondary': 'favorites',
        'mostviewed': cached_sets.most_viewed()[:6],
        'pageowner': page_owner,
        'num_favs': len(fav_fgs),
        'sort_criterion': sort_criterion,
        'pub_priv': prpusort,
        'multiple_owners': True,
        'sortable': True,
        'send_to_details': localsettings.FEATURE['send_to_details'],
        'posts': webhelpers.get_latest_fg_blog_posts(),
    }
    
    return webhelpers.flowgram_lister(request,
                                      enc='html',
                                      queryset=fav_fgs,
                                      template_name='flowgram/view_favorites.html',
                                      extra_context=extra_context)
Ejemplo n.º 15
0
def add_favorite(request, flowgram):
	try:
		models.Favorite.objects.get(owner=request.user, flowgram=flowgram)
	except:
		# If the specified Flowgram is not already a favorite, add it.
		models.Favorite.objects.create(owner=request.user, flowgram=flowgram)
		controller.record_stat(request, 'add_favorite_website', '0', flowgram.id)

		# UserHistory: FG_FAVED
		if localsettings.FEATURE['notify_fw']:
			try: 
				controller.store_fgfaved_event({
                    'current_user': request.user,
                    'fg_id': flowgram.id,
                    'eventCode': 'FG_FAVED'})
			except:
				log.debug("In api/views.py, attempted to send FG_FAVED event to controller.py/store_fgfaved_event -- FAILED")
Ejemplo n.º 16
0
def show_flowgram(request, enc, flowgram):
    can_edit = permissions.can_edit(request.user, flowgram)
    context = {
        'fg': flowgram,
         'can_edit': can_edit,
         'subs_active': localsettings.FEATURE['subscriptions_fw'],
         'show_delete': can_edit,
         'active': 'you' if request.user == flowgram.owner else 'browse',
         'mostviewed': cached_sets.most_viewed()[:6],
         'send_to_details': localsettings.FEATURE['send_to_details']
    }
    context.update(webhelpers.get_flowgram_stats(flowgram))
    controller.record_stat(request, 'view_flowgram_det_website', '0', flowgram.id)
    return helpers.req_render_to_response(
        request,
        'flowgram/show_flowgram.html',
        context)
Ejemplo n.º 17
0
def contact_us_email(request):
    if request.method != 'POST':
        return req_render_to_response(request, 'about_us/contact_us_email.html')
    name = request.POST.get('name', '')
    if name == '':
        name='Anonymous'
    email = request.POST.get('email', '')
    subject = request.POST.get('subject', '')
    if subject == '':
        subject='I am not big on typing or words.'
    comments = request.POST.get('comments', '') 
    controller.record_stat(request, 'add_feedback_website', '0', '')      
    add_to_mail_queue(
        '*****@*****.**',
        '*****@*****.**',
        'Contact via FG Contact Us/Feedback form',
        'FROM: %s <%s> | SUBJECT: %s | COMMENTS: %s' % (name, email, subject, comments))
    return HttpResponseRedirect('/about_us/contact_us_confirm/')
Ejemplo n.º 18
0
def add_comment(request, enc, flowgram, text):
    if not text:
        # TODO(westphal): Drop support for XML.
        if enc == 'xml':
            return HttpResponse('No comment text')
        else:
            return error_response.create(enc, 'No comment text')
    comment = models.Comment.objects.create(
        owner=request.user if request.user.is_authenticated() else None,
        flowgram=flowgram,
        text=text)
    controller.record_stat(request, 'add_comment_website', '0', comment.id)
    if localsettings.FEATURE['notify_fw']:
        controller.store_fgcomented_event({'commentor': request.user,
                                           'fg_id': flowgram.id,
                                           'eventCode': 'FG_COMMENTED'})
            
    # TODO(westphal): Drop support for XML.
    if enc == 'xml':
        return HttpResponse(helpers.render_comment_to_xml(comment), mimetype="text/xml")
    else:
        return data_response.create(enc, 'ok', encode.comment.to_dict(comment))
Ejemplo n.º 19
0
def edit_profile(request):
    u = request.user
    p = u.get_profile()
    if request.method == 'GET':
        initial = {
            'gender': p.gender,
            'newsletter_optin': p.newsletter_optin,
            'birthdate': p.birthdate,
            'homepage': p.homepage,
            'email': u.email,
            'description': p.description,
            #'subscribe_fg_on_comment': p.subscribe_fg_on_comment,
            #'subscribed_to_own_fgs': p.subscribed_to_own_fgs,
        }
        f = ProfileForm(initial=initial)
        return req_render_to_response(request, 'user/edit_profile.html', {
            'profile': p,
            'form': f,
            'subs_active': subs_active,
        })
    elif request.method == 'POST':
        f = ProfileForm(request.POST)
        if f.is_valid():
            cleaned = f.cleaned_data
            p.gender = cleaned['gender']
            p.newsletter_optin = cleaned['newsletter_optin']
            p.birthdate = cleaned['birthdate']
            p.homepage = cleaned['homepage']
            p.description = cleaned['description']
            #p.subscribe_fg_on_comment = cleaned['subscribe_fg_on_comment']
            #p.subscribed_to_own_fgs = cleaned['subscribed_to_own_fgs']
            p.save()
            u.email = cleaned['email']
            u.save()
            add_good_message(request, "Your profile was updated.")
            controller.record_stat(request, 'edit_profile_website', '0', '')
            EmailSubscriptionRequest.objects.create(should_subscribe=p.newsletter_optin, email_address=u.email)
        return HttpResponseRedirect(p.url())
Ejemplo n.º 20
0
def login(request, enc):
    next = request.GET.get('next', '/')

    if request.user.is_authenticated():
        return helpers.redirect(next)
    
    next_greeting = ''
    if next.find('create') >= 0:
        next_greeting = "Please login or register to get started making Flowgrams. It's quick and easy!"
    elif next.find('subscribe') >= 0:
        next_greeting = "Please login or register to subscribe to a user. It's quick and easy!"
    
    if request.method == 'POST':
        succeeded = False
        form = forms.LoginForm(request.POST)

        if form.is_valid():
            user = auth.authenticate(username=form.cleaned_data['username'],
                                     password=form.cleaned_data['password'])
            assert(user)
            auth.login(request, user)
            request.session[settings.PERSISTENT_SESSION_KEY] = form.cleaned_data['remember_user']
            succeeded = True

        if not succeeded:
            request.session['processed_login_form'] = form.as_p()
            controller.record_stat(request, 'view_login_website', '0', 'unsuccessful')
            return HttpResponseRedirect('/login')

        next = request.POST.get('next', '')
        if next:
            controller.record_stat(request,
                                   'view_login_website',
                                   '0',
                                   'successful, next url = %s' % next)
            return helpers.redirect(next)

        controller.record_stat(request, 'view_login_website', '0', 'successful, next url = /')
        return HttpResponseRedirect('/')
    else:
        form = forms.LoginForm()
        reg_form = forms.RegistrationFormStep1()
        return helpers.req_render_to_response(request,
                                              'login/login.html',
                                              {'next': next,
                                               'next_greeting': next_greeting,
                                               'reg_form': reg_form,
                                               'which_form_reg': 'register_step_1'})
Ejemplo n.º 21
0
def view_ajax_browse(request, enc, browse_type, user):
    stat_string = 'FGs owner user id = ' + (user.username if user else 'None')

    if browse_type == 'featured':
        fg_data_set = [cached_sets.get_hero(models.feat.FEATURED_PAGE)] + \
                          cached_sets.get_featured(models.feat.FEATURED_PAGE)[:11]
        controller.record_stat(request, 'view_browse_feat_ajax_website', '0', '')
    elif browse_type == 'newest':
        fg_data_set = cached_sets.newest()[:12]
        controller.record_stat(request, 'view_browse_feat_new_website', '0', '')
    elif browse_type == 'most_viewed':
        fg_data_set = cached_sets.most_viewed()[:12]
        controller.record_stat(request, 'view_browse_most_ajax_website', '0', '')
    elif browse_type == 'most_discussed':
        fg_data_set = cached_sets.most_discussed()[:12]
        controller.record_stat(request, 'view_browse_disc_ajax_website', '0', '')
    elif browse_type == 'top_rated':
        fg_data_set = cached_sets.top_rated()[:12]
        controller.record_stat(request, 'view_browse_rate_ajax_website', '0', '')
    elif browse_type == 'user_newest':
        fg_data_set = cached_sets.user_newest(user.username)[:6]
        controller.record_stat(request, 'view_browse_new_ajax_website', '0', stat_string)
    elif browse_type == 'user_most_viewed':
        fg_data_set = cached_sets.user_most_viewed(user.username)[:6]
        controller.record_stat(request, 'view_browse_most_ajax_website', '0', stat_string)
    elif browse_type == 'user_most_discussed':
        fg_data_set = cached_sets.user_most_discussed(user.username)[:6]
        controller.record_stat(request, 'view_browse_disc_ajax_website', '0', stat_string)
    elif browse_type == 'user_top_rated':
        fg_data_set = cached_sets.user_top_rated(user.username)[:6]
        controller.record_stat(request, 'view_browse_rate_ajax_website', '0', stat_string)
    elif browse_type == 'user_title':
        fg_data_set = cached_sets.user_title(user.username)[:6]
        controller.record_stat(request, 'view_browse_title_ajax_website', '0', stat_string)
    
    return helpers.req_render_to_response(request,
                                          'includes/modules/flowgram/fg_modules_ajax.incl',
                                          {'fg_data_set': fg_data_set,
                                           'fg_timestamp': request.user == user,
                                           'send_to_details': localsettings.FEATURE['send_to_details'],})
Ejemplo n.º 22
0
def you(request, enc):
    controller.record_stat(request, 'view_yourFGs_website', '0', '')
    return HttpResponseRedirect('/%s/viewyourflowgramsthumb' % request.user.username)
Ejemplo n.º 23
0
 def _check_anon_create(request, *args, **kwargs):
     if request.user.is_anonymous():
         controller.record_stat(request, 'view_create_website', '0', '')
     return view_func(request, *args, **kwargs)
Ejemplo n.º 24
0
def record_stat(request, type, num, string):
    controller.record_stat(request, type, num, string)
Ejemplo n.º 25
0
def search(request, enc, q):
    controller.record_stat(request, 'view_search_website', '0', '')
    
    if localsettings.FEATURE['use_HEsearch']:
        return hyperestraier_search(request, enc, q)
    
    fgs = models.Flowgram.objects.filter(public=True)
    if request.user.is_authenticated():
        fgs |= models.Flowgram.objects.filter(owner=request.user)
    
    # Using filter with a non-sense id because .none returns an EmptyQueueSet, which causes |= to
    # fail with "TypeError: Cannot merge querysets of different types 'EmptyQuerySet' and
    # 'QuerySet'.".
    by_title = by_tag = by_page_url = by_description = fgs.filter(id='NONSENSE_ID')
    
    extra_context = {'mostviewed': cached_sets.most_viewed()[:6],
                     'q': q,
                     'get_args': "q=%s" % q,
                     'send_to_details': localsettings.FEATURE['send_to_details']}
    
    terms = q.split()
    query_terms = "%%%s%%" % "%".join(terms)
    
    by_title_description = fgs.extra(where=['(title LIKE %s OR description LIKE %s)'],
                                     params=[query_terms, query_terms])
    
    if not len(by_title_description):
        # By title:
        for term in terms:
            by_this_title = fgs.filter(title__icontains=term)
            by_title |= by_this_title
        
        # By description:
        for term in terms:
            by_this_description = fgs.filter(description__icontains=term)
            by_description |= by_this_description
            
        by_title_description = by_title | by_description
    
        # By tag:
        for term in terms:
            tags = models.Tag.objects.filter(name=term)
            by_this_tag = fgs.filter(id__in=[tag.flowgram.id for tag in tags])
            by_tag |= by_this_tag
        
    search_results = (by_tag | by_page_url | by_title_description).order_by('-created_at')

    # Check if author exists
    if len(terms) == 1:
        try:
            auth_models.User.objects.get(username=terms[0])
            by_username = True
        except auth_models.User.DoesNotExist:
            by_username = False
        extra_context['by_username'] = by_username

    return webhelpers.flowgram_lister(request,
                                      enc='html',
                                      queryset=search_results,
                                      template_name='search/search_results.html',
                                      extra_context=extra_context,
                                      display_mode='list')
Ejemplo n.º 26
0
def delete_tag(request, enc, flowgram, tag_name):
    models.Tag.objects.filter(flowgram=flowgram, name=tag_name).delete()
    controller.record_stat(request, 'del_tag_website', '0', flowgram.id)
    return HttpResponseRedirect(flowgram.url())