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()
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(),
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()