Skip to content

Commit 29bdb34

Browse files
committed
Fix folder-image assign-unassign
1 parent 9ef9f48 commit 29bdb34

File tree

2 files changed

+42
-28
lines changed

2 files changed

+42
-28
lines changed

superannotate/db/project_images.py

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
)
2222
from .teams import get_team_metadata
2323
from ..mixp.decorators import Trackable
24-
from .utils import _assign_images, _get_upload_auth_token, _get_boto_session_by_credentials, upload_image_array_to_s3, \
24+
from .utils import _unassign_images, _assign_images, _get_upload_auth_token, _get_boto_session_by_credentials, upload_image_array_to_s3, \
2525
get_image_array_to_upload, __create_image, __copy_images, __move_images, get_project_folder_string
2626

2727
logger = logging.getLogger("superannotate-python-sdk")
@@ -566,18 +566,18 @@ def assign_images(project, image_names, user):
566566
:param user: user email
567567
:type user: str
568568
"""
569-
logger.info("Assign %s images to user %s", len(image_names), user)
570569
if len(image_names) == 0:
571570
return
572571

573572
project, folder = get_project_and_folder_metadata(project)
574-
575-
verified_users = get_team_metadata()["users"]
576-
verified_users = [i['id'] for i in verified_users]
573+
project_meta = get_project_metadata(project, include_contributors=True)
574+
verified_users = project_meta["contributors"]
575+
verified_users = [i['user_id'] for i in verified_users]
577576
if user not in verified_users:
578577
logging.warn(
579578
f'Skipping {user}. {user} is not a verified contributor for the {project["name"]}'
580579
)
580+
return
581581

582582
folder_name = 'root'
583583
if folder:
@@ -587,6 +587,7 @@ def assign_images(project, image_names, user):
587587
team_id=project['team_id'])
588588
for log in logs:
589589
logger.warn(log)
590+
logger.info("Assign images to user %s", user)
590591

591592

592593
def assign_folder(project, folder_name, users):
@@ -602,9 +603,9 @@ def assign_folder(project, folder_name, users):
602603
"""
603604

604605
project_meta = get_project_metadata(project, include_contributors=True)
605-
verified_users = get_team_metadata()["users"]
606+
verified_users = project_meta["contributors"]
607+
verified_users = [i['user_id'] for i in verified_users]
606608
project_name = project_meta['name']
607-
verified_users = [i['id'] for i in verified_users]
608609
verified_users = set(users).intersection(set(verified_users))
609610
unverified_contributor = set(users) - verified_users
610611

@@ -614,6 +615,9 @@ def assign_folder(project, folder_name, users):
614615
)
615616
continue
616617

618+
if not verified_users:
619+
return
620+
617621
params = {
618622
"project_id": project_meta['id'],
619623
"team_id": project_meta["team_id"]
@@ -677,27 +681,12 @@ def unassign_images(project, image_names):
677681
:type image_names: list of str
678682
"""
679683
project, folder = get_project_and_folder_metadata(project)
684+
680685
folder_name = 'root'
681686
if folder:
682687
folder_name = folder['name']
683-
params = {
684-
"project_id": project['id'],
685-
"team_id": project["team_id"]
686-
}
687-
json_req = {
688-
"image_names": image_names,
689-
"remove_user_ids": ["all"],
690-
"folder_name": folder_name
691-
}
692-
693-
response = _api.send_request(
694-
req_type='PUT',
695-
path='/images/editAssignment',
696-
params=params,
697-
json_req=json_req
698-
)
699-
700-
if not response.ok:
701-
raise SABaseException(
702-
response.status_code, "Couldn't unassign images " + response.text
703-
)
688+
if not image_names:
689+
return
690+
logs = _unassign_images(folder_name=folder_name,image_names=image_names,project_id=project['id'],team_id=project['team_id'])
691+
for log in logs:
692+
logger.warn(log)

superannotate/db/utils.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,3 +783,28 @@ def _assign_images(folder_name, image_names, user, project_id, team_id):
783783
message = "Couldn't assign images " + response.text
784784
messages.append(message)
785785
return messages
786+
787+
788+
def _unassign_images(folder_name, image_names, project_id, team_id):
789+
image_names_lists = divide_chunks(image_names, 500)
790+
params = {"project_id": project_id, "team_id": team_id}
791+
messages = []
792+
for image_name_list in image_names_lists:
793+
json_req = {
794+
"image_names": image_name_list,
795+
"remove_user_ids": ["all"],
796+
"folder_name": folder_name,
797+
}
798+
response = _api.send_request(
799+
req_type='PUT',
800+
path='/images/editAssignment',
801+
params=params,
802+
json_req=json_req
803+
)
804+
if not response.ok:
805+
message = "Couldn't assign images " + response.text
806+
messages.append(message)
807+
return messages
808+
809+
810+

0 commit comments

Comments
 (0)