Esempio n. 1
0
from canvas.view_guards import require_user
from drawquest.api_decorators import api_decorator
from drawquest.apps.feed.redis_models import feed_comments_for_user

urlpatterns = []
api = api_decorator(urlpatterns)


@api('followee_comments')
@require_user
def feed_items(request, offset='top', direction='next'):
    comments, pagination = feed_comments_for_user(request.user,
                                                  offset=offset,
                                                  direction=direction,
                                                  viewer=request.user)

    return {
        'comments': comments,
        'pagination': pagination,
    }
Esempio n. 2
0
from canvas.exceptions import ServiceError
from canvas.forms import validate_and_clean_comment
from canvas.models import Visibility
from canvas.redis_models import RateLimit, RealtimeChannel
from canvas.templatetags.jinja_base import render_jinja_to_string
from canvas.view_guards import require_staff, require_user
from drawquest import knobs, economy
from drawquest import sns_publishing
from drawquest.api_decorators import api_decorator
from drawquest.apps.drawquest_auth.models import User
from drawquest.apps.quests.models import Quest, archived_quests
from drawquest.apps.ugq import models


urlpatterns = []
api = api_decorator(urlpatterns)


@api('create_quest')
@require_user
def create_quest(request, title, content_id=None, invite_followees=False,
                 facebook_share=False, facebook_access_token=None,
                 twitter_share=False, twitter_access_token=None, twitter_access_token_secret=None,
                 email_share=False, email_recipients=[],
                 resolve_share_ids=[]):
    if not request.user.is_staff and not settings.STAGING:
        prefix = 'user:{}:create_quest_limit:'.format(request.user.id)
        if not RateLimit(prefix+'h', 60, 60*60).allowed() or not RateLimit(prefix+'d', 100, 8*60*60).allowed():
            raise ServiceError("Attempting to create quests too quickly.")

    _, _, content, _, title = validate_and_clean_comment(
Esempio n. 3
0
 def after_setUp(self):
     urls = patterns('')
     self.api = api_decorator(urls)
Esempio n. 4
0
    url(r'^whitelisting/', include('drawquest.apps.whitelisting.api')),

    # Only used for the admin.
    url(r'^comment/', include('apps.comments.api')),

    # Disabled for now for perf.
    #url(r'^', include('apps.analytics.api')),
)

if settings.DRAWQUEST_SEARCH:
    urls += patterns(
        'drawquest.api',
        url(r'^search/', include('drawquest.apps.search.api')),
    )

api = api_decorator(urls)


@api('metric/record')
def metric_record(request, name, info={}):
    """ Currently a no-op. """


@api('user/profile')
def user_profile(request, username):
    return models.user_profile_for_viewer(username, viewer=request.user)


@api('user/change_profile')
@require_user
def change_profile(request,
Esempio n. 5
0
    url(r'^upload$', api_upload),
    url(r'^whitelisting/', include('drawquest.apps.whitelisting.api')),

    # Only used for the admin.
    url(r'^comment/', include('apps.comments.api')),

    # Disabled for now for perf.
    #url(r'^', include('apps.analytics.api')),
)

if settings.DRAWQUEST_SEARCH:
    urls += patterns('drawquest.api',
        url(r'^search/', include('drawquest.apps.search.api')),
    )

api = api_decorator(urls)

@api('metric/record')
def metric_record(request, name, info={}):
    """ Currently a no-op. """

@api('user/profile')
def user_profile(request, username):
    return models.user_profile_for_viewer(username, viewer=request.user)

@api('user/change_profile')
@require_user
def change_profile(request, old_password=None, new_password=None, new_email=None, bio=None):
    if bio is not None:
        request.user.userinfo.bio_text = bio
        request.user.userinfo.save()
Esempio n. 6
0
 def after_setUp(self):
     urls = patterns('')
     self.api = api_decorator(urls)