Esempio n. 1
0
    def share(provider_id, debate_id):
        if provider_id not in ["facebook", "twitter"]:
            abort(404)

        try:
            thread = cdw.threads.with_id(debate_id)
        except:
            abort(404)

        record = ShareRecord(provider=provider_id, debateId=debate_id)
        record.save()

        config = current_app.config
        lr = config["LOCAL_REQUEST"]
        question_id = str(thread.question.id)

        url = "%s/questions/%s/debates/%s" % (lr, question_id, debate_id)

        username = config["CDW"]["bitly"]["username"]
        api_key = config["CDW"]["bitly"]["api_key"]

        b = bitlyapi.BitLy(username, api_key)
        res = b.shorten(longUrl=url)
        short_url = res["url"]

        if provider_id == "facebook":
            msg = "I just debated at CDW"
            # TODO: Ugly, make nicer
            app_id = config["SOCIAL_PROVIDERS"]["facebook"]["oauth"]["consumer_key"]

            fb_url = (
                "http://www.facebook.com/dialog/feed?"
                "app_id=%s"
                "&link=%s"
                "&name=%s"
                "&description=%s"
                "&message=%s"
                "&redirect_uri=%s"
                "&display=page"
            )

            redirect_url = urllib.quote_plus("%s/share/close" % lr)
            fb_url = fb_url % (
                app_id,
                urllib.quote_plus(url),
                urllib.quote_plus("ILSTU Views"),
                urllib.quote_plus("A place for civil debate"),
                urllib.quote_plus(msg),
                redirect_url,
            )

            current_app.logger.debug(fb_url)

            return redirect(fb_url)

        if provider_id == "twitter":
            msg = "I just debated on ILSTU Views. %s" % short_url
            msg = urllib.quote_plus(msg)
            return redirect("http://twitter.com/home?status=%s" % msg)
Esempio n. 2
0
    def share(provider_id, debate_id):
        if provider_id not in ['facebook','twitter']:
            abort(404)
            
        try:
            thread = cdw.threads.with_id(debate_id)
        except:
            abort(404)
            
        record = ShareRecord(provider=provider_id, debateId=debate_id)
        record.save()
        
        config = current_app.config
        lr = config['LOCAL_REQUEST']
        question_id = str(thread.question.id)
        
        url = "%s/questions/%s/debates/%s" % (lr, question_id, debate_id)
        
        username = config['CDW']['bitly']['username']
        api_key = config['CDW']['bitly']['api_key']
        
        b = bitlyapi.BitLy(username, api_key)
        res = b.shorten(longUrl=url)
        short_url = res['url']
        
        if provider_id == 'facebook':
            msg = "I just debated at CDW"
            # TODO: Ugly, make nicer
            app_id = config['SOCIAL_PROVIDERS']['facebook']['oauth']['consumer_key']
            
            fb_url = "http://www.facebook.com/dialog/feed?" \
                     "app_id=%s" \
                     "&link=%s" \
                     "&name=%s" \
                     "&description=%s" \
                     "&message=%s" \
                     "&redirect_uri=%s" \
                     "&display=page"

            redirect_url = urllib.quote_plus('%s/share/close' % lr)
            fb_url = fb_url % (app_id, 
                               urllib.quote_plus(url),
                               urllib.quote_plus('The Wall'),
                               urllib.quote_plus('A place for civil debate'), 
                               urllib.quote_plus(msg), 
                               redirect_url)
            
            current_app.logger.debug(fb_url)
            
            return redirect(fb_url)
            
        if provider_id == 'twitter':
            msg = "I just debated on The Wall. %s" % short_url
            msg = urllib.quote_plus(msg)
            return redirect('http://twitter.com/home?status=%s' % msg)
