enterprise.admin package

Submodules

enterprise.admin.actions module

Custom Django Admin actions used in enterprise app.

enterprise.admin.actions.export_as_csv_action(description='Export selected objects as CSV file', fields=None, header=True)

Return an export csv action.

Parameters
  • description (string) – action description

  • fields ([string]) – list of model fields to include

  • header (bool) – whether or not to output the column names as the first row

enterprise.admin.actions.refresh_catalog(self, request, queryset)

Kicks off background running tasks for refreshing catalogs

enterprise.admin.forms module

Forms to be used in the enterprise djangoapp.

class enterprise.admin.forms.AdminNotificationForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)

Bases: django.forms.models.ModelForm

Alternate form for AdminNotification.

class Meta

Bases: object

fields = '__all__'
model

alias of enterprise.models.AdminNotification

widgets = {'text': <django.forms.widgets.Textarea object>}
base_fields = {'admin_notification_filter': <django.forms.models.ModelMultipleChoiceField object>, 'expiration_date': <django.forms.fields.DateField object>, 'is_active': <django.forms.fields.BooleanField object>, 'start_date': <django.forms.fields.DateField object>, 'text': <django.forms.fields.CharField object>, 'title': <django.forms.fields.CharField object>}
clean()
  1. start_date and expiration_date are mandatory.

  2. start_date must always come before the expiration_date.

  3. There must be only one admin notification in a date range.

declared_fields = {}
property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.BulkCatalogQueryUpdateCommandConfigurationAdmin(model, admin_site)

Bases: config_models.admin.ConfigurationModelAdmin

Admin form for the BulkCatalogQueryUpdateCommandConfiguration model

property media
class enterprise.admin.forms.EnterpriseCustomerAdminForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)

Bases: django.forms.models.ModelForm

Alternate form for the EnterpriseCustomer admin page.

class Meta

Bases: object

fields = ('name', 'slug', 'country', 'active', 'customer_type', 'site', 'enable_data_sharing_consent', 'enforce_data_sharing_consent', 'enable_audit_enrollment', 'enable_audit_data_reporting', 'replace_sensitive_sso_username', 'hide_course_original_price', 'enable_portal_code_management_screen', 'enable_portal_subscription_management_screen', 'enable_learner_portal', 'enable_learner_portal_offers', 'enable_portal_learner_credit_management_screen', 'enable_executive_education_2U_fulfillment', 'hide_labor_market_data', 'enable_integrated_customer_learner_portal_search', 'enable_analytics_screen', 'enable_portal_reporting_config_screen', 'enable_portal_saml_configuration_screen', 'enable_portal_lms_configurations_screen', 'enable_universal_link', 'enable_browse_and_request', 'enable_slug_login', 'contact_email', 'default_contract_discount', 'default_language', 'sender_alias', 'reply_to')
model

alias of enterprise.models.EnterpriseCustomer

base_fields = {'active': <django.forms.fields.BooleanField object>, 'contact_email': <django.forms.fields.EmailField object>, 'country': <django_countries.fields.LazyTypedChoiceField object>, 'customer_type': <django.forms.models.ModelChoiceField object>, 'default_contract_discount': <django.forms.fields.DecimalField object>, 'default_language': <django.forms.fields.TypedChoiceField object>, 'enable_analytics_screen': <django.forms.fields.BooleanField object>, 'enable_audit_data_reporting': <django.forms.fields.BooleanField object>, 'enable_audit_enrollment': <django.forms.fields.BooleanField object>, 'enable_browse_and_request': <django.forms.fields.BooleanField object>, 'enable_data_sharing_consent': <django.forms.fields.BooleanField object>, 'enable_executive_education_2U_fulfillment': <django.forms.fields.BooleanField object>, 'enable_integrated_customer_learner_portal_search': <django.forms.fields.BooleanField object>, 'enable_learner_portal': <django.forms.fields.BooleanField object>, 'enable_learner_portal_offers': <django.forms.fields.BooleanField object>, 'enable_portal_code_management_screen': <django.forms.fields.BooleanField object>, 'enable_portal_learner_credit_management_screen': <django.forms.fields.BooleanField object>, 'enable_portal_lms_configurations_screen': <django.forms.fields.BooleanField object>, 'enable_portal_reporting_config_screen': <django.forms.fields.BooleanField object>, 'enable_portal_saml_configuration_screen': <django.forms.fields.BooleanField object>, 'enable_portal_subscription_management_screen': <django.forms.fields.BooleanField object>, 'enable_slug_login': <django.forms.fields.BooleanField object>, 'enable_universal_link': <django.forms.fields.BooleanField object>, 'enforce_data_sharing_consent': <django.forms.fields.TypedChoiceField object>, 'hide_course_original_price': <django.forms.fields.BooleanField object>, 'hide_labor_market_data': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>, 'replace_sensitive_sso_username': <django.forms.fields.BooleanField object>, 'reply_to': <django.forms.fields.EmailField object>, 'sender_alias': <django.forms.fields.CharField object>, 'site': <django.forms.models.ModelChoiceField object>, 'slug': <django.forms.fields.SlugField object>}
declared_fields = {}
property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.EnterpriseCustomerCatalogAdminForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)

