fix: name converter

This commit is contained in:
张泊明518370910136 2021-09-15 15:28:42 +08:00
parent c75caa3990
commit b143172df8
No known key found for this signature in database
GPG Key ID: FBEF5DE8B9F4C629
2 changed files with 18 additions and 13 deletions

View File

@ -18,7 +18,7 @@ class Canvas:
self.students = self.course.get_users( self.students = self.course.get_users(
enrollment_type=["student"], include=["email"] enrollment_type=["student"], include=["email"]
) )
for attr in ["sis_login_id", "sortable_name"]: for attr in ["sis_login_id", "sortable_name", "name"]:
if not hasattr(self.students[0], attr): if not hasattr(self.students[0], attr):
raise Exception( raise Exception(
f"Unable to gather students' {attr}, please contact the Canvas site admin" f"Unable to gather students' {attr}, please contact the Canvas site admin"

View File

@ -7,6 +7,7 @@ import focs_gitea
from canvasapi.group import Group, GroupMembership from canvasapi.group import Group, GroupMembership
from canvasapi.paginated_list import PaginatedList from canvasapi.paginated_list import PaginatedList
from canvasapi.user import User from canvasapi.user import User
from focs_gitea.rest import ApiException
from loguru import logger from loguru import logger
from joint_teapot.config import settings from joint_teapot.config import settings
@ -20,8 +21,9 @@ class PermissionEnum(Enum):
def default_repo_name_convertor(user: User) -> Optional[str]: def default_repo_name_convertor(user: User) -> Optional[str]:
id, name = user.sis_login_id, user.sortable_name id, name = user.sis_login_id, user.name
eng = re.sub("[\u4e00-\u9fa5]", "", name) eng = re.sub("[\u4e00-\u9fa5]", "", name)
eng = eng.replace(",", "")
eng = "".join([word[0].capitalize() + word[1:] for word in eng.split()]) eng = "".join([word[0].capitalize() + word[1:] for word in eng.split()])
return f"{eng}{id}" return f"{eng}{id}"
@ -84,22 +86,25 @@ class Gitea:
if repo_name is None: if repo_name is None:
continue continue
repo_names.append(repo_name) repo_names.append(repo_name)
repo = self.organization_api.create_org_repo( body = {
self.org_name, "auto_init": False,
body={ "default_branch": "master",
"auto_init": False, "name": repo_name,
"default_branch": "master", "private": True,
"name": repo_name, "template": False,
"private": True, "trust_model": "default",
"template": False, }
"trust_model": "default",
},
)
try: try:
repo = self.organization_api.create_org_repo(self.org_name, body=body)
username = self._get_username_by_canvas_student(student) username = self._get_username_by_canvas_student(student)
self.repository_api.repo_add_collaborator( self.repository_api.repo_add_collaborator(
self.org_name, repo.name, username self.org_name, repo.name, username
) )
except ApiException as e:
if e.status == 409:
logger.info(f"Peronsal repo for {student} already exists.")
else:
logger.error(e)
except Exception as e: except Exception as e:
logger.error(e) logger.error(e)
return repo_names return repo_names