Esempio n. 3
0
    def share(provider_id, debate_id):
        if provider_id not in ['facebook', 'twitter']:
            abort(404)

        try:
            thread = cdw.threads.with_id(debate_id)
        except:
            abort(404)

        record = ShareRecord(provider=provider_id, debateId=debate_id)
        record.save()

        config = current_app.config
        lr = config['LOCAL_REQUEST']
        question_id = str(thread.question.id)

        url = "%s/questions/%s/debates/%s" % (lr, question_id, debate_id)

        username = config['CDW']['bitly']['username']
        api_key = config['CDW']['bitly']['api_key']

        b = bitlyapi.BitLy(username, api_key)
        res = b.shorten(longUrl=url)
        short_url = res['url']

        if provider_id == 'facebook':
            msg = "I just debated at CDW"
            # TODO: Ugly, make nicer
            app_id = config['SOCIAL_PROVIDERS']['facebook']['oauth'][
                'consumer_key']

            fb_url = "http://www.facebook.com/dialog/feed?" \
                     "app_id=%s" \
                     "&link=%s" \
                     "&name=%s" \
                     "&description=%s" \
                     "&message=%s" \
                     "&redirect_uri=%s" \
                     "&display=page"

            redirect_url = urllib.quote_plus('%s/share/close' % lr)
            fb_url = fb_url % (app_id, urllib.quote_plus(url),
                               urllib.quote_plus('ILSTU Views'),
                               urllib.quote_plus('A place for civil debate'),
                               urllib.quote_plus(msg), redirect_url)

            current_app.logger.debug(fb_url)

            return redirect(fb_url)

        if provider_id == 'twitter':
            msg = "I just debated on ILSTU Views. %s" % short_url
            msg = urllib.quote_plus(msg)
            return redirect('http://twitter.com/home?status=%s' % msg)
Esempio n. 4
0
def stats():
    def kiosk_users():
        for u in cdw.users.with_fields(origin='kiosk'):
            yield u
            
    total_kiosk_users = cdw.users.with_fields(origin='kiosk').count()
    total_web_users = cdw.users.with_fields(origin='web').count()
    total_users_with_photos = cdw.users.with_fields(
        webProfilePicture__not__contains='avatar', origin='web').count()
    total_users_sms_subscribes = cdw.users.with_fields(threadSubscription__exists=1).count()
    
    uses_both = []
    for u in kiosk_users():
        try:
            web_user = cdw.users.with_fields(origin='web', 
                                  phoneNumber=u.phoneNumber).first()
            
            if web_user and web_user.phoneNumber not in uses_both:
                uses_both.append(web_user.phoneNumber)
        except:
            pass
    
    total_threads = cdw.threads.all().count()
    total_threads_kiosk = cdw.threads.with_fields(origin='kiosk').count()
    total_threads_web = cdw.threads.with_fields(origin='web').count()
    
    total_messages = cdw.posts.all().count()
    average_responses = float(total_messages) / float(total_threads) 
    
    total_messages_kiosk = cdw.posts.with_fields(origin='kiosk').count()
    total_messages_web = cdw.posts.with_fields(origin='web').count()
    total_messages_sms = cdw.posts.with_fields(origin='cell').count()
    
    total_likes = 0
    for p in cdw.posts.with_fields(likes__gt=0):
        total_likes += p.likes
    
    from cdw.models import ShareRecord
    facebook_likes = ShareRecord.objects(provider='facebook').count()
    twitter_likes = ShareRecord.objects(provider='twitter').count()
    
    
    
    return render_template("admin/stats.html",
                           section_selector='stats',
                           page_selector='index',
                           uses_both=len(uses_both),
                           total_web_users=total_web_users,
                           total_kiosk_users=total_kiosk_users,
                           total_users_with_photos=total_users_with_photos,
                           total_users_sms_subscribes=total_users_sms_subscribes,
                           total_threads=total_threads,
                           total_messages=total_messages,
                           total_threads_kiosk=total_threads_kiosk,
                           total_threads_web=total_threads_web,
                           total_messages_kiosk=total_messages_kiosk,
                           total_messages_web=total_messages_web,
                           total_messages_sms=total_messages_sms,
                           total_likes=total_likes,
                           facebook_likes=facebook_likes,
                           twitter_likes=twitter_likes,
                           average_responses=average_responses)