Bases: django.forms.models.ModelForm

form for EnterpriseCustomerCatalogAdmin class.

class Meta

Bases: object

fields = '__all__'
model

alias of enterprise.models.EnterpriseCustomerCatalog

base_fields = {'content_filter': <jsonfield.forms.JSONField object>, 'enabled_course_modes': <jsonfield.forms.JSONField object>, 'enterprise_catalog_query': <django.forms.models.ModelChoiceField object>, 'enterprise_customer': <django.forms.models.ModelChoiceField object>, 'preview_button': <django.forms.fields.Field object>, 'publish_audit_enrollment_urls': <django.forms.fields.BooleanField object>, 'title': <django.forms.fields.CharField object>}
declared_fields = {'preview_button': <django.forms.fields.Field object>}
static get_catalog_preview_uuid(post_data)

Return the uuid of the catalog the preview button was clicked on There must be only one preview button in the POST data.

e.g: ‘enterprise_customer_catalogs-0-preview_button’

property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.EnterpriseCustomerIdentityProviderAdminForm(*args, **kwargs)

Bases: django.forms.models.ModelForm

Alternate form for the EnterpriseCustomerIdentityProvider admin page.

This form fetches identity providers from lms third_party_auth app. If third_party_auth app is not avilable it displays provider_id as a CharField.

class Meta

Bases: object

fields = '__all__'
model

alias of enterprise.models.EnterpriseCustomerIdentityProvider

base_fields = {'default_provider': <django.forms.fields.BooleanField object>, 'enterprise_customer': <django.forms.models.ModelChoiceField object>, 'provider_id': <django.forms.fields.SlugField object>}
clean()

Final validations of model fields.

  1. Validate that selected site for enterprise customer matches with the selected identity provider’s site.

declared_fields = {}
property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.EnterpriseCustomerReportingConfigAdminForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)

Bases: django.forms.models.ModelForm

Alternate form for the EnterpriseCustomerReportingConfiguration admin page.

This form uses the PasswordInput widget to obscure passwords as they are being entered by the user.

class Meta

Bases: object

fields = ('enterprise_customer', 'active', 'data_type', 'report_type', 'delivery_method', 'enable_compression', 'pgp_encryption_key', 'frequency', 'day_of_month', 'day_of_week', 'hour_of_day', 'include_date', 'email', 'decrypted_password', 'sftp_hostname', 'sftp_port', 'sftp_username', 'decrypted_sftp_password', 'sftp_file_path', 'enterprise_customer_catalogs')
model

alias of enterprise.models.EnterpriseCustomerReportingConfiguration

widgets = {'decrypted_password': <django.forms.widgets.PasswordInput object>, 'decrypted_sftp_password': <django.forms.widgets.PasswordInput object>}
base_fields = {'active': <django.forms.fields.BooleanField object>, 'data_type': <django.forms.fields.TypedChoiceField object>, 'day_of_month': <django.forms.fields.IntegerField object>, 'day_of_week': <django.forms.fields.TypedChoiceField object>, 'decrypted_password': <django.forms.fields.CharField object>, 'decrypted_sftp_password': <django.forms.fields.CharField object>, 'delivery_method': <django.forms.fields.TypedChoiceField object>, 'email': <multi_email_field.forms.MultiEmailField object>, 'enable_compression': <django.forms.fields.BooleanField object>, 'enterprise_customer': <django.forms.models.ModelChoiceField object>, 'enterprise_customer_catalogs': <django.forms.models.ModelMultipleChoiceField object>, 'frequency': <django.forms.fields.TypedChoiceField object>, 'hour_of_day': <django.forms.fields.IntegerField object>, 'include_date': <django.forms.fields.BooleanField object>, 'pgp_encryption_key': <django.forms.fields.CharField object>, 'report_type': <django.forms.fields.TypedChoiceField object>, 'sftp_file_path': <django.forms.fields.CharField object>, 'sftp_hostname': <django.forms.fields.CharField object>, 'sftp_port': <django.forms.fields.IntegerField object>, 'sftp_username': <django.forms.fields.CharField object>}
clean()

Override of clean method to perform additional validation

declared_fields = {'enterprise_customer_catalogs': <django.forms.models.ModelMultipleChoiceField object>}
property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.EnterpriseFeatureUserRoleAssignmentForm(*args, **kwargs)

Bases: edx_rbac.admin.forms.UserRoleAssignmentAdminForm

Form for EnterpriseFeatureUserRoleAssignments.

class Meta

Bases: object

fields = ['user', 'role']
model

alias of enterprise.models.EnterpriseFeatureUserRoleAssignment

base_fields = {'role': <django.forms.models.ModelChoiceField object>, 'user': <edx_rbac.fields.UserFromEmailField object>}
declared_fields = {'user': <edx_rbac.fields.UserFromEmailField object>}
property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.ManageLearnersDataSharingConsentForm(*args, **kwargs)

