Skip to content

Commit a5d71a9

Browse files
committed
Fix tests - folder assign - unassign
1 parent 2eda4c8 commit a5d71a9

File tree

4 files changed

+39
-45
lines changed

4 files changed

+39
-45
lines changed

superannotate/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ def consensus(*args, **kwargs):
3333
filter_annotation_instances, filter_images_by_comments,
3434
filter_images_by_tags
3535
)
36-
from .db.utils import _search_folders
3736
from .db.annotation_classes import (
3837
create_annotation_class, create_annotation_classes_from_classes_json,
3938
delete_annotation_class, download_annotation_classes_json,

superannotate/db/project_images.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -570,15 +570,19 @@ def assign_images(project, image_names, user):
570570
return
571571

572572
project, folder = get_project_and_folder_metadata(project)
573+
574+
project_users = get_team_metadata()["users"]
575+
project_users = [i['id'] for i in project_users]
576+
if user not in project_users:
577+
logging.warn(
578+
f'Skipping {user}. {user} is not a verified contributor for the {project["name"]}'
579+
)
580+
573581
folder_name = 'root'
574582
if folder:
575583
folder_name = folder['name']
576584

577-
project_meta = get_project_metadata(project)
578-
params = {
579-
"project_id": project_meta['id'],
580-
"team_id": project_meta["team_id"]
581-
}
585+
params = {"project_id": project['id'], "team_id": project["team_id"]}
582586
json_req = {
583587
"image_names": image_names,
584588
"assign_user_id": user,
@@ -613,22 +617,21 @@ def assign_folder(project, folder_name, users):
613617
project_users = get_team_metadata()["users"]
614618
project_name = project_meta['name']
615619
project_users = [i['id'] for i in project_users]
616-
verified_contributor = []
620+
unverified_contributor = set(project_users) - set(users)
621+
verified_contributor = set(users) - set(unverified_contributor)
617622

618-
for user in users:
619-
if user not in project_users:
620-
logging.warn(
621-
f'Skipping {user} from assignees. {user} is not a verified contributor for the {project_name}'
622-
)
623-
continue
624-
verified_contributor.append(user)
623+
for user in unverified_contributor:
624+
logging.warn(
625+
f'Skipping {user} from assignees. {user} is not a verified contributor for the {project_name}'
626+
)
627+
continue
625628

626629
params = {
627630
"project_id": project_meta['id'],
628631
"team_id": project_meta["team_id"]
629632
}
630633
json_req = {
631-
"assign_user_ids": verified_contributor,
634+
"assign_user_ids": list(verified_contributor),
632635
"folder_name": folder_name
633636
}
634637
response = _api.send_request(
@@ -673,7 +676,6 @@ def unassign_folder(project, folder_name):
673676
raise SABaseException(
674677
response.status_code, "Couldn't unassign folder " + response.text
675678
)
676-
print('unassign_folder>>>>>>', response.text)
677679

678680

679681
def unassign_images(project, image_names):
@@ -712,5 +714,3 @@ def unassign_images(project, image_names):
712714
raise SABaseException(
713715
response.status_code, "Couldn't unassign images " + response.text
714716
)
715-
716-
print('unassign_images>>>>>>', response.text)

superannotate/db/utils.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -732,25 +732,3 @@ def __attach_image_urls_to_project_thread(
732732
logger.warning(e)
733733
else:
734734
uploaded[thread_id] += uploaded_imgs
735-
736-
737-
def _search_folders(project, folder_name=None, includeUsers=False):
738-
if not isinstance(project, dict):
739-
project = get_project_metadata_bare(project)
740-
team_id, project_id = project["team_id"], project["id"]
741-
params = {
742-
'team_id': team_id,
743-
'project_id': project_id,
744-
'offset': 0,
745-
'name': folder_name,
746-
'is_root': 0,
747-
'includeUsers': includeUsers
748-
}
749-
750-
response = _api.send_request(req_type='GET', path='/folders', params=params)
751-
if not response.ok:
752-
raise SABaseException(
753-
response.status_code, "Couldn't search folders " + response.text
754-
)
755-
response = response.json()
756-
return response

tests/test_assign_images.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from pathlib import Path
22
import time
3-
43
import pytest
5-
64
import superannotate as sa
5+
from superannotate.api import API
6+
7+
_api = API.get_instance()
78

89
PROJECT_NAME_VECTOR1 = "test assign images1"
910
PROJECT_NAME_VECTOR2 = "test assign images2"
@@ -160,7 +161,7 @@ def test_assign_folder(tmpdir):
160161
email = sa.get_team_metadata()["users"][1]["email"]
161162
sa.share_project(project, email, "QA")
162163
sa.assign_folder(project, folder_name, [email])
163-
folders = sa._search_folders(PROJECT_NAME_VECTOR1, includeUsers=True)
164+
folders = _search_folders(project, includeUsers=True)
164165
assert len(folders["data"][0]['folder_users']) > 0
165166

166167

@@ -176,8 +177,24 @@ def test_unassign_folder(tmpdir):
176177
email = sa.get_team_metadata()["users"][1]["email"]
177178
sa.share_project(project, email, "QA")
178179
sa.assign_folder(project, folder_name, [email])
179-
folders = sa._search_folders(PROJECT_NAME_VECTOR1, includeUsers=True)
180+
folders = _search_folders(project, includeUsers=True)
180181
assert len(folders["data"][0]['folder_users']) > 0
181182
sa.unassign_folder(project, folder_name)
182-
folders = sa._search_folders(PROJECT_NAME_VECTOR1, includeUsers=True)
183+
folders = _search_folders(project, includeUsers=True)
183184
assert len(folders["data"][0]['folder_users']) == 0
185+
186+
187+
def _search_folders(project, folder_name=None, includeUsers=False):
188+
team_id, project_id = project["team_id"], project["id"]
189+
params = {
190+
'team_id': team_id,
191+
'project_id': project_id,
192+
'offset': 0,
193+
'name': folder_name,
194+
'is_root': 0,
195+
'includeUsers': includeUsers
196+
}
197+
198+
response = _api.send_request(req_type='GET', path='/folders', params=params)
199+
response = response.json()
200+
return response

0 commit comments

Comments
 (0)