Skip to content

Commit 05dc735

Browse files
committed
Ensure user is authenticated correctly when deploying asset
1 parent 2049257 commit 05dc735

File tree

1 file changed

+23
-34
lines changed

1 file changed

+23
-34
lines changed

kpi/deployment_backends/kobocat_backend.py

+23-34
Original file line numberDiff line numberDiff line change
@@ -10,37 +10,32 @@
1010
from typing import Generator, Optional, Union
1111
from urllib.parse import urlparse
1212
from xml.etree import ElementTree as ET
13+
1314
try:
1415
from zoneinfo import ZoneInfo
1516
except ImportError:
1617
from backports.zoneinfo import ZoneInfo
1718

1819
import requests
1920
from django.conf import settings
21+
from django.contrib.auth.models import User
2022
from django.core.exceptions import ImproperlyConfigured
21-
from lxml import etree
2223
from django.core.files import File
2324
from django.db.models.query import QuerySet
2425
from django.utils.translation import gettext_lazy as t
26+
from lxml import etree
2527
from rest_framework import status
2628
from rest_framework.authtoken.models import Token
2729
from rest_framework.reverse import reverse
2830

29-
from kpi.constants import (
30-
SUBMISSION_FORMAT_TYPE_JSON,
31-
SUBMISSION_FORMAT_TYPE_XML,
32-
PERM_FROM_KC_ONLY,
33-
PERM_CHANGE_SUBMISSIONS,
34-
PERM_DELETE_SUBMISSIONS,
35-
PERM_VALIDATE_SUBMISSIONS,
36-
)
37-
from kpi.exceptions import (
38-
AttachmentNotFoundException,
39-
InvalidXPathException,
40-
SubmissionIntegrityError,
41-
SubmissionNotFoundException,
42-
XPathNotFoundException,
43-
)
31+
from kpi.constants import (PERM_CHANGE_SUBMISSIONS, PERM_DELETE_SUBMISSIONS,
32+
PERM_FROM_KC_ONLY, PERM_VALIDATE_SUBMISSIONS,
33+
SUBMISSION_FORMAT_TYPE_JSON,
34+
SUBMISSION_FORMAT_TYPE_XML)
35+
from kpi.exceptions import (AttachmentNotFoundException, InvalidXPathException,
36+
SubmissionIntegrityError,
37+
SubmissionNotFoundException,
38+
XPathNotFoundException)
4439
from kpi.interfaces.sync_backend_media import SyncBackendMediaInterface
4540
from kpi.models.asset_file import AssetFile
4641
from kpi.models.object_permission import ObjectPermission
@@ -49,24 +44,17 @@
4944
from kpi.utils.mongo_helper import MongoHelper
5045
from kpi.utils.permissions import is_user_anonymous
5146
from kpi.utils.xml import edit_submission_xml
47+
48+
from ..exceptions import (BadFormatException,
49+
KobocatBulkUpdateSubmissionsClientException,
50+
KobocatDeploymentException,
51+
KobocatDuplicateSubmissionException)
5252
from .base_backend import BaseDeploymentBackend
53-
from .kc_access.shadow_models import (
54-
KobocatOneTimeAuthToken,
55-
KobocatXForm,
56-
ReadOnlyKobocatAttachment,
57-
ReadOnlyKobocatInstance,
58-
)
59-
from .kc_access.utils import (
60-
assign_applicable_kc_permissions,
61-
instance_count,
62-
last_submission_time
63-
)
64-
from ..exceptions import (
65-
BadFormatException,
66-
KobocatBulkUpdateSubmissionsClientException,
67-
KobocatDeploymentException,
68-
KobocatDuplicateSubmissionException,
69-
)
53+
from .kc_access.shadow_models import (KobocatOneTimeAuthToken, KobocatXForm,
54+
ReadOnlyKobocatAttachment,
55+
ReadOnlyKobocatInstance)
56+
from .kc_access.utils import (assign_applicable_kc_permissions, instance_count,
57+
last_submission_time)
7058

7159

7260
class KobocatDeploymentBackend(BaseDeploymentBackend):
@@ -1372,7 +1360,8 @@ def __kobocat_proxy_request(kc_request, user=None):
13721360
:return: requests.models.Response
13731361
"""
13741362
if not is_user_anonymous(user):
1375-
token, created = Token.objects.get_or_create(user=user)
1363+
token = User.objects.using("kobocat").select_related(
1364+
"auth_token").get(username=user.username).auth_token
13761365
kc_request.headers['Authorization'] = 'Token %s' % token.key
13771366
session = requests.Session()
13781367
return session.send(kc_request.prepare())

0 commit comments

Comments
 (0)