Bases: django.forms.forms.Form

Form to request DSC from a learner.

class Fields

Bases: object

Namespace class for field names.

COURSE = 'course'
EMAIL_OR_USERNAME = 'email_or_username'
base_fields = {'course': <django.forms.fields.CharField object>, 'email_or_username': <django.forms.fields.CharField object>}
clean_course()

Verify course ID has an associated course in LMS.

clean_email_or_username()

Verify email_or_username has associated user in our database.

declared_fields = {'course': <django.forms.fields.CharField object>, 'email_or_username': <django.forms.fields.CharField object>}
is_course_in_catalog(course_id)

Check whether course exists in enterprise customer catalog.

is_user_linked(email)

Check whether user is linked to the enterprise customer or not.

property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.ManageLearnersForm(*args, **kwargs)

Bases: django.forms.forms.Form

Form to manage learner additions.

class CsvColumns

Bases: object

Namespace class for CSV column names.

COURSE_ID = 'course_id'
EMAIL = 'email'
class Fields

Bases: object

Namespace class for field names.

BULK_UPLOAD = 'bulk_upload_csv'
COURSE = 'course'
COURSE_MODE = 'course_mode'
DISCOUNT = 'discount'
EMAIL_OR_USERNAME = 'email_or_username'
GENERAL_ERRORS = '__all__'
MODE = 'mode'
NOTIFY = 'notify_on_enrollment'
REASON = 'reason'
SALES_FORCE_ID = 'sales_force_id'
class Modes

Bases: object

Namespace class for form modes.

MODE_BULK = 'bulk'
MODE_SINGULAR = 'singular'
class NotificationTypes

Bases: object

Namespace class for notification types

BY_EMAIL = 'by_email'
DEFAULT = 'by_email'
NO_NOTIFICATION = 'do_not_notify'
base_fields = {'bulk_upload_csv': <django.forms.fields.FileField object>, 'course': <django.forms.fields.CharField object>, 'course_mode': <django.forms.fields.ChoiceField object>, 'discount': <django.forms.fields.DecimalField object>, 'email_or_username': <django.forms.fields.CharField object>, 'notify_on_enrollment': <django.forms.fields.ChoiceField object>, 'reason': <django.forms.fields.CharField object>, 'sales_force_id': <django.forms.fields.CharField object>}
clean()

Clean fields that depend on each other.

In this case, the form can be used to link single user or bulk link multiple users. These are mutually exclusive modes, so this method checks that only one field is passed.

clean_course()

Verify course ID and retrieve course details.

clean_discount()

Verify that discount value should be from 0 to 100.

clean_email_or_username()

Clean email form field

Returns

the cleaned value, converted to an email address (or an empty string)

Return type

str

clean_notify()

Clean the notify_on_enrollment field.

clean_reason()

Clean the reason for enrollment field

declared_fields = {'bulk_upload_csv': <django.forms.fields.FileField object>, 'course': <django.forms.fields.CharField object>, 'course_mode': <django.forms.fields.ChoiceField object>, 'discount': <django.forms.fields.DecimalField object>, 'email_or_username': <django.forms.fields.CharField object>, 'notify_on_enrollment': <django.forms.fields.ChoiceField object>, 'reason': <django.forms.fields.CharField object>, 'sales_force_id': <django.forms.fields.CharField object>}
property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.SystemWideEnterpriseUserRoleAssignmentForm(*args, **kwargs)

Bases: edx_rbac.admin.forms.UserRoleAssignmentAdminForm

Form for SystemWideEnterpriseUserRoleAssignments.

class Meta

Bases: object

fields = ['user', 'role', 'enterprise_customer', 'applies_to_all_contexts']
model

alias of enterprise.models.SystemWideEnterpriseUserRoleAssignment

base_fields = {'applies_to_all_contexts': <django.forms.fields.BooleanField object>, 'enterprise_customer': <django.forms.models.ModelChoiceField object>, 'role': <django.forms.models.ModelChoiceField object>, 'user': <edx_rbac.fields.UserFromEmailField object>}
declared_fields = {'user': <edx_rbac.fields.UserFromEmailField object>}
property media

Return all media required to render the widgets on this form.

class enterprise.admin.forms.TransmitEnterpriseCoursesForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)

Bases: django.forms.forms.Form

Form to transmit courses metadata for enterprise customers.

base_fields = {'channel_worker_username': <django.forms.fields.CharField object>}
clean_channel_worker_username()

Clean enterprise channel worker user form field

Returns

the cleaned value of channel user username for transmitting courses metadata.

Return type

str

declared_fields = {'channel_worker_username': <django.forms.fields.CharField object>}
property media

Return all media required to render the widgets on this form.

enterprise.admin.paginator module

Custom paginator to implement smart pagination.

class enterprise.admin.paginator.CustomPaginator(object_list, per_page, orphans=0, allow_empty_first_page=True)

Bases: django.core.paginator.Paginator

Adopted from django/core/paginator so as to implement smart links pagination in custom views.

property page_range

