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")
|
@app.command("get-public-keys", help="list all public keys on gitea")
|
||||||
def get_public_key_of_all_canvas_students() -> None:
|
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")
|
@app.command("clone-all-repos", help="clone all gitea repos to local")
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import functools
|
import functools
|
||||||
from datetime import datetime
|
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.config import settings
|
||||||
from joint_teapot.utils.logger import logger
|
from joint_teapot.utils.logger import logger
|
||||||
|
@ -88,7 +88,7 @@ class Teapot:
|
||||||
self.canvas.students, self.canvas.groups, convertor, convertor
|
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)
|
return self.gitea.get_public_key_of_canvas_students(self.canvas.students)
|
||||||
|
|
||||||
def clone_all_repos(self) -> None:
|
def clone_all_repos(self) -> None:
|
||||||
|
|
|
@ -20,9 +20,9 @@ class Canvas:
|
||||||
self.canvas = PyCanvas("https://umjicanvas.com/", access_token)
|
self.canvas = PyCanvas("https://umjicanvas.com/", access_token)
|
||||||
self.course = self.canvas.get_course(course_id)
|
self.course = self.canvas.get_course(course_id)
|
||||||
logger.info(f"Canvas course loaded. {self.course}")
|
logger.info(f"Canvas course loaded. {self.course}")
|
||||||
self.students = self.course.get_users(
|
# types = ["student", "observer"]
|
||||||
enrollment_type=["student"], include=["email"]
|
types = ["student"]
|
||||||
)
|
self.students = self.course.get_users(enrollment_type=types, include=["email"])
|
||||||
for attr in ["sis_login_id", "sortable_name", "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(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import re
|
import re
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from functools import lru_cache
|
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
|
import focs_gitea
|
||||||
from canvasapi.group import Group, GroupMembership
|
from canvasapi.group import Group, GroupMembership
|
||||||
|
@ -252,17 +252,21 @@ class Gitea:
|
||||||
logger.info(f"{self.org_name}/{repo_name} jobs done")
|
logger.info(f"{self.org_name}/{repo_name} jobs done")
|
||||||
return repo_names
|
return repo_names
|
||||||
|
|
||||||
def get_public_key_of_canvas_students(self, students: PaginatedList) -> List[str]:
|
def get_public_key_of_canvas_students(
|
||||||
res = []
|
self, students: PaginatedList
|
||||||
|
) -> Dict[str, List[str]]:
|
||||||
|
res = {}
|
||||||
for student in students:
|
for student in students:
|
||||||
try:
|
try:
|
||||||
username = self._get_username_by_canvas_student(student)
|
username = self._get_username_by_canvas_student(student)
|
||||||
res.extend(
|
keys = [
|
||||||
[
|
|
||||||
item.key
|
item.key
|
||||||
for item in list_all(self.user_api.user_list_keys, username)
|
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:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
return res
|
return res
|
||||||
|
|
Loading…
Reference in New Issue
Block a user