Skip to content

Commit 740d142

Browse files
Refactor code
1 parent 0b6f61e commit 740d142

33 files changed

+286
-308
lines changed

src/country_workspace/admin/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from .role import UserRoleAdmin # noqa
1717
from .sync import SyncLog # noqa
1818
from .user import UserAdmin # noqa
19-
from .kobo import KoboAsset # noqa
19+
from country_workspace.contrib.kobo.admin import KoboAsset # noqa
2020

2121
site.register(ContentType, admin_class=ContentTypeAdmin)
2222
site.register(Permission, admin_class=PermissionAdmin)

src/country_workspace/admin/job.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from django.http import HttpRequest
66
from django_celery_boost.admin import CeleryTaskModelAdmin
77

8-
from ..models import AsyncJob, KoboSyncJob
8+
from ..models import AsyncJob
99
from .base import BaseModelAdmin
1010
from .filters import FailedFilter
1111

@@ -29,7 +29,3 @@ def get_readonly_fields(self, request: "HttpRequest", obj: "AsyncJob | None" = N
2929
if obj:
3030
return "program", "batch", "owner", "local_status", "type", "action", "sentry_id"
3131
return super().get_readonly_fields(request, obj)
32-
33-
@admin.register(KoboSyncJob)
34-
class KoboSyncJobAdmin(CeleryTaskModelAdmin, BaseModelAdmin):
35-
pass

src/country_workspace/config/fragments/constance.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from .app import AURORA_API_TOKEN, AURORA_API_URL, HOPE_API_TOKEN, HOPE_API_URL, NEW_USER_DEFAULT_GROUP
2+
from .kobo import KOBO_TOKEN, KOBO_BASE_URL
23

34
CONSTANCE_BACKEND = "constance.backends.database.DatabaseBackend"
45

@@ -46,8 +47,8 @@
4647
"AURORA_API_URL": (AURORA_API_URL, "Aurora API Server address", str),
4748
"HOPE_API_TOKEN": (HOPE_API_TOKEN, "HOPE API Access Token", "write_only_input"),
4849
"HOPE_API_URL": (HOPE_API_URL, "HOPE API Server address", str),
49-
"KOBO_API_TOKEN": ("", "Kobo API Access Token", "write_only_input"),
50-
"KOBO_API_URL": ("", "Kobo API Server address", str),
50+
"KOBO_TOKEN": (KOBO_TOKEN, "Kobo API Access Token", "write_only_input"),
51+
"KOBO_BASE_URL": (KOBO_BASE_URL, "Kobo Server address", str),
5152
"CACHE_TIMEOUT": (86400, "Cache Redis TTL", int),
5253
"CACHE_BY_VERSION": (False, "Invalidate Cache on CW version change", bool),
5354
}
@@ -60,7 +61,7 @@
6061
"AURORA_API_URL",
6162
"HOPE_API_TOKEN",
6263
"HOPE_API_URL",
63-
"KOBO_API_TOKEN",
64-
"KOBO_API_URL",
64+
"KOBO_TOKEN",
65+
"KOBO_BASE_URL",
6566
),
6667
}

src/country_workspace/admin/kobo.py renamed to src/country_workspace/contrib/kobo/admin.py

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,14 @@
22

33
from django.contrib import admin
44

5-
from .base import BaseModelAdmin
6-
from ..models import KoboAsset
7-
from ..models.kobo import KoboQuestion, KoboSubmission
8-
9-
10-
class ReadOnlyInlineAdmin(admin.TabularInline):
11-
can_create = False
12-
can_change = False
13-
can_delete = False
14-
extra = 0
15-
16-
class KoboQuestionAdmin(ReadOnlyInlineAdmin):
17-
model = KoboQuestion
18-
19-
20-
class KoboSubmissionAdmin(ReadOnlyInlineAdmin):
21-
model = KoboSubmission
5+
from country_workspace.admin.base import BaseModelAdmin
6+
from country_workspace.models import KoboAsset
227

238