We have customized the getter so that it can return the value of the page_range property instead of always calculating the result.

enterprise.admin.utils module

Admin utilities.

class enterprise.admin.utils.UrlNames

Bases: object

Collection on URL names used in admin

MANAGE_LEARNERS = 'enterprise_manage_learners'
MANAGE_LEARNERS_DSC = 'enterprise_manage_learners_data_sharing_consent'
PREVIEW_EMAIL_TEMPLATE = 'enterprise_preview_email_template'
TRANSMIT_COURSES_METADATA = 'enterprise_transmit_courses_metadata'
URL_PREFIX = 'enterprise_'
enterprise.admin.utils.email_or_username__to__email(email_or_username)

Convert email_or_username to email.

Returns

If email_or_username was a username returns user’s email, otherwise assumes it was an email and returns

as is.

Return type

str

enterprise.admin.utils.paginated_list(object_list, page, page_size=25)

Returns paginated list.

Parameters
  • object_list (QuerySet) – A list of records to be paginated.

  • page (int) – Current page number.

  • page_size (int) – Number of records displayed in each paginated set.

  • show_all (bool) – Whether to show all records.

Adopted from django/contrib/admin/templatetags/admin_list.py https://github.com/django/django/blob/1.11.1/django/contrib/admin/templatetags/admin_list.py#L50

enterprise.admin.utils.parse_csv(file_stream, expected_columns=None)

Parse csv file and return a stream of dictionaries representing each row.

First line of CSV file must contain column headers.

Parameters
  • file_stream – input file

  • expected_columns (set[unicode]) – columns that are expected to be present

Yields

dict – CSV line parsed into a dictionary.

enterprise.admin.utils.split_usernames_and_emails(email_field)

Split the contents of the email field into a list.

In some cases, a user could enter a comma-separated value inline in the Manage Learners form. We should check to see if that’s the case, and provide a list of email addresses or usernames if it is.

enterprise.admin.utils.validate_csv(file_stream, expected_columns=None)

Validate csv file for encoding and expected header.

Parameters
  • file_stream – input file

  • expected_columns – list of column names that are expected to be present in csv

Returns

an iterable for csv datat if csv passes the validation

Return type

reader

Raises

ValidationError

enterprise.admin.views module

Custom Django Admin views used in enterprise app.

class enterprise.admin.views.BaseEnterpriseCustomerView(**kwargs)

Bases: django.views.generic.base.View

Base class for Enterprise Customer views.

get_form_view(request, customer_uuid, additional_context=None)

render the form with appropriate context.

template = None
class enterprise.admin.views.EnterpriseCustomerManageLearnerDataSharingConsentView(**kwargs)

Bases: enterprise.admin.views.BaseEnterpriseCustomerView

Manage Learners Data Sharing Consent View.

Allows to request the DSC from a learner for a specific course.

class ContextParameters

Bases: object

Namespace-style class for custom context parameters.

ENTERPRISE_CUSTOMER = 'enterprise_customer'
MANAGE_LEARNERS_DSC_FORM = 'manage_learners_data_sharing_consent_form'
get(request, customer_uuid)

Handle GET request - render “Request a DSC from Learner” form.

Parameters
  • request (django.http.request.HttpRequest) – Request instance

  • customer_uuid (str) – Enterprise Customer UUID

Returns

HttpResponse

Return type

django.http.response.HttpResponse

post(request, customer_uuid)

Handle POST request - handle form submissions.

Parameters
  • request (django.http.request.HttpRequest) – Request instance

  • customer_uuid (str) – Enterprise Customer UUID

template = 'enterprise/admin/clear_learners_data_sharing_consent.html'
class enterprise.admin.views.EnterpriseCustomerManageLearnersView(**kwargs)

Bases: enterprise.admin.views.BaseEnterpriseCustomerView

Manage Learners view.

Lists learners linked to chosen Enterprise Customer and allows adding and deleting them.

class ContextParameters

Bases: object

Namespace-style class for custom context parameters.

ENROLLMENT_URL = 'ENROLLMENT_API_ROOT_URL'
ENTERPRISE_CUSTOMER = 'enterprise_customer'
LEARNERS = 'learners'
MANAGE_LEARNERS_FORM = 'manage_learners_form'
PENDING_LEARNERS = 'pending_learners'
SEARCH_KEYWORD = 'search_keyword'
delete(request, customer_uuid)

Handle DELETE request - handle unlinking learner.

Parameters
  • request (django.http.request.HttpRequest) – Request instance

  • customer_uuid (str) – Enterprise Customer UUID

Returns

HttpResponse

Return type

django.http.response.HttpResponse

get(request, customer_uuid)

Handle GET request - render linked learners list and “Link learner” form.

Parameters
  • request (django.http.request.HttpRequest) – Request instance

  • customer_uuid (str) – Enterprise Customer UUID

Returns

HttpResponse

Return type

django.http.response.HttpResponse

get_enterprise_customer_user_queryset(request, search_keyword, customer_uuid, page_size=25)

Get the list of EnterpriseCustomerUsers we want to render.

