diff --git a/crashreports/views.py b/crashreports/views.py
deleted file mode 100644
index 804bd1b..0000000
--- a/crashreports/views.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- coding: utf-8 -*-
-import django_filters
-from rest_framework import filters
-from rest_framework.permissions import BasePermission
-from rest_framework import viewsets
-from crashreports.models import Crashreport
-from crashreports.serializers import CrashReportSerializer
-
-
-class IsCreationOrIsAuthenticated(BasePermission):
-
-    def has_permission(self, request, view):
-        if not request.user.is_authenticated():
-            if view.action == 'create':
-                return True
-            else:
-                return False
-        else:
-            return True
-
-
-class ListFilter(django_filters.Filter):
-
-    def filter(self, qs, value):
-        value_list = value.split(u',')
-        return super(ListFilter, self).filter(
-            qs, django_filters.fields.Lookup(value_list, 'in'))
-
-
-class CrashreportFilter(filters.FilterSet):
-    start_date = django_filters.DateTimeFilter(name="date", lookup_expr='gte')
-    end_date = django_filters.DateTimeFilter(name="date", lookup_expr='lte')
-    boot_reason = ListFilter(name='boot_reason')
-
-    class Meta:
-        model = Crashreport
-        fields = ['build_fingerprint', 'boot_reason',
-                  'power_on_reason', 'power_off_reason']
-
-
-class CrashreportViewSet(viewsets.ModelViewSet):
-    queryset = Crashreport.objects.all()
-    serializer_class = CrashReportSerializer
-    permission_classes = [IsCreationOrIsAuthenticated]
-    filter_backends = (filters.DjangoFilterBackend,)
-    filter_class = CrashreportFilter
