Get flake8 running OK
This commit is contained in:
@ -129,7 +129,8 @@ class CaseStudy(models.Model):
|
||||
(
|
||||
"FMO",
|
||||
_(
|
||||
"Nederlandse Financieringsmaatschappij voor Ontwikkelingslanden NV (Netherlands Development Finance Company, FMO)"
|
||||
"Nederlandse Financieringsmaatschappij voor Ontwikkelingslanden NV"
|
||||
" (Netherlands Development Finance Company, FMO)"
|
||||
),
|
||||
),
|
||||
("NDB", _("New Development Bank (NDB) (formerly BRICS Development Bank)")),
|
||||
@ -712,7 +713,7 @@ class CaseStudy(models.Model):
|
||||
blank=True,
|
||||
)
|
||||
|
||||
## Energy generation project
|
||||
# -- Energy generation project --
|
||||
|
||||
generation_type = models.CharField(
|
||||
verbose_name=_("What kind of energy is generated?"),
|
||||
@ -917,7 +918,7 @@ class CaseStudy(models.Model):
|
||||
blank=True,
|
||||
)
|
||||
|
||||
## Manufacturing
|
||||
# -- Manufacturing --
|
||||
|
||||
manufacturing_type = models.CharField(
|
||||
verbose_name=_("Which of the following options best describes this case?"),
|
||||
|
@ -1,6 +1,7 @@
|
||||
import pytest
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.sessions.middleware import SessionMiddleware
|
||||
from django.http import QueryDict
|
||||
from django.http.response import Http404
|
||||
from django.test import RequestFactory
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
@ -60,10 +61,9 @@ class CaseStudyDraftAPITests(TestCase):
|
||||
def test_get_empty(self):
|
||||
request = self.factory.get(self.url)
|
||||
request.user = self.user
|
||||
response = DraftsAPI.as_view()(request)
|
||||
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertEqual(response.content, b"")
|
||||
with pytest.raises(Http404):
|
||||
DraftsAPI.as_view()(request)
|
||||
|
||||
def test_put_works(self):
|
||||
contents = '{"test":1}'
|
||||
@ -86,7 +86,7 @@ class CaseStudyDraftAPITests(TestCase):
|
||||
self.assertEqual(response.content.decode(), draft.data)
|
||||
|
||||
def test_update(self):
|
||||
draft = self.fake_draft()
|
||||
self.fake_draft()
|
||||
new_contents = '{"fnord": 7}'
|
||||
|
||||
request = self.factory.put(self.url, data=new_contents)
|
||||
@ -100,7 +100,7 @@ class CaseStudyDraftAPITests(TestCase):
|
||||
)
|
||||
|
||||
def test_delete(self):
|
||||
draft = self.fake_draft()
|
||||
self.fake_draft()
|
||||
|
||||
request = self.factory.delete(self.url)
|
||||
request.user = self.user
|
||||
|
@ -2,9 +2,7 @@ from django.conf.urls import url
|
||||
from django.urls import reverse_lazy
|
||||
from django.views.generic import RedirectView
|
||||
from django.views.i18n import JavaScriptCatalog
|
||||
from djgeojson.views import GeoJSONLayerView
|
||||
|
||||
from .models import CaseStudy
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
|
@ -20,4 +20,4 @@ class VimeoURLValidator(RegexValidator):
|
||||
|
||||
|
||||
class YouTubeOrVimeoValidator(RegexValidator):
|
||||
regex = r"https?:\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9]{1,11}).+"
|
||||
regex = r"https?:\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9]{1,11}).+" # noqa
|
||||
|
@ -1,10 +1,12 @@
|
||||
import logging
|
||||
import json
|
||||
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
from django.core.mail import send_mail
|
||||
from django.db.models import Q
|
||||
from django.http import Http404, HttpResponse
|
||||
from django.http import HttpResponse
|
||||
from django.urls import reverse
|
||||
from django.urls import reverse_lazy
|
||||
from django.utils.translation import get_language
|
||||
@ -17,9 +19,12 @@ from dal import autocomplete
|
||||
|
||||
from apps.files.models import File
|
||||
|
||||
from .models import CaseStudy, CaseStudyDraft, SpatialRefSys, PointOfInterest
|
||||
from .forms import ShortCaseStudyForm, LongCaseStudyForm, PointOfInterest
|
||||
from . import models
|
||||
from . import forms
|
||||
from .models import CaseStudy, CaseStudyDraft, SpatialRefSys
|
||||
from .forms import ShortCaseStudyForm, LongCaseStudyForm
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
NOTIFY_MESSAGE = """
|
||||
Hello,
|
||||
@ -47,8 +52,8 @@ class CreatePointOfInterest(LoginRequiredMixin, CreateView):
|
||||
|
||||
template_name = "map/form-poi.html"
|
||||
success_url = "/case-study/create/success/"
|
||||
model = PointOfInterest
|
||||
form_class = PointOfInterest
|
||||
model = models.PointOfInterest
|
||||
form_class = forms.PointOfInterest
|
||||
|
||||
|
||||
def send_email(study_id):
|
||||
@ -67,10 +72,10 @@ def send_email(study_id):
|
||||
fail_silently=False,
|
||||
)
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
logging.exception("Sending mail failed")
|
||||
# XXX This is bad. We should do something more useful with the error
|
||||
# than this.
|
||||
pass
|
||||
|
||||
|
||||
def delete_user_draft(user_id):
|
||||
@ -200,70 +205,57 @@ class DraftsAPI(LoginRequiredMixin, View):
|
||||
XXX This should be refactored to use csrf protection.
|
||||
"""
|
||||
|
||||
def get_object(self, request):
|
||||
try:
|
||||
return CaseStudyDraft.objects.get(author=request.user)
|
||||
except:
|
||||
return None
|
||||
|
||||
def get(self, request):
|
||||
draft = self.get_object(request)
|
||||
draft = get_object_or_404(models.CaseStudyDraft, author=request.user)
|
||||
|
||||
if draft == None:
|
||||
return HttpResponse(status=404) # Not Found
|
||||
else:
|
||||
return HttpResponse(draft.data, content_type="application/json")
|
||||
return HttpResponse(draft.data, content_type="application/json")
|
||||
|
||||
def put(self, request):
|
||||
# Find an existing object is there is one
|
||||
draft = self.get_object(request)
|
||||
|
||||
if draft == None:
|
||||
# If there isn't, create a new draft...
|
||||
draft = CaseStudyDraft(author=request.user, data=request.body.decode())
|
||||
draft.save()
|
||||
return HttpResponse(status=201) # Created
|
||||
else:
|
||||
try:
|
||||
draft = CaseStudyDraft.objects.get(author=request.user)
|
||||
draft.data = request.body.decode()
|
||||
draft.save()
|
||||
return HttpResponse(status=200) # OK
|
||||
|
||||
except models.CaseStudyDraft.DoesNotExist:
|
||||
# If it doesn't exist, create it
|
||||
CaseStudyDraft.objects.create(author=request.user, data=request.body.decode())
|
||||
return HttpResponse(status=201) # Created
|
||||
|
||||
def delete(self, request):
|
||||
draft = self.get_object(request)
|
||||
draft = get_object_or_404(models.CaseStudyDraft, author=request.user)
|
||||
|
||||
if draft != None:
|
||||
data = json.loads(draft.data)
|
||||
data = json.loads(draft.data)
|
||||
|
||||
for k in [
|
||||
"official_project_documents",
|
||||
"other_documents",
|
||||
"shapefiles",
|
||||
"images",
|
||||
]:
|
||||
for k in [
|
||||
"official_project_documents",
|
||||
"other_documents",
|
||||
"shapefiles",
|
||||
"images",
|
||||
]:
|
||||
try:
|
||||
keyname = k + "_files"
|
||||
field = data["data"]["form"][keyname]
|
||||
|
||||
try:
|
||||
keyname = k + "_files"
|
||||
field = data["data"]["form"][keyname]
|
||||
|
||||
# Ignore empty fields
|
||||
if field["value"] == "":
|
||||
continue
|
||||
|
||||
file_list = json.loads(field["value"])
|
||||
|
||||
# Delete those items
|
||||
for item in file_list:
|
||||
try:
|
||||
f = File.objects.get(id=item["id"])
|
||||
if f.user != self.request.user:
|
||||
continue
|
||||
f.delete()
|
||||
except File.DoesNotExist:
|
||||
continue
|
||||
|
||||
except:
|
||||
# Ignore empty fields
|
||||
if field["value"] == "":
|
||||
continue
|
||||
|
||||
draft.delete()
|
||||
file_list = json.loads(field["value"])
|
||||
|
||||
# Delete those items
|
||||
for item in file_list:
|
||||
try:
|
||||
f = File.objects.get(id=item["id"])
|
||||
if f.user != self.request.user:
|
||||
continue
|
||||
f.delete()
|
||||
except File.DoesNotExist:
|
||||
continue
|
||||
|
||||
except Exception: # XXX What are we guarding against here?
|
||||
continue
|
||||
|
||||
draft.delete()
|
||||
|
||||
return HttpResponse(status=204)
|
||||
|
@ -50,5 +50,5 @@ class JSONFileListWidget(widgets.HiddenInput):
|
||||
try:
|
||||
filelist = json.loads(value)
|
||||
return [file["id"] for file in filelist]
|
||||
except JSONDecodeError:
|
||||
except json.JSONDecodeError:
|
||||
return None
|
||||
|
Reference in New Issue
Block a user