예제 #1
0
    def test_correct_decorator_order(self):
        api = api_decorator([])

        @api('whatever', skip_javascript=True)
        @require_POST
        def foo(request):
            pass
예제 #2
0
        def wrong_order():
            api = api_decorator([])

            @require_POST
            @api('whatever', skip_javascript=True)
            def foo(request):
                pass
예제 #3
0
파일: test_api.py 프로젝트: StetHD/canvas-2
 def test_correct_decorator_order(self):
     api = api_decorator([])
     @api('whatever', skip_javascript=True)
     @require_POST
     def foo(request):
         pass
예제 #4
0
파일: test_api.py 프로젝트: StetHD/canvas-2
 def wrong_order():
     api = api_decorator([])
     @require_POST
     @api('whatever', skip_javascript=True)
     def foo(request):
         pass
예제 #5
0
from canvas import fact
from canvas.api_decorators import api_decorator
from canvas.exceptions import ServiceError
from canvas.metrics import Metrics

urlpatterns = []
api = api_decorator(urlpatterns)


@api('metric/record')
def metric_record(request, name, info={}):
    info = dict((str(key), value) for (key, value) in info.items())

    metric = Metrics.all.get(name)
    if not metric:
        raise ServiceError("Invalid metric name")

    if metric.ignore_from_api:
        return

    metric.record(request, **info)


@api('fact/record')
def record_fact(request, type, info={}):
    fact.record(type, request, info)
예제 #6
0
    url(r'^chunk/', include(chunk_uploads)),
    url(r'^comment/', include('apps.comments.api')),
    url(r'^comment_hiding/', include('apps.comment_hiding.api')),
    url(r'^feed/', include('drawquest.apps.feed.api')),
    url(r'^monster/', include('apps.monster.api')),
    url(r'^logged_out_homepage/', include('apps.logged_out_homepage.api')),
    url(r'^share/', include('apps.share_tracking.views')),
    url(r'^sticky_threads/', include('apps.sticky_threads.api')),
    url(r'^suggest/', include('apps.suggest.api')),
    url(r'^tags/', include('apps.tags.api')),
    url(r'^threads/', include('apps.threads.api')),
    url(r'^upload$', api_upload),
    url(r'^', include('apps.analytics.api')),
)

api = api_decorator(urls)


@api('user/exists', csrf_exempt=True)
def user_exists(request, username):
    """ Returns None if the username is valid and does not exist. """
    error_msg = User.validate_username(username or "")
    if error_msg:
        raise ServiceError(error_msg)


@api('user/actually_exists', csrf_exempt=True)
def user_actually_exists(request, username):
    """ Returns true or false, doesn't validate the username. """
    return {'exists': User.objects.filter(username__iexact=username).exists()}
예제 #7
0
from django.shortcuts import get_object_or_404

from apps.canvas_auth.models import User
from canvas.api_decorators import api_decorator
from canvas.cache_patterns import CachedCall
from canvas.details_models import CommentDetails
from canvas.metrics import Metrics
from canvas.models import Comment, Category
from canvas.view_guards import require_user
from django.conf import settings
from urbanairship import Airship

urlpatterns = []
api = api_decorator(urlpatterns)


@api('register_token')
@require_user
def register_token(request, device_token):
    from apps.monster.models import MobileUser

    MobileUser.register(request.user, device_token)
    ret = {
        'username': request.user.username,
        'device_token': device_token,
    }
    return ret

@api('invite_user')
@require_user
def invite_user(request, username, payload):
예제 #8
0
파일: api.py 프로젝트: StetHD/canvas-2
    url(r'^comment_hiding/', include('apps.comment_hiding.api')),
    url(r'^feed/', include('apps.feed.api')),
    url(r'^following/', include('apps.following.api')),
    url(r'^invite_remixer/', include('apps.invite_remixer.api')),
    url(r'^monster/', include('apps.monster.api')),
    url(r'^logged_out_homepage/', include('apps.logged_out_homepage.api')),
    url(r'^share/', include('apps.share_tracking.views')),
    url(r'^sticky_threads/', include('apps.sticky_threads.api')),
    url(r'^suggest/', include('apps.suggest.api')),
    url(r'^tags/', include('apps.tags.api')),
    url(r'^threads/', include('apps.threads.api')),
    url(r'^upload$', api_upload),
    url(r'^', include('apps.analytics.api')),
)

api = api_decorator(urls)

@api('user/exists', csrf_exempt=True)
def user_exists(request, username):
    """ Returns None if the username is valid and does not exist. """
    error_msg = User.validate_username(username or "")
    if error_msg:
        raise ServiceError(error_msg)

@api('user/actually_exists', csrf_exempt=True)
def user_actually_exists(request, username):
    """ Returns true or false, doesn't validate the username. """
    return {'exists': User.objects.filter(username__iexact=username).exists()}

#TODO remove once we stop migrating accounts to drawquest.
@api('user/info_for_drawquest_migration', csrf_exempt=True)
예제 #9
0
            filedata = b64decode(data)

    if filedata:
        ret = _got_imagedata(filedata, request, url=url)
        from canvas.cache_patterns import cache
        from canvas.models import Content
        util.papertrail.debug('UPLOADS: _got_imagedata, actual cache is {} for content ID {}'.format(cache.get('content:%s:full_details_v26' % ret['content']['id']), ret['content']['id']))
        util.papertrail.debug('UPLOADS: _got_imagedata, actual content object for ID {} exists: {}'.format(ret['content']['id'], Content.all_objects.filter(id=ret['content']['id']).exists()))
        util.papertrail.debug('UPLOADS: _got_imagedata: {} {}'.format(ret.get('success'), ret['content']['id']))
        return ret
    else:
        raise ServiceError("No file or url.")

chunk_uploads = patterns('canvas.upload')

api = api_decorator(chunk_uploads)

@api('upload')
def upload_chunk(request, data):
    chunk_name = str(uuid.uuid4())

    redis.setex("chunk:{0}".format(chunk_name), data, 60 * 60)

    return {
        'chunk_name': chunk_name,
    }

@api('combine')
def combine_upload_chunks(request, chunks, metadata, is_quest=False):
    keys = ['chunk:{0}'.format(chunk) for chunk in chunks]