Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions openedx/features/survey_report/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
"""
Django Admin page for SurveyReport.
"""


from django.contrib import admin
from .models import SurveyReport
Comment thread
mariajgrimaldi marked this conversation as resolved.


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
Comment thread
Alec4r marked this conversation as resolved.

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)
Original file line number Diff line number Diff line change
@@ -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.'),
),
]
12 changes: 6 additions & 6 deletions openedx/features/survey_report/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down