diff --git a/.htmlhintrc b/.htmlhintrc
index 6f21fdde9..d40d8ac23 100644
--- a/.htmlhintrc
+++ b/.htmlhintrc
@@ -18,5 +18,6 @@
"space-tab-mixed-disabled": true,
"id-class-ad-disabled": true,
"href-abs-or-rel": false,
- "attr-unsafe-chars": true
+ "attr-unsafe-chars": true,
+ "spec-char-escape": false
}
diff --git a/orchestra/interface_api/project_management/views.py b/orchestra/interface_api/project_management/views.py
index 7e6c1f070..eb81e3cc8 100644
--- a/orchestra/interface_api/project_management/views.py
+++ b/orchestra/interface_api/project_management/views.py
@@ -1,6 +1,7 @@
import slacker
from django.shortcuts import get_object_or_404
+from django.core.exceptions import PermissionDenied
from jsonview.exceptions import BadRequest
from rest_framework import generics
from rest_framework import permissions
@@ -51,7 +52,7 @@ def project_information_api(request):
worker = get_object_or_404(Worker, user=request.user)
if not (is_project_admin(request.user) or
worker.assignments.filter(task__project=project_id).exists()):
- raise BadRequest('Permission denied')
+ raise PermissionDenied
try:
return project_management.project_management_information(project_id)
except Project.DoesNotExist:
diff --git a/orchestra/models/__init__.py b/orchestra/models/__init__.py
index 22d8b3b4d..3585da655 100644
--- a/orchestra/models/__init__.py
+++ b/orchestra/models/__init__.py
@@ -1,21 +1,21 @@
-from orchestra.models.communication.models import CommunicationPreference # noqa
-from orchestra.models.communication.models import StaffBotRequest # noqa
-from orchestra.models.communication.models import StaffingRequestInquiry # noqa
-from orchestra.models.communication.models import StaffingResponse # noqa
-from orchestra.models.core.models import Workflow # noqa
-from orchestra.models.core.models import WorkflowVersion # noqa
-from orchestra.models.core.models import Certification # noqa
-from orchestra.models.core.models import Step # noqa
-from orchestra.models.core.models import Worker # noqa
-from orchestra.models.core.models import WorkerCertification # noqa
-from orchestra.models.core.models import Project # noqa
-from orchestra.models.core.models import Task # noqa
-from orchestra.models.core.models import TaskAssignment # noqa
-from orchestra.models.core.models import Iteration # noqa
-from orchestra.models.core.models import TimeEntry # noqa
-from orchestra.models.core.models import TaskTimer # noqa
-from orchestra.models.core.models import Todo # noqa
-from orchestra.models.core.models import PayRate # noqa
+from orchestra.models.communication.models import CommunicationPreference
+from orchestra.models.communication.models import StaffBotRequest
+from orchestra.models.communication.models import StaffingRequestInquiry
+from orchestra.models.communication.models import StaffingResponse
+from orchestra.models.core.models import Workflow
+from orchestra.models.core.models import WorkflowVersion
+from orchestra.models.core.models import Certification
+from orchestra.models.core.models import Step
+from orchestra.models.core.models import Worker
+from orchestra.models.core.models import WorkerCertification
+from orchestra.models.core.models import Project
+from orchestra.models.core.models import Task
+from orchestra.models.core.models import TaskAssignment
+from orchestra.models.core.models import Iteration
+from orchestra.models.core.models import TimeEntry
+from orchestra.models.core.models import TaskTimer
+from orchestra.models.core.models import Todo
+from orchestra.models.core.models import PayRate
__all__ = [