This project is licensed under GNU AFFERO GENERAL PUBLIC LICENSE Version 3.
Our document is still under construction.
All code must be formatted by go fmt.
All tests of app/controllers is running with the same in-memory database, so they shouldn't rely on a clean database and shouldn't cleanup after runs. Also, they should be running under parallel mode.
All other tests should make it own database and clean it up after running.
| Name | Target | Permission |
|---|---|---|
| admin | N/A | all |
| problem_creator | problem | all |
| class_creator | class | all |
Here are the permissions and their descriptions.
| Name | Description |
|---|---|
| read_user | the permission to read users |
| manage_user | the permission to manage users |
| manage_problem | 无实际意义,但是有可能有update_problem / delete_problem权限的人必须拥有此全局权限。 |
| create_problem | create problem |
| read_submission | read submission of a certain problem. unscoped can read all problems. |
| update_problem | update problem. A scoped update_problem can only update selected problem. unscoped can update all problems. |
| delete_problem | delete a problem. same as above. |
| read_problem_secrets | read sensitive information such as test case. |
| read_logs | read logs. |
| read_class_secrets | read sensitive information such as invite code |
| manage_class | the permission to manage a class or all classes |
| manage_students | the permission to manage students of a class or all classes |
| manage_problem_sets | the permission to manage problem sets of a class or all classes |
| clone_problem_sets | the permission to clone problem sets of a class or all classes |
| read_answers | read submissions in a class |
images with their "path" as filename.
problems
└── problemID
├── attachment
├── input
│ └── testcase_id.in
└── output
└── testcase_id.out
scripts
└── script_name
submissions
└── submissionID
├── run
| └── runID
| ├── output
| ├── compiler_output
| └── comparer_output
└── code