Parameters
  • request (HttpRequest) – HTTP Request instance.

  • search_keyword (str) – The keyword to search for in users’ email addresses and usernames.

  • customer_uuid (str) – A unique identifier to filter down to only users linked to a

  • EnterpriseCustomer. (particular) –

  • page_size (int) – Number of learners displayed in each paginated set.

classmethod get_failed_enrollment_message(users, enrolled_in)

Create message for the users who were not able to be enrolled in a course.

Parameters
  • users – An iterable of users who were not successfully enrolled

  • enrolled_in (str) – A string identifier for the course with which enrollment was attempted

Returns: tuple: A 2-tuple containing a message type and message text

classmethod get_pending_enrollment_message(pending_users, enrolled_in)

Create message for the users who were enrolled in a course.

Parameters
  • users – An iterable of PendingEnterpriseCustomerUsers who were successfully linked with a pending enrollment

  • enrolled_in (str) – A string identifier for the course the pending users were linked to

Returns

A 2-tuple containing a message type and message text

Return type

tuple

get_pending_users_queryset(search_keyword, customer_uuid)

Get the list of PendingEnterpriseCustomerUsers we want to render.

Parameters
  • search_keyword (str) – The keyword to search for in pending users’ email addresses.

  • customer_uuid (str) – A unique identifier to filter down to only pending users

  • EnterpriseCustomer. (linked to a particular) –

get_search_keyword(request)

Retrieve the search querystring from the GET parameters.

classmethod get_success_enrollment_message(users, enrolled_in)

Create message for the users who were enrolled in a course.

Parameters
  • users – An iterable of users who were successfully enrolled

  • enrolled_in (str) – A string identifier for the course the users were enrolled in

Returns

A 2-tuple containing a message type and message text

Return type

tuple

post(request, customer_uuid)

Handle POST request - handle form submissions.

Parameters
  • request (django.http.request.HttpRequest) – Request instance

  • customer_uuid (str) – Enterprise Customer UUID

Returns

HttpResponse

Return type

django.http.response.HttpResponse

classmethod send_messages(http_request, message_requests)

Deduplicate any outgoing message requests, and send the remainder.

Parameters
  • http_request – The HTTP request in whose response we want to embed the messages

  • message_requests – A list of undeduplicated messages in the form of tuples of message type and text- for example, (‘error’, ‘Something went wrong’)

template = 'enterprise/admin/manage_learners.html'
class enterprise.admin.views.EnterpriseCustomerTransmitCoursesView(**kwargs)

Bases: enterprise.admin.views.BaseEnterpriseCustomerView

Transmit courses view.

Allows transmitting of courses metadata for provided enterprise.

class ContextParameters

Bases: object

Namespace-style class for custom context parameters.

ENTERPRISE_CUSTOMER = 'enterprise_customer'
TRANSMIT_COURSES_METADATA_FORM = 'transmit_courses_metadata_form'
get(request, customer_uuid)

Handle GET request - render “Transmit courses metadata” form.

Parameters
  • request (django.http.request.HttpRequest) – Request instance

  • customer_uuid (str) – Enterprise Customer UUID

Returns

HttpResponse

Return type

django.http.response.HttpResponse

post(request, customer_uuid)

Handle POST request - handle form submissions.

Parameters
  • request (django.http.request.HttpRequest) – Request instance

  • customer_uuid (str) – Enterprise Customer UUID

template = 'enterprise/admin/transmit_courses_metadata.html'
class enterprise.admin.views.TemplatePreviewView(**kwargs)

Bases: django.views.generic.base.View

Renders a given NotificationTemplate object to HTML for online viewing.

get(request, template_id, view_type)

Render the given template with the stock data.

static get_user_name(request)

Get a human-readable name for the user.

view_type_contexts = {'course': {'enrolled_in': {'name': 'OpenEdX Demo Course', 'start': datetime.datetime(2016, 1, 1, 0, 0), 'type': 'course', 'url': 'http://example.com/courses/edx-demo-course'}, 'organization_name': 'OpenEdX'}, 'program': {'enrolled_in': {'branding': 'MicroMasters', 'name': 'OpenEdX Demo Program', 'start': datetime.datetime(2016, 1, 1, 0, 0), 'type': 'program', 'url': 'http://example.com/programs/edx-demo-program'}, 'organization_name': 'OpenEdX'}}

enterprise.admin.widgets module

Widgets to be used in the enterprise djangoapp.

class enterprise.admin.widgets.SubmitInput(attrs=None)

Bases: django.forms.widgets.Input

Widget for input type field

input_type = 'submit'
property media
template_name = 'django/forms/widgets/text.html'

Module contents

Django admin integration for enterprise app.

class enterprise.admin.AdminNotificationAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin for AdminNotification model.

filter_horizontal = ('admin_notification_filter',)
form

alias of enterprise.admin.forms.AdminNotificationForm

list_display = ('id', 'title', 'text', 'is_active', 'start_date', 'expiration_date', 'created', 'modified')
property media
model

alias of enterprise.models.AdminNotification

