Closed pdpinch closed 3 years ago
In particular, Dave asked that we store things like gitlogs in the app's own storage instead of in mongo -- they might want to get rid of mongo some day.
The existing functionality of the sysadmin panel is documented in an ADR at https://github.com/edx/edx-platform/blob/master/lms/djangoapps/dashboard/decisions/0001-sysadmin-dashboard.rst
There is some discussion of the subset of features that would be needed in the new, pluggable version, at https://github.com/edx/edx-platform/pull/24048
edX has a short guide on how to create a pluggable django app: https://openedx.atlassian.net/wiki/spaces/AC/pages/30965856/How+to+add+a+new+feature+to+LMS+or+Studio#HowtoaddanewfeaturetoLMSorStudio-django-app-separate-repoHowtoaddanewDjangoappinitsownGitrepository
We have done this before for https://github.com/mitodl/edx-git-auto-export and, I think, https://github.com/mitodl/rapid-response-xblock
Here is the SysAdmin checklist that would be helpful for further in-depth discussions about application demand.
[ ] Creation of external django App "SysAdmin" (Persisting the current UI same as in OpenEdx). mostly as did in past for https://github.com/mitodl/edx-git-auto-export. App will request specifically and get JSON responses.
[ ] Need to introduce an entry point for communication in edx-platform that will host the API's (CRUD Operations). The API's will be used by our external django SysAdmin application. I am bit new to OpenEdx Django App Plugins but seems it would be an option because plugins just required some minimal configuration changes in edx-platform otherwise introduction of a Django app for hosting lms/djangoapps/dashboard/sysadmin.py
operations under /openedx/features/djangoapps as something implemented for Course Enrollments in edx-platform.
[ ] Required to define a set of API's endpoints under SysAdmin plugin app. Following Endpoints (as @pdpinch suggested in a Draft PR):
[ ] Create user accounts (REST API)
[ ] One can take advantage from /user/v1/validation/registration
endpoint to get validation decision. RegistrationValidationView
Get validation information about user data during registration.
Client-side may request validation for any number of form fields,
and the API will return a conclusion from its analysis for each
input
POST Params
: username, fullname and password.Permissions
: StaffUnit testing
: 100% coverage
POST Params
: course_id.Permissions
: StaffUnit testing
: 100% coverage[ ] Gathering cross-course enrollment data (TBD)
[ ] Git Lgos As per "Dave's" comment, If we want to store logs into app own storage instead of in mongo then I think, The git logs logic should be the part of SysAdmin django app but I am not sure what will be performance impact if we persist this data in django model.
@pdpinch @HamzaIbnFarooq kindly take a look over it and let me know if anything I missed over here.
I copied this into Google doc because I had some questions that I think need further discussion: https://docs.google.com/document/d/1z6bmM5yHIY_yR8wLCStMQk3JlhAZDJj8XptMWoGmE0c/edit#heading=h.8ineo2m2ivpa
Phase I
Phase 2: @pdpinch kindly take a look over these and share thoughts.
Thanks @asadiqbal08. I reviewed the issues. I moved most of them to the new syadmin repo and made some edits and comments.
Wow, I think we can close this epic! 🎉
Now all we have to is announce the sysadmin dashboard on the discuss.openedx.org
edX now supports pluggable django apps that can have dependencies on edx-platform. It would be more convenient to managed the sysadmin dashboard as a separate, optionally-installed app.
┆Issue is synchronized with this Trello card by Unito