From f705f59d0ed064d2f964824adf9ea63e64cbbfb3 Mon Sep 17 00:00:00 2001
From: BoYanZh <bomingzh@sjtu.edu.cn>
Date: Sun, 19 Sep 2021 17:01:29 +0800
Subject: [PATCH] fix: log level

---
 joint_teapot/teapot.py         |  2 +-
 joint_teapot/utils/logger.py   |  4 ++--
 joint_teapot/workers/canvas.py |  8 ++++----
 joint_teapot/workers/git.py    |  2 +-
 joint_teapot/workers/gitea.py  | 18 +++++++++++++++---
 5 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/joint_teapot/teapot.py b/joint_teapot/teapot.py
index 7d0b3ab..d176701 100644
--- a/joint_teapot/teapot.py
+++ b/joint_teapot/teapot.py
@@ -57,7 +57,7 @@ class Teapot:
         logger.info(
             f"Settings loaded. Canvas Course ID: {settings.canvas_course_id}, Gitea Organization name: {settings.gitea_org_name}"
         )
-        logger.info("Teapot initialized.")
+        logger.debug("Teapot initialized.")
 
     def add_all_canvas_students_to_teams(self, team_names: List[str]) -> None:
         return self.gitea.add_canvas_students_to_teams(self.canvas.students, team_names)
diff --git a/joint_teapot/utils/logger.py b/joint_teapot/utils/logger.py
index 87363c5..db8d3d2 100644
--- a/joint_teapot/utils/logger.py
+++ b/joint_teapot/utils/logger.py
@@ -5,5 +5,5 @@ from loguru import logger as logger
 from joint_teapot.config import settings
 
 logger.remove()
-logger.add(stderr)
-logger.add(settings.log_file_path)
+logger.add(stderr, level="INFO")
+logger.add(settings.log_file_path, level="INFO")
diff --git a/joint_teapot/workers/canvas.py b/joint_teapot/workers/canvas.py
index c64a9dc..8761ed5 100644
--- a/joint_teapot/workers/canvas.py
+++ b/joint_teapot/workers/canvas.py
@@ -23,12 +23,12 @@ class Canvas:
                 raise Exception(
                     f"Unable to gather students' {attr}, please contact the Canvas site admin"
                 )
-        logger.info(f"Canvas students loaded.")
+        logger.debug(f"Canvas students loaded.")
         self.assignments = self.course.get_assignments()
-        logger.info(f"Canvas assignments loaded.")
+        logger.debug(f"Canvas assignments loaded.")
         self.groups = self.course.get_groups()
-        logger.info(f"Canvas groups loaded.")
-        logger.info("Canvas initialized.")
+        logger.debug(f"Canvas groups loaded.")
+        logger.debug("Canvas initialized.")
 
 
 if __name__ == "__main__":
diff --git a/joint_teapot/workers/git.py b/joint_teapot/workers/git.py
index e0db5ef..d276b7b 100644
--- a/joint_teapot/workers/git.py
+++ b/joint_teapot/workers/git.py
@@ -22,7 +22,7 @@ class Git:
         if not os.path.isdir(repos_dir):
             raise Exception(f"{repos_dir} does not exist! Create it first.")
         self.repos_dir = repos_dir
-        logger.info("Git initialized.")
+        logger.debug("Git initialized.")
 
     def clone_repo(self, repo_name: str, branch: str = "master") -> Repo:
         repo_dir = os.path.join(self.repos_dir, repo_name)
diff --git a/joint_teapot/workers/gitea.py b/joint_teapot/workers/gitea.py
index c0c71e8..3d8d8ac 100644
--- a/joint_teapot/workers/gitea.py
+++ b/joint_teapot/workers/gitea.py
@@ -58,7 +58,7 @@ class Gitea:
         self.repository_api = focs_gitea.RepositoryApi(self.api_client)
         self.settings_api = focs_gitea.SettingsApi(self.api_client)
         self.user_api = focs_gitea.UserApi(self.api_client)
-        logger.info("Gitea initialized.")
+        logger.debug("Gitea initialized.")
 
     @lru_cache()
     def _get_team_id_by_name(self, name: str) -> int:
@@ -79,12 +79,22 @@ class Gitea:
     ) -> None:
         for team_name in team_names:
             team_id = self._get_team_id_by_name(team_name)
+            team_members = self.organization_api.org_list_team_members(team_id)
             for student in students:
                 try:
                     username = self._get_username_by_canvas_student(student)
-                    self.organization_api.org_add_team_member(team_id, username)
+                    team_member = first(team_members, lambda x: x.login == username)
+                    if team_member is None:
+                        self.organization_api.org_add_team_member(team_id, username)
+                    else:
+                        team_members.remove(team_member)
                 except Exception as e:
                     logger.error(e)
+            for team_member in team_members:
+                logger.warning(
+                    f"{team_member.full_name} found in team {team_name} "
+                    + "but not found in Canvas students"
+                )
 
     def create_personal_repos_for_canvas_students(
         self,
@@ -114,7 +124,7 @@ class Gitea:
                     )
                 except ApiException as e:
                     if e.status == 409:
-                        logger.warning(f"Peronsal repo for {student} already exists.")
+                        logger.warning(f"Personal repo for {student} already exists.")
                     else:
                         raise (e)
                 username = self._get_username_by_canvas_student(student)
@@ -265,3 +275,5 @@ class Gitea:
 
 if __name__ == "__main__":
     gitea = Gitea()
+    res = gitea.get_all_repo_names()
+    print("\n".join(res))