class enterprise.admin.AdminNotificationFilterAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin for AdminNotificationFilter model.

list_display = ('id', 'filter', 'created', 'modified')
property media
model

alias of enterprise.models.AdminNotificationFilter

class enterprise.admin.AdminNotificationReadAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin for AdminNotificationRead model.

list_display = ('id', 'enterprise_customer_user', 'admin_notification', 'is_read', 'created', 'modified')
property media
model

alias of enterprise.models.AdminNotificationRead

class enterprise.admin.BigTableMysqlPaginator(object_list, per_page, orphans=0, allow_empty_first_page=True)

Bases: django.core.paginator.Paginator

A paginator that uses INFORMATION_SCHEMA.TABLES to estimate the total number of rows in a table.

ARBITRARILY_LARGE_NUMBER = 10000000
property count

Returns the number of items in the object list (possibly an estimate).

class enterprise.admin.EnrollmentNotificationEmailTemplateAdmin(model, admin_site)

Bases: django_object_actions.utils.DjangoObjectActions, django.contrib.admin.options.ModelAdmin

Django admin for EnrollmentNotificationEmailTemplate model

class Meta

Bases: object

model

alias of enterprise.models.EnrollmentNotificationEmailTemplate

change_actions = ('preview_as_course', 'preview_as_program')
get_urls()

Returns the additional urls used by the custom object tools.

property media
preview(obj, preview_type)

Object tool handler method - redirects to “Preview” view

preview_as_course(request, obj)

Redirect to preview the HTML template in the context of a course.

preview_as_program(request, obj)

Redirect to preview the HTML template in the context of a program.

class enterprise.admin.EnterpriseCatalogQueryAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for EnterpriseCatalogQuery.

class Meta

Bases: object

model

alias of enterprise.models.EnterpriseCatalogQuery

discovery_query_url(obj)

Return discovery url for preview.

has_delete_permission(request, obj=None)

Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.

Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.

list_display = ('title', 'discovery_query_url')
property media
readonly_fields = ('discovery_query_url', 'uuid')
class enterprise.admin.EnterpriseCourseEnrollmentAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for EnterpriseCourseEnrollment

class Meta

Bases: object

model

alias of enterprise.models.EnterpriseCourseEnrollment

change_list_template = 'enterprise/admin/enterprise_course_enrollments_list.html'
changelist_view(request, extra_context=None)

Override to conditionally show the button.

get_urls()

Append Enrollment Attribute Override view url with default urls

has_add_permission(request)

Disable add permission for EnterpriseCourseEnrollment.

has_delete_permission(request, obj=None)

Disable deletion for EnterpriseCourseEnrollment.

license_uuid(obj)

Return the subscription license UUID (if any exists) associated with this enrollment.

list_display = ('enterprise_customer_user', 'course_id', 'saved_for_later')
property media
readonly_fields = ('enterprise_customer_user', 'course_id', 'saved_for_later', 'license_uuid')
search_fields = ('enterprise_customer_user__user_id', 'course_id')
class enterprise.admin.EnterpriseCustomerAdmin(model, admin_site)

Bases: django_object_actions.utils.DjangoObjectActions, simple_history.admin.SimpleHistoryAdmin

Django admin model for EnterpriseCustomer.

EXPORT_AS_CSV_FIELDS = ['name', 'active', 'site', 'uuid', 'identity_provider']
class Meta

Bases: object

model

alias of enterprise.models.EnterpriseCustomer

actions = [<function export_as_csv_action.<locals>.export_as_csv>]
change_actions = ('manage_learners', 'manage_learners_data_sharing_consent', 'transmit_courses_metadata')
change_view(request, object_id, form_url='', extra_context=None)
enable_dsc(instance)

Return True if data sharing consent is enabled for EnterpriseCustomer.

Parameters

instance (enterprise.models.EnterpriseCustomer) – EnterpriseCustomer model instance

form

alias of enterprise.admin.forms.EnterpriseCustomerAdminForm

get_form(request, obj=None, change=False, **kwargs)

Retrieve the appropriate form to use, saving the request user into the form for use in loading catalog details

get_search_results(request, queryset, search_term)

Return a tuple containing a queryset to implement the search and a boolean indicating if the results may contain duplicates.

get_urls()

Returns the additional urls used by the custom object tools.

has_identity_provider(instance)

Return True if EnterpriseCustomer has related identity provider.

Parameters

instance (enterprise.models.EnterpriseCustomer) – EnterpriseCustomer model instance

Return True if EnterpriseCustomer has a logo.

Parameters

instance (enterprise.models.EnterpriseCustomer) – EnterpriseCustomer model instance

inlines = [<class 'enterprise.admin.EnterpriseCustomerBrandingConfigurationInline'>, <class 'enterprise.admin.EnterpriseCustomerIdentityProviderInline'>, <class 'enterprise.admin.EnterpriseCustomerCatalogInline'>, <class 'enterprise.admin.PendingEnterpriseCustomerAdminUserInline'>]
list_display = ('name', 'slug', 'customer_type', 'site', 'country', 'active', 'has_logo', 'enable_dsc', 'has_identity_provider', 'uuid')
list_filter = ('active',)
manage_learners(request, obj)

