Bump to latest django, drf

TODO: Fix regex filter (write a test)
This commit is contained in:
Nikolai R Kristiansen committed 2017-10-25 21:36:20 +02:00
1 parent ad025f17d8
commit 4e41af0bd8
7 files changed
+30 -38

No files matched your search

+9 -9
View File
@@ -1,18 +1,18 @@
import django_filters
from dpdapi.models import Alias
from rest_framework.filters import BaseFilterBackend
from django_filters import filters
filters.LOOKUP_TYPES = ['iregex', 'exact', 'iexact']
class AliasRegexFilter(django_filters.FilterSet):
class AliasFilter(django_filters.FilterSet):
# TODO: These do not work
# Ref: https://docs.djangoproject.com/en/1.7/ref/models/querysets/#iregex
source_regex = django_filters.CharFilter(name="source", lookup_type='iregex')
destination_regex = django_filters.CharFilter(name="destination", lookup_type='iregex')
source_regex = django_filters.CharFilter(name='source', lookup_expr=['iregex'])
destination_regex = django_filters.CharFilter(name='destination', lookup_expr=['iregex'])
class Meta:
model = Alias
class AliasRegexFilterBackend(BaseFilterBackend):
def filter_queryset(self, request, queryset, view):
return AliasRegexFilter(request.query_params, queryset=queryset).qs
fields = ['domain', 'domain__name', 'source_regex', 'destination_regex']
-5
View File
@@ -1,6 +1,4 @@
from __future__ import unicode_literals
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
class BaseModel(models.Model):
@@ -11,7 +9,6 @@ class BaseModel(models.Model):
abstract = True
@python_2_unicode_compatible
class Alias(BaseModel):
source = models.EmailField(max_length=254)
destination = models.EmailField(max_length=254)
@@ -32,7 +29,6 @@ class Alias(BaseModel):
unique_together = ('source', 'destination', 'domain')
@python_2_unicode_compatible
class Domain(BaseModel):
name = models.CharField(max_length=254, unique=True)
@@ -45,7 +41,6 @@ class Domain(BaseModel):
super(Domain, self).save(*args, **kwargs)
@python_2_unicode_compatible
class User(BaseModel):
email = models.EmailField(max_length=254, unique=True)
password = models.CharField(max_length=109)
+3
View File
@@ -14,6 +14,7 @@ class AliasSerializer(serializers.ModelSerializer):
class Meta:
model = Alias
validators = [] # Disable unique togheter check
fields = '__all__'
class AliasDeleteSerializer(serializers.ModelSerializer):
@@ -25,11 +26,13 @@ class AliasDeleteSerializer(serializers.ModelSerializer):
class DomainSerializer(serializers.ModelSerializer):
class Meta:
model = Domain
fields = '__all__'
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
extra_kwargs = {'password': {'write_only': True}}
def _hash_password(self, raw_password):
+8 -9
View File
@@ -1,20 +1,19 @@
from __future__ import unicode_literals
import logging
import operator
from django.utils import six
from functools import reduce
from django.db.models import Q
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.decorators import list_route
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework import status, filters, viewsets
from rest_framework import status, viewsets
from dpdapi.filters import AliasRegexFilterBackend
from dpdapi.filters import AliasFilter
from dpdapi.models import Alias, Domain, User
from dpdapi.serializers import AliasSerializer, AliasDeleteSerializer, DomainSerializer, UserSerializer
if six.PY3:
from functools import reduce
logger = logging.getLogger(__name__)
@@ -23,8 +22,8 @@ class AliasViewSet(viewsets.ModelViewSet):
queryset = Alias.objects.all()
serializer_class = AliasSerializer
permission_classes = [IsAuthenticated]
filter_backends = (filters.DjangoFilterBackend, AliasRegexFilterBackend)
filter_fields = ('domain', 'domain__name',)
filter_backends = (DjangoFilterBackend,)
filter_class = AliasFilter
@list_route(methods=['post'])
def create_bulk(self, request):
@@ -65,7 +64,7 @@ class DomainViewSet(viewsets.ModelViewSet):
queryset = Domain.objects.all()
serializer_class = DomainSerializer
permission_classes = [IsAuthenticated]
filter_backends = (filters.DjangoFilterBackend,)
filter_backends = (DjangoFilterBackend,)
filter_fields = ('name',)
+1 -6
View File
@@ -59,6 +59,7 @@ INSTALLED_APPS = (
INSTALLED_APPS += (
'rest_framework',
'django_filters',
'dpdapi',
)
@@ -89,21 +90,15 @@ DATABASES = {
# Internationalization
# https://docs.djangoproject.com/en/1.7/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Europe/Oslo'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/
STATIC_URL = '/static/'
REST_FRAMEWORK = {
+1 -1
View File
@@ -1,8 +1,8 @@
from django.conf.urls import include, url
from django.contrib import admin
from django.views.generic import RedirectView
from rest_framework import urls as rest_framework_urls
from rest_framework import urls as rest_framework_urls
from dpdapi import urls as dpdapi_urls
+8 -8
View File
@@ -1,8 +1,8 @@
Django>=1.9,<1.10
django-extensions==1.6.1
django-filter==0.12.0
djangorestframework>=3.3,<3.4
Fabric==1.10.2
gunicorn==19.4.5
mysqlclient==1.3.7
passlib==1.6.5
Django==1.11.6
django-extensions==1.9.6
django-filter==1.1.0
djangorestframework==3.7.1
Fabric==1.14.0
gunicorn==19.7.1
mysqlclient==1.3.12
passlib==1.7.1