Example #1
0
import json

from django.http import HttpResponse, HttpResponseForbidden
from django.shortcuts import get_object_or_404
from django.views.decorators.http import last_modified

from rest_framework import generics
from rest_framework.authtoken.models import Token
from rest_framework.viewsets import ModelViewSet
from synctool.routing import Route

from . import models, serializers
from .utils import get_last_modified_date


rnasync = Route(api_token=None).app('rna', 'rna')
rnasync = last_modified(get_last_modified_date)(rnasync)


def auth_token(request):
    if request.user.is_active and request.user.is_staff:
        token, created = Token.objects.get_or_create(user=request.user)
        return HttpResponse(
            content=json.dumps({'token': token.key}),
            content_type='application/json')
    else:
        return HttpResponseForbidden()


class NoteViewSet(ModelViewSet):
    queryset = models.Note.objects.all()
Example #2
0
    parse_phone_number,
    process_email,
    newsletter_exception_response,
    parse_newsletters_csv,
    get_best_request_lang,
)

TOKEN_RE = re.compile(r"^[0-9a-f-]{36}$", flags=re.IGNORECASE)
IP_RATE_LIMIT_EXTERNAL = getattr(settings, "IP_RATE_LIMIT_EXTERNAL", "40/m")
IP_RATE_LIMIT_INTERNAL = getattr(settings, "IP_RATE_LIMIT_INTERNAL", "400/m")
# four submissions for a specific message per phone number per 5 minutes
PHONE_NUMBER_RATE_LIMIT = getattr(settings, "PHONE_NUMBER_RATE_LIMIT", "4/5m")
# four submissions for a set of newsletters per email address per 5 minutes
EMAIL_SUBSCRIBE_RATE_LIMIT = getattr(settings, "EMAIL_SUBSCRIBE_RATE_LIMIT",
                                     "4/5m")
sync_route = Route(api_token=settings.SYNC_KEY)
AMO_SYNC_TYPES = {
    "addon": amo_sync_addon,
    "userprofile": amo_sync_user,
}


def is_token(word):
    return bool(TOKEN_RE.match(word))


@sync_route.queryset("sync")
def news_sync():
    return [
        Newsletter.objects.all(),
        NewsletterGroup.objects.all(),
Example #3
0
from django.shortcuts import get_object_or_404
from django.utils.http import parse_http_date_safe
from django.utils.timezone import now
from django.views.decorators.cache import cache_page
from django.views.decorators.http import last_modified, require_safe

from rest_framework import generics
from rest_framework.authtoken.models import Token
from rest_framework.viewsets import ModelViewSet
from synctool.routing import Route

from nucleus.rna.models import Note, Release
from nucleus.rna.serializers import NoteSerializer, ReleaseSerializer
from nucleus.rna.utils import HttpResponseJSON, get_last_modified_date

rnasync = Route(api_token=None).app("rna", "rna")
rnasync = last_modified(get_last_modified_date)(rnasync)
RNA_JSON_CACHE_TIME = getattr(settings, "RNA_JSON_CACHE_TIME", 600)


def auth_token(request):
    if request.user.is_active and request.user.is_staff:
        token, created = Token.objects.get_or_create(user=request.user)
        return HttpResponse(content=json.dumps({"token": token.key}),
                            content_type="application/json")
    else:
        return HttpResponseForbidden()


class NoteViewSet(ModelViewSet):
    queryset = Note.objects.all()