249
@admin.register(KoboAsset)
2510
class KoboAssetAdmin(BaseModelAdmin):
2611
list_display = ("uid", "name")
2712
exclude = ("programs",)
28-
inlines = (KoboQuestionAdmin, KoboSubmissionAdmin)
2913

3014
def has_add_permission(self, *args: Any, **kwargs: Any) -> bool:
3115
return False
File renamed without changes.

src/country_workspace/contrib/kobo/auth.py renamed to src/country_workspace/contrib/kobo/api/auth.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
from requests.models import PreparedRequest
33

44

5-
TOKEN = "Token"
6-
AUTHORIZATION = 'Authorization'
5+
TOKEN = "Token" # noqa: S105
6+
AUTHORIZATION = "Authorization"
77

88
class Auth(AuthBase):
99
def __init__(self, api_key: str) -> None:

src/country_workspace/contrib/kobo/client.py renamed to src/country_workspace/contrib/kobo/api/client.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
from black.linegen import partial
55
from requests import Session, Response
66

7-
from country_workspace.contrib.kobo.auth import Auth
8-
from country_workspace.contrib.kobo.data import Submission, Asset, Question
9-
from country_workspace.contrib.kobo.raw.common import ListResponse
10-
from country_workspace.contrib.kobo.raw import asset as raw_asset, asset_list as raw_asset_list, common as raw_common
11-
from country_workspace.contrib.kobo.raw import submission_list as raw_submission_list
12-
7+
from country_workspace.contrib.kobo.api.auth import Auth
8+
from country_workspace.contrib.kobo.api.data import Submission, Asset, Question
9+
from country_workspace.contrib.kobo.api.raw.common import ListResponse
10+
from country_workspace.contrib.kobo.api.raw import asset_list as raw_asset_list
11+
from country_workspace.contrib.kobo.api.raw import asset as raw_asset, submission_list as raw_submission_list, \
12+
common as raw_common
1313

1414
DataGetter = Callable[[str], Response]
1515

src/country_workspace/contrib/kobo/data.py renamed to src/country_workspace/contrib/kobo/api/data.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
from typing import Any
88
from uuid import UUID
99

10-
from country_workspace.contrib.kobo.raw import asset as raw_asset
11-
from country_workspace.contrib.kobo.raw import submission_list as raw_submission_list
10+
from country_workspace.contrib.kobo.api.raw import asset as raw_asset, submission_list as raw_submission_list
1211

1312

1413
class SurveyItemType(StrEnum):
@@ -42,12 +41,11 @@ def extract_answer(self, in_: raw_submission_list.Submission, out: dict[str, Any
4241
roster[0][self.key] = in_.get(self.key)
4342
else:
4443
roster.append({self.key: in_.get(self.key)})
45-
else:
46-
if roster_key in in_:
47-
for i, item in enumerate(in_[roster_key]):
48-
if len(roster) < i + 1:
49-
roster.append({})
50-
roster[i][self.key] = item[self.key]
44+
elif roster_key in in_:
45+
for i, item in enumerate(in_[roster_key]):
46+
if len(roster) < i + 1:
47+
roster.append({})
48+
roster[i][self.key] = item[self.key]
5149
out[roster_key] = roster
5250
else:
5351
out[self.key] = in_.get(self.key)
@@ -60,6 +58,9 @@ def key(self) -> str:
6058
def labels(self) -> list[str]:
6159
return self._raw["label"]
6260

61+
def __str__(self) -> str:
62+
return f"Question: {' '.join(self.labels)}"
63+
6364

6465
InAndOut = tuple[raw_submission_list.Submission, dict[str, Any]]
6566

@@ -132,3 +133,6 @@ def questions(self) -> list[Question]:
132133
@property
133134
def submissions(self) -> Generator[Submission, None, None]:
134135
yield from self._submissions(self.questions)
136+
137+
def __str__(self) -> str:
138+
return f"Asset: {self.name}"

src/country_workspace/contrib/kobo/api/raw/__init__.py

Whitespace-only changes.
File renamed without changes.

0 commit comments

Comments
 (0)