Object tool handler method - redirects to “Manage Learners” view

Object tool handler method - redirects to “Clear Learners Data Sharing Consent” view

property media
ordering = ('name',)
search_fields = ('name', 'uuid')
transmit_courses_metadata(request, obj)

Object tool handler method - redirects to Transmit Courses Metadata view.

class enterprise.admin.EnterpriseCustomerBrandingConfigurationInline(parent_model, admin_site)

Bases: django.contrib.admin.options.StackedInline

Django admin model for EnterpriseCustomerBrandingConfiguration.

The admin interface has the ability to edit models on the same page as a parent model. These are called inlines. https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.StackedInline

can_delete = False
property media
model

alias of enterprise.models.EnterpriseCustomerBrandingConfiguration

class enterprise.admin.EnterpriseCustomerCatalogAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for EnterpriseCustomerCatalog.

class Media

Bases: object

js = ('enterprise/admin/enterprise_customer_catalog.js',)
class Meta

Bases: object

model

alias of enterprise.models.EnterpriseCustomerCatalog

actions = [<function refresh_catalog>]
fields = ('title', 'enterprise_customer', 'enterprise_catalog_query', 'content_filter', 'enabled_course_modes', 'publish_audit_enrollment_urls')
get_actions(request)

Disallow the delete selected action as that does not send a DELETE request to enterprise-catalog

get_form(request, obj=None, change=False, **kwargs)

Return a Form class for use in the admin add view. This is used by add_view and change_view.

list_display = ('uuid_nowrap', 'enterprise_customer', 'title', 'preview_catalog_url')
property media
ordering = ('enterprise_customer__name', 'title')
preview_catalog_url(obj)

Return enterprise catalog url for preview.

readonly_fields = ('preview_catalog_url',)
search_fields = ('uuid', 'title', 'enterprise_customer__name', 'enterprise_customer__uuid')
uuid_nowrap(obj)

Inject html for disabling wrap for uuid

class enterprise.admin.EnterpriseCustomerCatalogInline(parent_model, admin_site)

Bases: django.contrib.admin.options.TabularInline

Django admin model for EnterpriseCustomerCatalog. The admin interface has the ability to edit models on the same page as a parent model. These are called inlines. https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.StackedInline

can_delete = False
extra = 0
form

alias of enterprise.admin.forms.EnterpriseCustomerCatalogAdminForm

get_formset(request, obj=None, **kwargs)

Return a BaseInlineFormSet class for use in admin add/change views.

property media
model

alias of enterprise.models.EnterpriseCustomerCatalog

class enterprise.admin.EnterpriseCustomerIdentityProviderInline(parent_model, admin_site)

Bases: django.contrib.admin.options.StackedInline

Django admin model for EnterpriseCustomerIdentityProvider.

The admin interface has the ability to edit models on the same page as a parent model. These are called inlines. https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.StackedInline

extra = 0
form

alias of enterprise.admin.forms.EnterpriseCustomerIdentityProviderAdminForm

property media
model

alias of enterprise.models.EnterpriseCustomerIdentityProvider

class enterprise.admin.EnterpriseCustomerInviteKeyAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for EnterpriseCustomerInviteKey.

class Meta

Bases: object

model

alias of enterprise.models.EnterpriseCustomerInviteKey

fields = ('enterprise_customer', 'usage_count', 'usage_limit', 'expiration_date', 'is_active')
get_readonly_fields(request, obj=None)

Hook for specifying custom readonly fields.

list_display = ('uuid', 'enterprise_customer_id', 'usage_limit', 'expiration_date', 'is_active')
list_filter = ('is_active',)
property media
readonly_fields = ('uuid', 'usage_count')
search_fields = ('uuid__startswith', 'enterprise_customer__name__startswith')
class enterprise.admin.EnterpriseCustomerReportingConfigurationAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for EnterpriseCustomerReportingConfiguration.

class Meta

Bases: object

model

alias of enterprise.models.EnterpriseCustomerReportingConfiguration

autocomplete_fields = ['enterprise_customer']
form

alias of enterprise.admin.forms.EnterpriseCustomerReportingConfigAdminForm

get_fields(request, obj=None)

Return the fields that should be displayed on the admin form.

list_display = ('enterprise_customer', 'active', 'delivery_method', 'frequency', 'data_type', 'report_type')
list_filter = ('active',)
property media
ordering = ('enterprise_customer__name',)
search_fields = ('enterprise_customer__name', 'email')
class enterprise.admin.EnterpriseCustomerTypeAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for EnterpriseCustomerType.

class Meta

Bases: object

model

alias of enterprise.models.EnterpriseCustomerType

fields = ('name',)
list_display = ('name',)
property media
search_fields = ('name',)
class enterprise.admin.EnterpriseCustomerUserAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for EnterpriseCustomerUser.

class Meta

Bases: object

model

alias of enterprise.models.EnterpriseCustomerUser

enterprise_enrollments(enterprise_customer_user)

