fix: export public keys
This commit is contained in:
parent
13e7278cdd
commit
31bca87d4b
|
@ -47,7 +47,11 @@ def create_teams_and_repos_by_canvas_groups(group_prefix: str) -> None:
|
|||
|
||||
@app.command("get-public-keys", help="list all public keys on gitea")
|
||||
def get_public_key_of_all_canvas_students() -> None:
|
||||
echo("\n".join(tea.pot.get_public_key_of_all_canvas_students()))
|
||||
res = []
|
||||
for k, v in tea.pot.get_public_key_of_all_canvas_students().items():
|
||||
keys = "\\n".join(v)
|
||||
res.append(f"{k},{keys}")
|
||||
echo("\n".join(res))
|
||||
|
||||
|
||||
@app.command("clone-all-repos", help="clone all gitea repos to local")
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import functools
|
||||
from datetime import datetime
|
||||
from typing import Any, Callable, List, Optional, TypeVar
|
||||
from typing import Any, Callable, Dict, List, Optional, TypeVar
|
||||
|
||||
from joint_teapot.config import settings
|
||||
from joint_teapot.utils.logger import logger
|
||||
|
@ -88,7 +88,7 @@ class Teapot:
|
|||
self.canvas.students, self.canvas.groups, convertor, convertor
|
||||
)
|
||||
|
||||
def get_public_key_of_all_canvas_students(self) -> List[str]:
|
||||
def get_public_key_of_all_canvas_students(self) -> Dict[str, List[str]]:
|
||||
return self.gitea.get_public_key_of_canvas_students(self.canvas.students)
|
||||
|
||||
def clone_all_repos(self) -> None:
|
||||
|
|
|
@ -20,9 +20,9 @@ class Canvas:
|
|||
self.canvas = PyCanvas("https://umjicanvas.com/", access_token)
|
||||
self.course = self.canvas.get_course(course_id)
|
||||
logger.info(f"Canvas course loaded. {self.course}")
|
||||
self.students = self.course.get_users(
|
||||
enrollment_type=["student"], include=["email"]
|
||||
)
|
||||
# types = ["student", "observer"]
|
||||
types = ["student"]
|
||||
self.students = self.course.get_users(enrollment_type=types, include=["email"])
|
||||
for attr in ["sis_login_id", "sortable_name", "name"]:
|
||||
if not hasattr(self.students[0], attr):
|
||||
raise Exception(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import re
|
||||
from enum import Enum
|
||||
from functools import lru_cache
|
||||
from typing import Any, Callable, List, Optional, Tuple
|
||||
from typing import Any, Callable, Dict, List, Optional, Tuple
|
||||
|
||||
import focs_gitea
|
||||
from canvasapi.group import Group, GroupMembership
|
||||
|
@ -252,17 +252,21 @@ class Gitea:
|
|||
logger.info(f"{self.org_name}/{repo_name} jobs done")
|
||||
return repo_names
|
||||
|
||||
def get_public_key_of_canvas_students(self, students: PaginatedList) -> List[str]:
|
||||
res = []
|
||||
def get_public_key_of_canvas_students(
|
||||
self, students: PaginatedList
|
||||
) -> Dict[str, List[str]]:
|
||||
res = {}
|
||||
for student in students:
|
||||
try:
|
||||
username = self._get_username_by_canvas_student(student)
|
||||
res.extend(
|
||||
[
|
||||
keys = [
|
||||
item.key
|
||||
for item in list_all(self.user_api.user_list_keys, username)
|
||||
]
|
||||
)
|
||||
if not keys:
|
||||
logger.info(f"{student} has not uploaded ssh keys to gitea")
|
||||
continue
|
||||
res[student.sis_login_id] = keys
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
return res
|
||||
|
|
Loading…
Reference in New Issue
Block a user