Commit Graph

305 Commits

Author SHA1 Message Date
2ac29a6d89 feat: support exporting Canvas group members with group info (#7)
Some checks failed
build / trigger-build-image (push) Has been cancelled
## Summary

Add an optional `--group` argument to `export-users`.

When `--group` is not provided, the command keeps the original behavior and exports all Canvas users as:

`name,sis_id,login_id`

When `--group <group_set_prefix>` is provided, the command looks up the corresponding Canvas group set, exports only users in that group set, and appends the normalized group name as the fourth column:

`name,sis_id,login_id,group_name`

For example, if the group set is `p2team`, the exported group names will be formatted as `p2team01`, `p2team02`, `p2team10`, etc.

## Changes

- Add optional `--group` support to `export-users`
- Look up Canvas group sets by exact name first, then by prefix
- Export only members in the matched group set when `--group` is used
- Append the user's group name as the fourth CSV column
- Normalize Canvas group names like `p1team 1` and `p1team10` into `p1team01` and `p1team10`
- Sort exported rows by group number in ascending order
- Handle invalid input more gracefully:
  - if no matching group set is found, exit cleanly with an error log
  - if a Canvas group name does not follow the expected `group_set_name + number` pattern, exit cleanly with an error log

## Behavior

### Default

`joint-teapot export-users students.csv`

Output format:

`name,sis_id,login_id`

### With group export

`joint-teapot export-users p2.csv --group p2team`

Output format:

`name,sis_id,login_id,p2team01`

## Notes

This change keeps the original export behavior unchanged unless `--group` is explicitly provided.

Reviewed-on: #7
Reviewed-by: 张泊明518370910136 <bomingzh@sjtu.edu.cn>
Co-authored-by: egghead_yao <egghead_yao@sjtu.edu.cn>
Co-committed-by: egghead_yao <egghead_yao@sjtu.edu.cn>
2026-06-22 18:10:04 +08:00
Lyd
0543701712
feat: improve function of adding students to mm team (#61)
All checks were successful
build / trigger-build-image (push) Successful in 44s
2026-03-14 23:02:58 -07:00
66e045fed9
chore: better writing
All checks were successful
build / trigger-build-image (push) Successful in 1m21s
2026-03-14 16:04:32 -07:00
71414ef9c9
chore: better logs
All checks were successful
build / trigger-build-image (push) Successful in 14s
2025-11-30 00:25:30 -08:00
128142e965
feat: link to joj-mon from run ID
All checks were successful
build / trigger-build-image (push) Successful in 15s
2025-11-29 23:55:08 -08:00
743331c81b
feat: failed stage in scoreboard commit
All checks were successful
build / trigger-build-image (push) Successful in 23s
2025-11-29 00:11:17 -08:00
3a69be006d
chore: less redundant log
All checks were successful
build / trigger-build-image (push) Successful in 12s
2025-11-27 20:42:13 -08:00
a901c2bbde
fix: use penalized total score
All checks were successful
build / trigger-build-image (push) Successful in 24s
2025-11-07 16:36:06 -08:00
77064ac37c
chore: better help
All checks were successful
build / trigger-build-image (push) Successful in 15s
2025-10-29 20:38:22 -07:00
332e522051
feat: joj3-check-env ignore submitter
All checks were successful
build / trigger-build-image (push) Successful in 24s
2025-10-29 20:36:11 -07:00
69e097e04b
fix: remove git lock
All checks were successful
build / trigger-build-image (push) Successful in 28s
2025-10-28 19:37:08 -07:00
f4fb5eae05
feat: add filelock back
All checks were successful
build / trigger-build-image (push) Successful in 47s
2025-10-25 09:05:23 -07:00
3a511660bb
feat: remove all .lock files
All checks were successful
build / trigger-build-image (push) Successful in 14s
2025-10-09 00:14:34 -07:00
9fc7649696
feat: remove more locks
All checks were successful
build / trigger-build-image (push) Successful in 12s
2025-10-08 20:29:43 -07:00
e160023cbf
chore: log more commits length
All checks were successful
build / trigger-build-image (push) Successful in 16s
2025-10-08 20:21:27 -07:00
99d889ee12
feat: check stderr isatty for colorize
All checks were successful
build / trigger-build-image (push) Successful in 15s
2025-10-03 00:00:44 -07:00
f755fb44f6
chore: log unwatch
All checks were successful
build / trigger-build-image (push) Successful in 16s
2025-09-28 18:07:11 -07:00
94d3f993b2
feat: remove output repos in joj3-check-gitea-token
All checks were successful
build / trigger-build-image (push) Successful in 15s
2025-09-21 06:15:10 -07:00
aa33dcc2f1
feat: list orgs in joj3-check-gitea-token
All checks were successful
build / trigger-build-image (push) Successful in 8s
2025-09-21 06:02:58 -07:00
e24545324d
revert: "fix: disable file log in joj3-check-gitea-token"
This reverts commit 3dc6667716.
2025-09-21 06:01:04 -07:00
3dc6667716
fix: disable file log in joj3-check-gitea-token
All checks were successful
build / trigger-build-image (push) Successful in 8s
2025-09-21 05:26:08 -07:00
5b6c61af6d
fix: echo user
All checks were successful
build / trigger-build-image (push) Successful in 10s
2025-09-21 05:03:13 -07:00
8264152022
feat: joj3-check-gitea-token
All checks were successful
build / trigger-build-image (push) Successful in 9s
2025-09-21 05:01:03 -07:00
992f450004
feat: check current gitea user for joj3
All checks were successful
build / trigger-build-image (push) Successful in 24s
2025-09-21 04:56:14 -07:00
5478052c23
chore: updgrade to latest hooks 2025-09-21 04:53:13 -07:00
b64ef1198e
chore: subject: wrong Canvas email
All checks were successful
build / trigger-build-image (push) Successful in 15s
2025-09-08 22:44:04 -07:00
f8ff9fd0f9
feat: sample to, subject, body
All checks were successful
build / trigger-build-image (push) Successful in 11s
2025-09-08 22:40:41 -07:00
d28fdaf492
feat: export email in export-users
All checks were successful
build / trigger-build-image (push) Successful in 30s
2025-09-08 22:33:03 -07:00
14154fb59b
fix: typo
All checks were successful
build / trigger-build-image (push) Successful in 21s
2025-08-03 14:40:41 -07:00
cb5735ac40
feat: remove checkout dest lock
All checks were successful
build / trigger-build-image (push) Successful in 10s
2025-08-03 14:40:22 -07:00
083140079e
feat: remove current local head lock
All checks were successful
build / trigger-build-image (push) Successful in 18s
2025-08-03 14:39:09 -07:00
aa9a69eaf1
feat: support git ref as scoreboard column
All checks were successful
build / trigger-build-image (push) Successful in 10s
2025-07-27 03:26:24 -07:00
2d7aba5ce0
fix: typo
All checks were successful
build / trigger-build-image (push) Successful in 11s
2025-07-27 03:09:10 -07:00
0b45898b91
feat: repo name in scoreboard
All checks were successful
build / trigger-build-image (push) Successful in 13s
2025-07-27 02:42:00 -07:00
353797323d
feat(canvas): export all users
All checks were successful
build / trigger-build-image (push) Successful in 13s
2025-07-03 08:46:05 -04:00
beeb45709f
fix: penalty factor calculation
All checks were successful
build / trigger-build-image (push) Successful in 13s
2025-06-30 22:49:26 -04:00
54a4f404fe
fix: penalty for negative score
All checks were successful
build / trigger-build-image (push) Successful in 13s
2025-06-30 08:09:07 -04:00
9e31fc71be
feat: support --issue-label-exclusive
All checks were successful
build / trigger-build-image (push) Successful in 12s
2025-06-25 04:59:23 -04:00
c3b053f0a5
fix: total score penalty warning
All checks were successful
build / trigger-build-image (push) Successful in 11s
2025-06-24 09:31:39 -04:00
0989e4ebd3 fix(regex): full match
All checks were successful
build / trigger-build-image (push) Successful in 12s
2025-06-20 23:01:32 +08:00
4a0507602b
chore: better penalty msg
All checks were successful
build / trigger-build-image (push) Successful in 13s
2025-06-19 11:15:44 -04:00
b26b159f24
fix: get label id
All checks were successful
build / trigger-build-image (push) Successful in 11s
2025-06-19 08:21:00 -04:00
8e3e61c37b
chore: more sanity check
All checks were successful
build / trigger-build-image (push) Successful in 11s
2025-06-19 07:18:28 -04:00
4ae1907ad2
fix: empty penalty
All checks were successful
build / trigger-build-image (push) Successful in 12s
2025-06-19 07:12:37 -04:00
c743e30c1c
chore: better penalty range with +1s
All checks were successful
build / trigger-build-image (push) Successful in 15s
2025-06-19 07:07:11 -04:00
686d4eecf5
chore: better penalty range with +1s
All checks were successful
build / trigger-build-image (push) Successful in 26s
2025-06-19 07:01:06 -04:00
c48bc1a304
feat: support penalty config
All checks were successful
build / trigger-build-image (push) Successful in 13s
2025-06-19 06:37:03 -04:00
07ef6cd5d8
refactor: simplify label finding
All checks were successful
build / trigger-build-image (push) Successful in 12s
2025-06-19 04:01:53 -04:00
1336c6f1f8
feat: joj3 create label when create issue
All checks were successful
build / trigger-build-image (push) Successful in 12s
2025-06-19 02:05:47 -04:00
c1f7b4bdb2
chore: remove colon in title
All checks were successful
build / trigger-build-image (push) Successful in 9s
2025-06-18 09:21:57 -04:00