feat: add django admin page for survey report (#31323)
* feat: add django admin page for survey report * fix: solve quality test errors * feat: remove delete buttons and delete actions * docs: add help_text to fields * test: fix quality test issues * docs: remove model form and add help_text in model * feat: add migration to apply field changes
This commit is contained in:
committed by
GitHub
parent
ef31ad6302
commit
cd54e8b275
69
openedx/features/survey_report/admin.py
Normal file
69
openedx/features/survey_report/admin.py
Normal file
@@ -0,0 +1,69 @@
|
||||
"""
|
||||
Django Admin page for SurveyReport.
|
||||
"""
|
||||
|
||||
|
||||
from django.contrib import admin
|
||||
from .models import SurveyReport
|
||||
|
||||
|
||||
class SurveyReportAdmin(admin.ModelAdmin):
|
||||
"""
|
||||
Admin to manage survey reports.
|
||||
"""
|
||||
readonly_fields = (
|
||||
'courses_offered', 'learners', 'registered_learners',
|
||||
'enrollments', 'generated_certificates', 'extra_data',
|
||||
'created_at'
|
||||
)
|
||||
|
||||
list_display = (
|
||||
'id', 'summary', 'created_at'
|
||||
)
|
||||
|
||||
def summary(self, obj) -> str:
|
||||
"""
|
||||
Show a summary of the survey report.
|
||||
info:
|
||||
- Courses: Total number of active unique courses.
|
||||
- Learners: Recently active users with login in some weeks.
|
||||
- Enrollments: Total number of active enrollments in the platform.
|
||||
"""
|
||||
return f"Total Courses: {obj.courses_offered}," \
|
||||
f"Total Learners: {obj.learners}, Total Enrollments: {obj.enrollments}"
|
||||
|
||||
def has_add_permission(self, request):
|
||||
"""
|
||||
Removes the "add" button from admin.
|
||||
"""
|
||||
return False
|
||||
|
||||
def has_delete_permission(self, request, obj=None):
|
||||
"""
|
||||
Removes the "delete" options from admin.
|
||||
"""
|
||||
return False
|
||||
|
||||
def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
|
||||
"""
|
||||
Removes the "save" buttons from admin change view.
|
||||
"""
|
||||
extra_context = extra_context or {}
|
||||
|
||||
extra_context['show_save'] = False
|
||||
extra_context['show_save_and_continue'] = False
|
||||
extra_context['show_save_and_add_another'] = False
|
||||
|
||||
return super().changeform_view(request, object_id, form_url, extra_context)
|
||||
|
||||
def get_actions(self, request):
|
||||
"""
|
||||
Removes the default bulk delete option provided by Django,
|
||||
it doesn't do what we need for this model.
|
||||
"""
|
||||
actions = super().get_actions(request)
|
||||
if 'delete_selected' in actions:
|
||||
del actions['delete_selected']
|
||||
return actions
|
||||
|
||||
admin.site.register(SurveyReport, SurveyReportAdmin)
|
||||
@@ -0,0 +1,44 @@
|
||||
# Generated by Django 3.2.16 on 2022-11-30 15:33
|
||||
|
||||
from django.db import migrations, models
|
||||
import jsonfield.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('survey_report', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='surveyreport',
|
||||
name='courses_offered',
|
||||
field=models.BigIntegerField(help_text='Total number of active unique courses.'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='surveyreport',
|
||||
name='enrollments',
|
||||
field=models.BigIntegerField(help_text='Total number of active enrollments in the platform.'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='surveyreport',
|
||||
name='extra_data',
|
||||
field=jsonfield.fields.JSONField(blank=True, default=dict, help_text='Extra information that will be saved in the report, E.g: site_name, openedx-release.'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='surveyreport',
|
||||
name='generated_certificates',
|
||||
field=models.BigIntegerField(help_text='Total number of generated certificates.'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='surveyreport',
|
||||
name='learners',
|
||||
field=models.BigIntegerField(help_text='Total number of recently active users with login in some weeks.'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='surveyreport',
|
||||
name='registered_learners',
|
||||
field=models.BigIntegerField(help_text='Total number of users ever registered in the platform.'),
|
||||
),
|
||||
]
|
||||
@@ -20,15 +20,15 @@ class SurveyReport(models.Model):
|
||||
- generated_certificates: Total number of generated certificates.
|
||||
- extra_data: Extra information that will be saved in the report, E.g: site_name, openedx-release.
|
||||
"""
|
||||
courses_offered = models.BigIntegerField()
|
||||
learners = models.BigIntegerField()
|
||||
registered_learners = models.BigIntegerField()
|
||||
enrollments = models.BigIntegerField()
|
||||
generated_certificates = models.BigIntegerField()
|
||||
courses_offered = models.BigIntegerField(help_text="Total number of active unique courses.")
|
||||
learners = models.BigIntegerField(help_text="Total number of recently active users with login in some weeks.")
|
||||
registered_learners = models.BigIntegerField(help_text="Total number of users ever registered in the platform.")
|
||||
enrollments = models.BigIntegerField(help_text="Total number of active enrollments in the platform.")
|
||||
generated_certificates = models.BigIntegerField(help_text="Total number of generated certificates.")
|
||||
extra_data = JSONField(
|
||||
blank=True,
|
||||
default=dict,
|
||||
help_text="Extra information for instance data",
|
||||
help_text="Extra information that will be saved in the report, E.g: site_name, openedx-release.",
|
||||
)
|
||||
created_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user