Skip to content

Commit 4646f49

Browse files
committed
Refactor filegroups to be a dict
For displaying them, I needed to be able to look them up by name.
1 parent 0cc543a commit 4646f49

File tree

6 files changed

+19
-19
lines changed

6 files changed

+19
-19
lines changed

airlock/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class ReleaseRequest(AirlockContainer):
124124
author: str
125125
created_at: datetime
126126
status: Status = Status.PENDING
127-
filegroups: list[FileGroup] = field(default_factory=list)
127+
filegroups: dict[FileGroup] = field(default_factory=dict)
128128

129129
def __post_init__(self):
130130
self.root().mkdir(parents=True, exist_ok=True)

airlock/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def __init__(self, *args, **kwargs):
99
release_request = kwargs.pop("release_request")
1010
super().__init__(*args, **kwargs)
1111
if release_request:
12-
self.filegroup_names = {group.name for group in release_request.filegroups}
12+
self.filegroup_names = release_request.filegroups.keys()
1313
else:
1414
self.filegroup_names = set()
1515
group_choices = {

airlock/templates/file_browser/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@
129129
</div>
130130
{% #modal id="viewFileGroups" %}
131131
{% #card container=True title="File Groups for this request" %}
132-
{% for group in release_request.filegroups %}
132+
{% for group in release_request.filegroups.values %}
133133
{{ group.name}}
134134
{% #list_group %}
135135
{% for file in group.files %}

local_db/api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ def _filegroup(self, filegroup_metadata: FileGroupMetadata):
5151
)
5252

5353
def _get_filegroups(self, metadata: RequestMetadata):
54-
return [
55-
self._filegroup(group_metadata)
54+
return {
55+
group_metadata.name: self._filegroup(group_metadata)
5656
for group_metadata in metadata.filegroups.all()
57-
]
57+
}
5858

5959
def _get_or_create_filegroupmetadata(self, request_id: str, group_name: str):
6060
metadata = self._find_metadata(request_id)

tests/integration/test_views.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def test_workspace_request_file_creates(client_with_user, api):
144144
assert response.status_code == 302
145145

146146
release_request = api.get_current_request(workspace.name, user)
147-
filegroup = release_request.filegroups[0]
147+
filegroup = release_request.filegroups["default"]
148148
assert filegroup.name == "default"
149149
assert str(filegroup.files[0].relpath) == "test/path.txt"
150150
assert release_request.abspath("test/path.txt").exists()
@@ -157,7 +157,7 @@ def test_workspace_request_file_request_already_exists(client_with_user, api):
157157
workspace = factories.create_workspace("test1")
158158
factories.write_workspace_file(workspace, "test/path.txt")
159159
release_request = factories.create_release_request(workspace, user)
160-
assert release_request.filegroups == []
160+
assert release_request.filegroups == {}
161161

162162
response = client.post(
163163
"/workspaces/add-file-to-request/test1",
@@ -167,7 +167,7 @@ def test_workspace_request_file_request_already_exists(client_with_user, api):
167167
current_release_request = api.get_current_request(workspace.name, user)
168168
assert current_release_request.id == release_request.id
169169
assert release_request.abspath("test/path.txt").exists()
170-
filegroup = current_release_request.filegroups[0]
170+
filegroup = current_release_request.filegroups["default"]
171171
assert filegroup.name == "default"
172172
assert str(filegroup.files[0].relpath) == "test/path.txt"
173173

@@ -192,7 +192,7 @@ def test_workspace_request_file_with_new_filegroup(client_with_user, api):
192192
assert response.status_code == 302
193193

194194
release_request = api.get_current_request(workspace.name, user)
195-
filegroup = release_request.filegroups[0]
195+
filegroup = release_request.filegroups["new_group"]
196196
assert filegroup.name == "new_group"
197197

198198

tests/unit/test_api.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -288,28 +288,28 @@ def setup_empty_release_request():
288288

289289
def test_release_request_filegroups_with_no_files(api):
290290
release_request, _, _ = setup_empty_release_request()
291-
assert release_request.filegroups == []
291+
assert release_request.filegroups == {}
292292

293293

294294
def test_release_request_filegroups_default_filegroup(api):
295295
release_request, path, author = setup_empty_release_request()
296-
assert release_request.filegroups == []
296+
assert release_request.filegroups == {}
297297
release_request = api.add_file_to_request(release_request, path, author)
298298
assert len(release_request.filegroups) == 1
299-
filegroup = release_request.filegroups[0]
299+
filegroup = release_request.filegroups["default"]
300300
assert filegroup.name == "default"
301301
assert len(filegroup.files) == 1
302302
assert filegroup.files[0].relpath == path
303303

304304

305305
def test_release_request_filegroups_named_filegroup(api):
306306
release_request, path, author = setup_empty_release_request()
307-
assert release_request.filegroups == []
307+
assert release_request.filegroups == {}
308308
release_request = api.add_file_to_request(
309309
release_request, path, author, "test_group"
310310
)
311311
assert len(release_request.filegroups) == 1
312-
filegroup = release_request.filegroups[0]
312+
filegroup = release_request.filegroups["test_group"]
313313
assert filegroup.name == "test_group"
314314
assert len(filegroup.files) == 1
315315
assert filegroup.files[0].relpath == path
@@ -335,7 +335,7 @@ def test_release_request_filegroups_multiple_filegroups(api):
335335

336336
release_request_files = {
337337
filegroup.name: [file.relpath for file in filegroup.files]
338-
for filegroup in release_request.filegroups
338+
for filegroup in release_request.filegroups.values()
339339
}
340340

341341
assert release_request_files == {
@@ -346,10 +346,10 @@ def test_release_request_filegroups_multiple_filegroups(api):
346346

347347
def test_release_request_add_same_file(api):
348348
release_request, path, author = setup_empty_release_request()
349-
assert release_request.filegroups == []
349+
assert release_request.filegroups == {}
350350
release_request = api.add_file_to_request(release_request, path, author)
351351
assert len(release_request.filegroups) == 1
352-
assert len(release_request.filegroups[0].files) == 1
352+
assert len(release_request.filegroups["default"].files) == 1
353353

354354
# Adding the same file again should not create a new RequestFile
355355
with pytest.raises(api.APIException):
@@ -362,4 +362,4 @@ def test_release_request_add_same_file(api):
362362
release_request = api.get_release_request(release_request.id)
363363
# No additional files or groups have been created
364364
assert len(release_request.filegroups) == 1
365-
assert len(release_request.filegroups[0].files) == 1
365+
assert len(release_request.filegroups["default"].files) == 1

0 commit comments

Comments
 (0)