Return a string representing a given EnterpriseCustomerUser’s enterprise course enrollments

Parameters

enterprise_customer_user – The instance of EnterpriseCustomerUser being rendered with this admin form.

fields = ('user_id', 'enterprise_customer', 'user_email', 'username', 'created', 'enterprise_enrollments', 'other_enrollments', 'invite_key', 'active', 'should_inactivate_other_customers')
get_enrolled_course_string(course_ids)

Get an HTML string representing the courses the user is enrolled in.

get_enterprise_customer(obj)

Returns the name of enterprise customer linked with the enterprise customer user.

get_readonly_fields(request, obj=None)

Make all fields readonly when editing existing model.

get_search_results(request, queryset, search_term)

Return a tuple containing a queryset to implement the search and a boolean indicating if the results may contain duplicates.

list_display = ('username', 'user_email', 'get_enterprise_customer')
property media
other_enrollments(enterprise_customer_user)

Return a string representing a given EnterpriseCustomerUser’s non-enterprise course enrollments

Parameters

enterprise_customer_user – The instance of EnterpriseCustomerUser being rendered with this admin form.

readonly_fields = ('user_email', 'username', 'created', 'enterprise_enrollments', 'other_enrollments')
search_fields = ('user_id',)
class enterprise.admin.EnterpriseFeatureUserRoleAssignmentAdmin(model, admin_site)

Bases: edx_rbac.admin.UserRoleAssignmentAdmin

Django admin model for EnterpriseFeatureUserRoleAssignment.

class Meta

Bases: object

model

alias of enterprise.models.EnterpriseFeatureUserRoleAssignment

form

alias of enterprise.admin.forms.EnterpriseFeatureUserRoleAssignmentForm

property media
class enterprise.admin.PendingEnrollmentAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for PendingEnrollment

class Meta

Bases: object

model

alias of enterprise.models.PendingEnrollment

has_add_permission(request)

Disable add permission for PendingEnrollment.

has_delete_permission(request, obj=None)

Disable deletion for PendingEnrollment.

list_display = ('user', 'course_id', 'course_mode')
property media
readonly_fields = ('user', 'course_id', 'course_mode')
search_fields = ('user__user_email', 'course_id')
class enterprise.admin.PendingEnterpriseCustomerAdminUserAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for PendingEnterpriseCustomerAdminUser

class Meta

Bases: object

model

alias of enterprise.models.PendingEnterpriseCustomerAdminUser

fields = ('user_email', 'enterprise_customer', 'get_admin_registration_url')
get_admin_registration_url(obj)

Formats the admin_registration_url model property as an HTML link.

get_enterprise_customer(obj)

Returns the name of the associated EnterpriseCustomer.

list_display = ('user_email', 'get_enterprise_customer', 'get_admin_registration_url')
property media
readonly_fields = ('get_admin_registration_url',)
search_fields = ('user_email', 'enterprise_customer__name')
class enterprise.admin.PendingEnterpriseCustomerAdminUserInline(parent_model, admin_site)

Bases: django.contrib.admin.options.TabularInline

Django admin inline model for PendingEnterpriseCustomerAdminUser.

extra = 0
fieldsets = ((None, {'fields': ('user_email', 'get_admin_registration_url')}),)
get_admin_registration_url(obj)

Formats the admin_registration_url model property as an HTML link.

property media
model

alias of enterprise.models.PendingEnterpriseCustomerAdminUser

readonly_fields = ('get_admin_registration_url',)
class enterprise.admin.PendingEnterpriseCustomerUserAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Django admin model for PendingEnterpriseCustomerUser

class Meta

Bases: object

model

alias of enterprise.models.PendingEnterpriseCustomerUser

fields = ('user_email', 'enterprise_customer', 'created')
property media
readonly_fields = ('user_email', 'enterprise_customer', 'created')
class enterprise.admin.SystemWideEnterpriseUserRoleAssignmentAdmin(model, admin_site)

Bases: edx_rbac.admin.UserRoleAssignmentAdmin

Django admin model for SystemWideEnterpriseUserRoleAssignment.

class Meta

Bases: object

model

alias of enterprise.models.SystemWideEnterpriseUserRoleAssignment

effective_enterprise_customer(instance)

Return the comma separated names of all enterprise customers attached to the user.

Parameters

instance (SystemWideEnterpriseUserRoleAssignment) – model instance

fields = ('user', 'role', 'enterprise_customer', 'applies_to_all_contexts', 'effective_enterprise_customer')
form

alias of enterprise.admin.forms.SystemWideEnterpriseUserRoleAssignmentForm

get_form(request, obj=None, **kwargs)

Adds help text to the callable-defined effective_enterprise_customer field.

list_display = ('user', 'role', 'enterprise_customer', 'applies_to_all_contexts')
list_per_page = 25
property media
paginator

alias of enterprise.admin.BigTableMysqlPaginator

readonly_fields = ('effective_enterprise_customer',)
search_fields = ('user__email', 'role__name', 'enterprise_customer__name')
show_full_result_count = False