diff --git a/app/projects/controller.py b/app/projects/controller.py index eb88c96..7f2bad2 100644 --- a/app/projects/controller.py +++ b/app/projects/controller.py @@ -1,5 +1,5 @@ import os -from typing import List, Tuple +from typing import List from flask import abort, current_app, request @@ -44,8 +44,8 @@ def get(self)-> dict: page = data.get("page") languages = data.get("languages").split(",") if data.get("languages") else None name = data.get("name") - - if languages is not None or name is not None: + + if languages is not None or name != '': projects = ProjectService.filter_project_by_name_or_language(name, languages) else: projects = ProjectService.get_all() diff --git a/app/projects/service.py b/app/projects/service.py index 414450c..5d359ba 100644 --- a/app/projects/service.py +++ b/app/projects/service.py @@ -147,10 +147,11 @@ def get_projects_info(db_projects, grew_projects, page, total_projects, projects projects_extended_list(List[ProjectExtendedInterface]): union of db_projects and grew_projects with different info """ projects: List[ProjectExtendedInterface] = [] - grew_projects_names = set([project["name"] for project in grew_projects]) - db_projects_names = set([project.project_name for project in db_projects]) + grew_projects_names = [project["name"] for project in grew_projects] + db_projects_names = [project.project_name for project in db_projects] - common = db_projects_names & grew_projects_names + common = [project for project in db_projects_names if project in grew_projects_names] + filtered_common = [project for project in common if ( ProjectService.filter_project_by_type(ProjectService.get_by_name(project), projects_type) )] @@ -162,39 +163,38 @@ def get_projects_info(db_projects, grew_projects, page, total_projects, projects else: paginated_common = filtered_common total_pages = 1 - for grew_project in grew_projects: - if grew_project["name"] in paginated_common: - - project = ProjectService.get_by_name(grew_project["name"]) - if ProjectAccessService.check_project_access( - project.visibility, project.id - ): - ( - project.admins, - project.validators, - project.annotators, - project.guests, - ) = ProjectAccessService.get_all(project.id) - - project.owner = project.admins[0] if project.admins else '' - project.owner_avatar_url = UserService.get_by_username(project.admins[0]).picture_url if project.admins else '' - project.contact_owner = UserService.get_by_username(project.admins[0]).email if project.admins else '' - project.sync_github = project.github_repository.repository_name if project.github_repository else '' - - (last_access, last_write_access) = LastAccessService.get_project_last_access(project.project_name) - now = datetime.datetime.now().timestamp() - project.last_access = last_access - now - project.last_write_access = last_write_access - now - project_path = project.image - project.image = ProjectService.get_project_image(project_path) - - project.users = grew_project["users"] - project.number_sentences = grew_project["number_sentences"] - project.number_samples = grew_project["number_samples"] - project.number_tokens = grew_project["number_tokens"] - project.number_trees = grew_project["number_trees"] + for project_name in paginated_common: + grew_project = next(project for project in grew_projects if project["name"] == project_name) + project = ProjectService.get_by_name(project_name) + if ProjectAccessService.check_project_access( + project.visibility, project.id + ): + ( + project.admins, + project.validators, + project.annotators, + project.guests, + ) = ProjectAccessService.get_all(project.id) + + project.owner = project.admins[0] if project.admins else '' + project.owner_avatar_url = UserService.get_by_username(project.admins[0]).picture_url if project.admins else '' + project.contact_owner = UserService.get_by_username(project.admins[0]).email if project.admins else '' + project.sync_github = project.github_repository.repository_name if project.github_repository else '' - projects.append(project) + (last_access, last_write_access) = LastAccessService.get_project_last_access(project.project_name) + now = datetime.datetime.now().timestamp() + project.last_access = last_access - now + project.last_write_access = last_write_access - now + project_path = project.image + project.image = ProjectService.get_project_image(project_path) + + project.users = grew_project["users"] + project.number_sentences = grew_project["number_sentences"] + project.number_samples = grew_project["number_samples"] + project.number_tokens = grew_project["number_tokens"] + project.number_trees = grew_project["number_trees"] + + projects.append(project) return projects, total_pages @staticmethod