Devices¶
This module is used to manage information related to LNL’s managed devices (i.e. Laptops).
Models¶
-
class
devices.models.
ConfigurationProfile
(*args, **kwargs)[source]¶ This class defines metadata for a given macOS configuration profile. The core profile data is stored in a separate JSON file.
Parameters: - id (AutoField) – Id (required)
- name (CharField) – Name (required)
- profile (FilePathField) – Profile (required)
- scope (CharField) – Scope (default=System)
- created_on (DateTimeField) – Created on (required)
- last_modified (DateTimeField) – Last modified (required)
- pending_install (ManyToManyField to
Laptop
) – Pending install (required) - installed (ManyToManyField to
Laptop
) – Installed (required)
-
exception
DoesNotExist
¶
-
exception
MultipleObjectsReturned
¶
-
created_on
¶ DateTimeField(auto_now_add=True)
-
get_next_by_created_on
(*, field=<django.db.models.fields.DateTimeField: created_on>, is_next=True, **kwargs)¶
-
get_next_by_last_modified
(*, field=<django.db.models.fields.DateTimeField: last_modified>, is_next=True, **kwargs)¶
-
get_previous_by_created_on
(*, field=<django.db.models.fields.DateTimeField: created_on>, is_next=False, **kwargs)¶
-
get_previous_by_last_modified
(*, field=<django.db.models.fields.DateTimeField: last_modified>, is_next=False, **kwargs)¶
-
get_scope_display
(*, field=<django.db.models.fields.CharField: scope>)¶
-
id
¶ AutoField(verbose_name=”ID”, primary_key=True, serialize=False, auto_created=True)
-
last_modified
¶ DateTimeField(auto_now=True)
-
name
¶ CharField(max_length=100)
-
objects
= <django.db.models.manager.Manager object>¶
-
pending_install
¶ Reverse Manager for devices.ConfigurationProfile’s
pending_install
-
profile
¶ FilePathField(path=”/home/docs/checkouts/readthedocs.org/user_builds/lnldb/checkouts/latest/runtime/media/profiles”, match=”.*.json$”)
-
scope
¶ CharField(max_length=6, default=”System”, choices=[(‘System’, ‘System’), (‘User’, ‘User’)])
-
class
devices.models.
InstallationRecord
(*args, **kwargs)[source]¶ Used to log when managed resources were last installed on a device
Parameters: - id (AutoField) – Id (required)
- profile (ForeignKey to
ConfigurationProfile
) – Profile - app (ForeignKey to
MacOSApp
) – App - device (ForeignKey to
Laptop
) – Device (required) - version (CharField) – Version
- installed_on (DateTimeField) – Installed on (required)
- expires (DateTimeField) – Expires
- active (BooleanField) – Active (default=True)
-
exception
DoesNotExist
¶
-
exception
MultipleObjectsReturned
¶
-
active
¶ BooleanField(default=True)
-
app
¶ ForeignKey(blank=True, null=True, related_name=”install_records”, on_delete=CASCADE(), to=
MacOSApp
)
-
expires
¶ DateTimeField(blank=True, null=True)
-
get_next_by_installed_on
(*, field=<django.db.models.fields.DateTimeField: installed_on>, is_next=True, **kwargs)¶
-
get_previous_by_installed_on
(*, field=<django.db.models.fields.DateTimeField: installed_on>, is_next=False, **kwargs)¶
-
id
¶ AutoField(verbose_name=”ID”, primary_key=True, serialize=False, auto_created=True)
-
installed_on
¶ DateTimeField(auto_now_add=True)
-
objects
= <django.db.models.manager.Manager object>¶
-
profile
¶ ForeignKey(blank=True, null=True, related_name=”install_records”, on_delete=CASCADE(), to=
ConfigurationProfile
)
-
version
¶ CharField(max_length=36, blank=True, null=True)
-
class
devices.models.
Laptop
(*args, **kwargs)[source]¶ Represents one of LNL’s laptops
Parameters: - id (AutoField) – Id (required)
- name (CharField) – Name (required)
- description (TextField) – Description (required)
- serial (CharField) – Serial
- asset_tag (CharField) – Asset tag
- api_key_hash (CharField) – SHA-256 hash of the API key that the laptop uses to communicate with the database (required)
- user_password (CharField) – User password (required)
- admin_password (CharField) – Admin password (required)
- last_checkin (DateTimeField) – Last checkin
- last_ip (CharField) – Last network ip address
- mdm_enrolled (BooleanField) – Enrolled in mdm (default=False)
- retired (BooleanField) – Retired (default=False)
-
exception
DoesNotExist
¶
-
exception
MultipleObjectsReturned
¶
-
admin_password
¶ CharField(max_length=64)
-
api_key_hash
¶ CharField(verbose_name=”API key hash”, max_length=64, db_index=True, help_text=”SHA-256 hash of the API key that the laptop uses to communicate with the database”)
Api key hash: SHA-256 hash of the API key that the laptop uses to communicate with the database
-
apps_pending
¶ Reverse Manager for devices.MacOSApp’s
pending_install
-
apps_remove
¶ Reverse Manager for devices.MacOSApp’s
pending_removal
-
asset_tag
¶ CharField(max_length=25, blank=True, null=True)
-
description
¶ TextField(blank=True)
-
id
¶ AutoField(verbose_name=”ID”, primary_key=True, serialize=False, auto_created=True)
-
last_checkin
¶ DateTimeField(blank=True, null=True)
-
last_ip
¶ CharField(verbose_name=”Last Network IP Address”, max_length=15, blank=True, null=True)
-
mdm_enrolled
¶ BooleanField(verbose_name=”Enrolled in MDM”, default=False)
-
name
¶ CharField(max_length=20)
-
objects
= <django.db.models.manager.Manager object>¶
-
pending
¶ Reverse Manager for devices.ConfigurationProfile’s
pending_install
-
retired
¶ BooleanField(default=False)
-
serial
¶ CharField(max_length=12, blank=True, null=True)
-
user_password
¶ CharField(max_length=64)
-
class
devices.models.
LaptopPasswordRetrieval
(*args, **kwargs)[source]¶ Used to keep track of when users access the laptop passwords
Parameters: -
exception
DoesNotExist
¶
-
exception
MultipleObjectsReturned
¶
-
admin
¶ BooleanField()
-
get_next_by_timestamp
(*, field=<django.db.models.fields.DateTimeField: timestamp>, is_next=True, **kwargs)¶
-
get_previous_by_timestamp
(*, field=<django.db.models.fields.DateTimeField: timestamp>, is_next=False, **kwargs)¶
-
id
¶ AutoField(verbose_name=”ID”, primary_key=True, serialize=False, auto_created=True)
-
objects
= <django.db.models.manager.Manager object>¶
-
timestamp
¶ DateTimeField(auto_now_add=True)
-
exception
-
class
devices.models.
LaptopPasswordRotation
(*args, **kwargs)[source]¶ Used to keep track of when passwords are rotated on LNL’s MacBooks
Parameters: - id (AutoField) – Id (required)
- timestamp (DateTimeField) – Timestamp (required)
- laptop (ForeignKey to
Laptop
) – Laptop (required)
-
exception
DoesNotExist
¶
-
exception
MultipleObjectsReturned
¶
-
get_next_by_timestamp
(*, field=<django.db.models.fields.DateTimeField: timestamp>, is_next=True, **kwargs)¶
-
get_previous_by_timestamp
(*, field=<django.db.models.fields.DateTimeField: timestamp>, is_next=False, **kwargs)¶
-
id
¶ AutoField(verbose_name=”ID”, primary_key=True, serialize=False, auto_created=True)
-
objects
= <django.db.models.manager.Manager object>¶
-
timestamp
¶ DateTimeField(auto_now_add=True)
-
class
devices.models.
MacOSApp
(*args, **kwargs)[source]¶ Used to keep track of managed applications for LNL’s MacBooks
Parameters: - id (AutoField) – Id (required)
- name (CharField) – Name (required)
- identifier (CharField) – Homebrew Identifier
- version (CharField) – Version
- description (TextField) – Description
- developer (CharField) – Developer
- developer_website (URLField) – Developer website
- requires_license (BooleanField) – Requires license (default=False)
- managed (BooleanField) – Available in msc (default=False)
- merged_into (ForeignKey to
MacOSApp
) – Mergedapps - pending_install (ManyToManyField to
Laptop
) – Pending install (required) - pending_removal (ManyToManyField to
Laptop
) – Pending removal (required) - installed (ManyToManyField to
Laptop
) – Installed (required)
-
exception
DoesNotExist
¶
-
exception
MultipleObjectsReturned
¶
-
description
¶ TextField(blank=True, null=True)
-
developer
¶ CharField(max_length=64, blank=True, null=True)
-
developer_website
¶ CharField(blank=True, null=True)
-
id
¶ AutoField(verbose_name=”ID”, primary_key=True, serialize=False, auto_created=True)
-
identifier
¶ CharField(max_length=64, blank=True, null=True, help_text=”Homebrew Identifier”)
Identifier: Homebrew Identifier
-
macosapp_set
¶ Reverse Manager for devices.MacOSApp’s
merged_into
-
managed
¶ BooleanField(verbose_name=”Available in MSC”, default=False)
-
merged_into
¶ ForeignKey(verbose_name=”mergedapps”, blank=True, null=True, on_delete=SET_NULL(), to=
MacOSApp
)
-
merged_into_id
¶ Raw (integer) FK for
merged_into
-
name
¶ CharField(max_length=128)
-
objects
= <django.db.models.manager.Manager object>¶
-
pending_install
¶ Reverse Manager for devices.MacOSApp’s
pending_install
-
pending_removal
¶ Reverse Manager for devices.MacOSApp’s
pending_removal
-
requires_license
¶ BooleanField(default=False)
-
version
¶ CharField(max_length=36, blank=True, null=True)
Views¶
-
devices.views.
add_app
(request)[source]¶ Administrators can use this page to add new managed applications. Non-admin users will have the option to request new software. Requests from non-admins will trigger a notification for the Webmaster.
-
devices.views.
complete_enrollment
(request, pk)[source]¶ Launched once the installation process is completed on a new device. Prompts the user for additional administrative details such as the asset tag number to complete the enrollment process.
Parameters: pk – Primary key of device
-
devices.views.
dock_app_list
(data)[source]¶ Used in generating macOS configuration profiles. Generates a dictionary with details about applications that should be added to the Dock.
Parameters: data – Form data (Dictionary) Returns: Dictionary - {‘name’: <string>, ‘path’: <string>}
-
devices.views.
fw_app_list
(data)[source]¶ Used in generating macOS configuration profiles. Generates a dictionary used in configuring Firewall settings.
Parameters: data – Form data (Dictionary) Returns: Dictionary - {‘bundle_id’: <string>, ‘allowed’: <boolean>}
-
devices.views.
generate_ids
()[source]¶ Generates UUIDs for each of the profile’s payloads.
Returns: Dictionary of payload identifiers
-
devices.views.
generate_profile
(request, pk=0)[source]¶ Create or edit a macOS configuration profile
Parameters: pk – Primary key of configuration profile (Optional)
-
devices.views.
get_payloads
(data)[source]¶ Generates a dictionary which specifies which payloads are active in a given profile and what their current version numbers are.
Parameters: data – Form data (Dictionary) Returns: Dictionary of payload versions
-
devices.views.
get_profile_metadata
(config, timestamp)[source]¶ Retrieve additional metadata from profile data
Parameters: - config – Configuration Profile object
- timestamp – Timestamp at time of install
Returns: Dictionary with profile metadata - {‘expires’: <datetime>, ‘version’: <string>}
-
devices.views.
handle_expired_profiles
()[source]¶ Checks for expired profiles and updates listings accordingly
-
devices.views.
install_client
(request)[source]¶ Displays an agreement that the user must agree to before they can download the MDM Client installer
-
devices.views.
install_confirmation
(request)[source]¶ Endpoint for accepting receipt of install. Managed devices should contact this endpoint anytime new resources are installed.
Returns: JSON - {‘status’: 200}
-
devices.views.
laptop_admin_password
(request, id)[source]¶ Retrieve the admin password for one of the laptops
Parameters: id – Primary key of laptop
-
devices.views.
laptop_history
(request, id)[source]¶ View a history of password retrievals and rotations for a given laptop
Parameters: id – Primary key of laptop
-
devices.views.
laptop_user_password
(request, id)[source]¶ Retrieve the LNL user password for one of the laptops
Parameters: id – Primary key of laptop
-
devices.views.
link_apps
(request, device=None, app=None)[source]¶ Assign managed apps to a device. If a primary key value for device is supplied, a list of managed applications will be displayed. The user can then select which applications to assign to the respective device. The opposite is true when a primary key value is supplied for app.
Parameters: - device – Primary key of device (Optional)
- app – Primary key of managed application (Optional)
-
devices.views.
link_profiles
(request, device=None, profile=None)[source]¶ Assign configuration profiles to a device. If a primary key value for device is supplied, a list of profiles will be displayed. The user can then select which profiles to assign to the respective device. The opposite is true when a primary key value is supplied for profile.
Parameters: - device – Primary key of device (Optional)
- profile – Primary key of configuration profile (Optional)
-
devices.views.
list_app_devices
(request, pk)[source]¶ List all devices linked to a specific app
Parameters: pk – Primary key of managed application
-
devices.views.
list_apps
(request, pk=0)[source]¶ If a value is provided for pk, this will list all the managed applications assigned to the respective device. Otherwise this will list all the managed apps under the MDM.
Parameters: pk – Primary key of device (Optional)
-
devices.views.
list_profiles
(request, pk=0)[source]¶ When given a pk value, this view will list all the configuration profiles for a given device. When pk is not supplied, the view will list all the profiles in the MDM.
Parameters: pk – Primary key of device (Optional)
-
devices.views.
load_ids
(data)[source]¶ Reassembles payload identifiers. This is necessary because the MDM does not store the full payload identifiers with the profile data.
Parameters: data – Dictionary of payload identifiers Returns: Dictionary of payload identifiers
-
devices.views.
logs
(request)[source]¶ Displays logs detailing what was installed on what devices and when
-
devices.views.
mdm_checkin
(request)[source]¶ Endpoint for device check-in. Managed devices will check in each time a new user logs onto the device.
Returns: JSON - If resources are pending install, includes the identifiers needed for the client to fetch and install them. Returns {‘status’: 200} otherwise.
-
devices.views.
mdm_enroll
(request)[source]¶ Endpoint for starting the enrollment process. Must be contacted directly by the device being enrolled.
Returns: Relative path to the link to complete the enrollment process (if client token is valid)
-
devices.views.
merge_app
(request, pk)[source]¶ Page for merging two app records together. This is helpful when we want to hide duplicates.
Parameters: pk – Primary key of the managed application to be merged
-
devices.views.
mobile_config
(request, profile_id, action='Install')[source]¶ Endpoint for generating and downloading a macOS configuration profile. The request must include the MDM Client token for authentication purposes.
If action is set to Uninstall, the resulting file will cause existing copies of the profile to be removed from the device.
Parameters: - profile_id – Primary key of configuration profile
- action – Either ‘Install’ or ‘Uninstall’
-
devices.views.
profile_devices
(request, pk)[source]¶ List all devices that are linked to a given profile
Parameters: pk – Primary key of configuration profile
-
devices.views.
refresh_managed_software_status
()[source]¶ Checks the Munki catalogs to retrieve the latest managed software lists
-
devices.views.
reload_from_munki
(request, pk)[source]¶ Refresh an application’s record with data from the Munki catalog
Parameters: pk – The primary key of the application to refresh data for
-
devices.views.
removal_password
(request)[source]¶ Displays the password that can be used to manually remove configuration profiles from managed devices
-
devices.views.
remove_app
(request, app, device=0)[source]¶ If a primary key value is supplied for both the device and app, the user will be able to remove the assignment between the managed application and that particular device. If only the app is provided, all device assignments for the application will be removed and the app will no longer be available to devices under the MDM.
Parameters: - app – Primary key of managed application
- device – Primary key of device (Optional)
-
devices.views.
remove_device
(request, pk)[source]¶ Removes a device from the MDM. Presents warnings and instructions for how to complete the operation correctly.
Parameters: pk – Primary key of device
-
devices.views.
remove_profile
(request, profile, device=0)[source]¶ If a primary key value is supplied for both the device and profile, the user will be able to remove the assignment between the profile and that particular device. If only the profile is provided, all device assignments for the profile will be removed and the profile data will be deleted. In both cases, two options will be presented to the user:
1.) Mark the profile as removed (if the profile had already been removed manually)
2.) Instruct the MDM to remove the profile automatically at the next checkin
Parameters: - profile – Primary key of configuration profile
- device – Primary key of device (Optional)
-
devices.views.
rotate_passwords
(request)[source]¶ Endpoint for updating the MacBook passwords once they’ve been rotated.
Returns: The old passwords so the MacBooks can complete the rotation
Forms¶
-
class
devices.forms.
AppMergeForm
(*args, **kwargs)[source]¶ -
base_fields
= {'options': <django.forms.fields.ChoiceField object>}¶
-
declared_fields
= {'options': <django.forms.fields.ChoiceField object>}¶
-
media
¶
-
-
class
devices.forms.
AssignmentForm
(*args, **kwargs)[source]¶ -
base_fields
= {'options': <django.forms.fields.MultipleChoiceField object>}¶
-
declared_fields
= {'options': <django.forms.fields.MultipleChoiceField object>}¶
-
media
¶
-
-
class
devices.forms.
ClientForm
(*args, **kwargs)[source]¶ -
base_fields
= {}¶
-
declared_fields
= {}¶
-
media
¶
-
-
class
devices.forms.
EnrollmentForm
(*args, **kwargs)[source]¶ -
class
Meta
[source]¶ -
fields
= ('name', 'serial', 'asset_tag', 'user_password', 'admin_password')¶
-
model
¶ alias of
devices.models.Laptop
-
-
base_fields
= {'admin_password': <django.forms.fields.CharField object>, 'asset_tag': <django.forms.fields.CharField object>, 'name': <django.forms.fields.CharField object>, 'serial': <django.forms.fields.CharField object>, 'user_password': <django.forms.fields.CharField object>}¶
-
declared_fields
= {'asset_tag': <django.forms.fields.CharField object>}¶
-
media
¶
-
class
-
class
devices.forms.
NewAppForm
(*args, **kwargs)[source]¶ -
class
FieldAccess
[source]¶ -
can_edit
= <data.forms.FieldAccessLevel object>¶
-
can_request
= <data.forms.FieldAccessLevel object>¶
-
-
class
Meta
[source]¶ -
fields
= ['name', 'developer', 'version', 'description', 'developer_website']¶
-
model
¶ alias of
devices.models.MacOSApp
-
-
base_fields
= {'description': <django.forms.fields.CharField object>, 'developer': <django.forms.fields.CharField object>, 'developer_website': <django.forms.fields.URLField object>, 'name': <django.forms.fields.CharField object>, 'version': <django.forms.fields.CharField object>}¶
-
declared_fields
= {}¶
-
media
¶
-
class
-
class
devices.forms.
ProfileForm
(*args, **kwargs)[source]¶ -
base_fields
= {'ac_display_timer': <django.forms.fields.IntegerField object>, 'ac_power_failure': <django.forms.fields.BooleanField object>, 'ac_system_timer': <django.forms.fields.IntegerField object>, 'ac_wake_lan': <django.forms.fields.BooleanField object>, 'ac_wake_modem': <django.forms.fields.BooleanField object>, 'ad_tracking': <django.forms.fields.BooleanField object>, 'admin_install': <django.forms.fields.BooleanField object>, 'alpha': <django.forms.fields.BooleanField object>, 'anim': <django.forms.fields.BooleanField object>, 'anim_immutable': <django.forms.fields.BooleanField object>, 'app_adoption': <django.forms.fields.BooleanField object>, 'app_auto': <django.forms.fields.BooleanField object>, 'app_name_0': <django.forms.fields.CharField object>, 'app_path_0': <django.forms.fields.CharField object>, 'apple_music': <django.forms.fields.BooleanField object>, 'auto_backup': <django.forms.fields.BooleanField object>, 'auto_check': <django.forms.fields.BooleanField object>, 'auto_download': <django.forms.fields.BooleanField object>, 'auto_remove': <django.forms.fields.ChoiceField object>, 'autofill_address': <django.forms.fields.BooleanField object>, 'autofill_forms': <django.forms.fields.BooleanField object>, 'autohide': <django.forms.fields.BooleanField object>, 'autohide_immutable': <django.forms.fields.BooleanField object>, 'backup_size': <django.forms.fields.IntegerField object>, 'backup_sys': <django.forms.fields.BooleanField object>, 'backup_url': <django.forms.fields.CharField object>, 'backup_volumes': <django.forms.fields.BooleanField object>, 'battery_display_timer': <django.forms.fields.IntegerField object>, 'battery_power_failure': <django.forms.fields.BooleanField object>, 'battery_system_timer': <django.forms.fields.IntegerField object>, 'battery_wake_lan': <django.forms.fields.BooleanField object>, 'battery_wake_modem': <django.forms.fields.BooleanField object>, 'block_all': <django.forms.fields.BooleanField object>, 'caching': <django.forms.fields.BooleanField object>, 'cloud_address': <django.forms.fields.BooleanField object>, 'cloud_bookmarks': <django.forms.fields.BooleanField object>, 'cloud_cal': <django.forms.fields.BooleanField object>, 'cloud_doc_sync': <django.forms.fields.BooleanField object>, 'cloud_docs_desk': <django.forms.fields.BooleanField object>, 'cloud_keychain': <django.forms.fields.BooleanField object>, 'cloud_mail': <django.forms.fields.BooleanField object>, 'cloud_notes': <django.forms.fields.BooleanField object>, 'cloud_reminders': <django.forms.fields.BooleanField object>, 'command_click': <django.forms.fields.BooleanField object>, 'complexity': <django.forms.fields.IntegerField object>, 'config_install': <django.forms.fields.BooleanField object>, 'console': <django.forms.fields.BooleanField object>, 'content_immutable': <django.forms.fields.BooleanField object>, 'cookies': <django.forms.fields.ChoiceField object>, 'default_browser': <django.forms.fields.BooleanField object>, 'description': <django.forms.fields.CharField object>, 'desktop_path': <django.forms.fields.CharField object>, 'desktop_version': <django.forms.fields.IntegerField object>, 'developers_policy': <django.forms.fields.BooleanField object>, 'device_backups': <django.forms.fields.BooleanField object>, 'diagnostics': <django.forms.fields.BooleanField object>, 'diagnostics_version': <django.forms.fields.IntegerField object>, 'disable_airdrop': <django.forms.fields.BooleanField object>, 'disable_assistant': <django.forms.fields.BooleanField object>, 'disable_autounlock': <django.forms.fields.BooleanField object>, 'disable_beta': <django.forms.fields.BooleanField object>, 'disable_camera': <django.forms.fields.BooleanField object>, 'disable_context': <django.forms.fields.BooleanField object>, 'disable_handoff': <django.forms.fields.BooleanField object>, 'disable_password_change': <django.forms.fields.BooleanField object>, 'disable_screenshot': <django.forms.fields.BooleanField object>, 'disable_sleep': <django.forms.fields.BooleanField object>, 'disable_touchid': <django.forms.fields.BooleanField object>, 'disabled_panes': <django.forms.fields.MultipleChoiceField object>, 'disallow_notifications': <django.forms.fields.BooleanField object>, 'display_name': <django.forms.fields.CharField object>, 'dock_version': <django.forms.fields.IntegerField object>, 'downloads_clear': <django.forms.fields.ChoiceField object>, 'downloads_path': <django.forms.fields.CharField object>, 'ds_store': <django.forms.fields.BooleanField object>, 'empty_trash': <django.forms.fields.BooleanField object>, 'enable_protection': <django.forms.fields.BooleanField object>, 'enabled_panes': <django.forms.fields.MultipleChoiceField object>, 'energy_version': <django.forms.fields.IntegerField object>, 'extra_dock': <django.forms.fields.IntegerField object>, 'extra_firewall': <django.forms.fields.IntegerField object>, 'filename': <django.forms.fields.CharField object>, 'filevault': <django.forms.fields.BooleanField object>, 'filevault_version': <django.forms.fields.IntegerField object>, 'finder_version': <django.forms.fields.IntegerField object>, 'firewall_enable': <django.forms.fields.BooleanField object>, 'firewall_version': <django.forms.fields.IntegerField object>, 'force_reset': <django.forms.fields.BooleanField object>, 'grace_period': <django.forms.fields.IntegerField object>, 'hidden_panes': <django.forms.fields.MultipleChoiceField object>, 'hide_admin': <django.forms.fields.BooleanField object>, 'history_limit': <django.forms.fields.ChoiceField object>, 'homepage': <django.forms.fields.CharField object>, 'host_info': <django.forms.fields.CharField object>, 'improve_siri': <django.forms.fields.ChoiceField object>, 'insecure_forms': <django.forms.fields.BooleanField object>, 'ipod_sync': <django.forms.fields.BooleanField object>, 'itunes_agreement': <django.forms.fields.BooleanField object>, 'itunes_file_share': <django.forms.fields.BooleanField object>, 'itunes_version': <django.forms.fields.IntegerField object>, 'java': <django.forms.fields.BooleanField object>, 'javascript': <django.forms.fields.BooleanField object>, 'library_sharing': <django.forms.fields.BooleanField object>, 'locked': <django.forms.fields.BooleanField object>, 'lockmessage_ui': <django.forms.fields.BooleanField object>, 'login_full_name': <django.forms.fields.BooleanField object>, 'login_version': <django.forms.fields.IntegerField object>, 'magnify': <django.forms.fields.BooleanField object>, 'magnify_immutable': <django.forms.fields.BooleanField object>, 'magsize_immutable': <django.forms.fields.BooleanField object>, 'mineffect': <django.forms.fields.ChoiceField object>, 'mineffect_immutable': <django.forms.fields.BooleanField object>, 'mini_app': <django.forms.fields.BooleanField object>, 'mobile_backups': <django.forms.fields.BooleanField object>, 'multiple_pages': <django.forms.fields.BooleanField object>, 'music_store': <django.forms.fields.BooleanField object>, 'new_tab': <django.forms.fields.ChoiceField object>, 'new_window': <django.forms.fields.ChoiceField object>, 'orientation': <django.forms.fields.ChoiceField object>, 'os_auto': <django.forms.fields.BooleanField object>, 'pass_autofill': <django.forms.fields.BooleanField object>, 'pass_proximity': <django.forms.fields.BooleanField object>, 'pass_share': <django.forms.fields.BooleanField object>, 'passcode_attempts': <django.forms.fields.IntegerField object>, 'passcode_force': <django.forms.fields.BooleanField object>, 'passcode_simple': <django.forms.fields.BooleanField object>, 'passcode_version': <django.forms.fields.IntegerField object>, 'password_change': <django.forms.fields.BooleanField object>, 'password_version': <django.forms.fields.IntegerField object>, 'pin_age': <django.forms.fields.IntegerField object>, 'pin_history': <django.forms.fields.IntegerField object>, 'pin_inactivity': <django.forms.fields.IntegerField object>, 'pin_min_length': <django.forms.fields.IntegerField object>, 'plugins': <django.forms.fields.BooleanField object>, 'policy_enable': <django.forms.fields.BooleanField object>, 'policy_version': <django.forms.fields.IntegerField object>, 'position': <django.forms.fields.BooleanField object>, 'power_loggedin': <django.forms.fields.BooleanField object>, 'preferences_version': <django.forms.fields.IntegerField object>, 'preferred_style': <django.forms.fields.ChoiceField object>, 'private_browsing': <django.forms.fields.BooleanField object>, 'process': <django.forms.fields.BooleanField object>, 'prohibit_connect': <django.forms.fields.BooleanField object>, 'prohibit_goto': <django.forms.fields.BooleanField object>, 'removal_date': <django.forms.fields.SplitDateTimeField object>, 'removal_period': <django.forms.fields.IntegerField object>, 'restart': <django.forms.fields.BooleanField object>, 'restart_loggedin': <django.forms.fields.BooleanField object>, 'restrictions_version': <django.forms.fields.IntegerField object>, 'retries_till_hint': <django.forms.fields.IntegerField object>, 'safari_version': <django.forms.fields.IntegerField object>, 'safe_downloads': <django.forms.fields.BooleanField object>, 'scope': <django.forms.fields.ChoiceField object>, 'screen_lock': <django.forms.fields.BooleanField object>, 'screensaver_delay': <django.forms.fields.IntegerField object>, 'screensaver_idle': <django.forms.fields.IntegerField object>, 'screensaver_password': <django.forms.fields.BooleanField object>, 'screensaver_path': <django.forms.fields.CharField object>, 'screensaver_version': <django.forms.fields.IntegerField object>, 'setup_version': <django.forms.fields.IntegerField object>, 'shared_music': <django.forms.fields.BooleanField object>, 'show_connected': <django.forms.fields.BooleanField object>, 'shutdown': <django.forms.fields.BooleanField object>, 'shutdown_loggedin': <django.forms.fields.BooleanField object>, 'siri_enabled': <django.forms.fields.BooleanField object>, 'siri_version': <django.forms.fields.IntegerField object>, 'size_immutable': <django.forms.fields.BooleanField object>, 'skip_appearance': <django.forms.fields.BooleanField object>, 'skip_cloud': <django.forms.fields.BooleanField object>, 'skip_cloud_storage': <django.forms.fields.BooleanField object>, 'skip_privacy': <django.forms.fields.BooleanField object>, 'skip_siri': <django.forms.fields.BooleanField object>, 'skip_true_tone': <django.forms.fields.BooleanField object>, 'sleep': <django.forms.fields.BooleanField object>, 'software_version': <django.forms.fields.IntegerField object>, 'softwareupdate_only': <django.forms.fields.BooleanField object>, 'spotlight_internet': <django.forms.fields.BooleanField object>, 'stealth': <django.forms.fields.BooleanField object>, 'store_version': <django.forms.fields.IntegerField object>, 'tab_links': <django.forms.fields.BooleanField object>, 'tab_policy': <django.forms.fields.ChoiceField object>, 'text': <django.forms.fields.CharField object>, 'time_machine_version': <django.forms.fields.IntegerField object>, 'time_reset': <django.forms.fields.IntegerField object>, 'update_check': <django.forms.fields.BooleanField object>, 'update_notifications': <django.forms.fields.BooleanField object>, 'version': <django.forms.fields.IntegerField object>, 'warn_trash': <django.forms.fields.BooleanField object>, 'window_target': <django.forms.fields.ChoiceField object>}¶
-
declared_fields
= {'ac_display_timer': <django.forms.fields.IntegerField object>, 'ac_power_failure': <django.forms.fields.BooleanField object>, 'ac_system_timer': <django.forms.fields.IntegerField object>, 'ac_wake_lan': <django.forms.fields.BooleanField object>, 'ac_wake_modem': <django.forms.fields.BooleanField object>, 'ad_tracking': <django.forms.fields.BooleanField object>, 'admin_install': <django.forms.fields.BooleanField object>, 'alpha': <django.forms.fields.BooleanField object>, 'anim': <django.forms.fields.BooleanField object>, 'anim_immutable': <django.forms.fields.BooleanField object>, 'app_adoption': <django.forms.fields.BooleanField object>, 'app_auto': <django.forms.fields.BooleanField object>, 'app_name_0': <django.forms.fields.CharField object>, 'app_path_0': <django.forms.fields.CharField object>, 'apple_music': <django.forms.fields.BooleanField object>, 'auto_backup': <django.forms.fields.BooleanField object>, 'auto_check': <django.forms.fields.BooleanField object>, 'auto_download': <django.forms.fields.BooleanField object>, 'auto_remove': <django.forms.fields.ChoiceField object>, 'autofill_address': <django.forms.fields.BooleanField object>, 'autofill_forms': <django.forms.fields.BooleanField object>, 'autohide': <django.forms.fields.BooleanField object>, 'autohide_immutable': <django.forms.fields.BooleanField object>, 'backup_size': <django.forms.fields.IntegerField object>, 'backup_sys': <django.forms.fields.BooleanField object>, 'backup_url': <django.forms.fields.CharField object>, 'backup_volumes': <django.forms.fields.BooleanField object>, 'battery_display_timer': <django.forms.fields.IntegerField object>, 'battery_power_failure': <django.forms.fields.BooleanField object>, 'battery_system_timer': <django.forms.fields.IntegerField object>, 'battery_wake_lan': <django.forms.fields.BooleanField object>, 'battery_wake_modem': <django.forms.fields.BooleanField object>, 'block_all': <django.forms.fields.BooleanField object>, 'caching': <django.forms.fields.BooleanField object>, 'cloud_address': <django.forms.fields.BooleanField object>, 'cloud_bookmarks': <django.forms.fields.BooleanField object>, 'cloud_cal': <django.forms.fields.BooleanField object>, 'cloud_doc_sync': <django.forms.fields.BooleanField object>, 'cloud_docs_desk': <django.forms.fields.BooleanField object>, 'cloud_keychain': <django.forms.fields.BooleanField object>, 'cloud_mail': <django.forms.fields.BooleanField object>, 'cloud_notes': <django.forms.fields.BooleanField object>, 'cloud_reminders': <django.forms.fields.BooleanField object>, 'command_click': <django.forms.fields.BooleanField object>, 'complexity': <django.forms.fields.IntegerField object>, 'config_install': <django.forms.fields.BooleanField object>, 'console': <django.forms.fields.BooleanField object>, 'content_immutable': <django.forms.fields.BooleanField object>, 'cookies': <django.forms.fields.ChoiceField object>, 'default_browser': <django.forms.fields.BooleanField object>, 'description': <django.forms.fields.CharField object>, 'desktop_path': <django.forms.fields.CharField object>, 'desktop_version': <django.forms.fields.IntegerField object>, 'developers_policy': <django.forms.fields.BooleanField object>, 'device_backups': <django.forms.fields.BooleanField object>, 'diagnostics': <django.forms.fields.BooleanField object>, 'diagnostics_version': <django.forms.fields.IntegerField object>, 'disable_airdrop': <django.forms.fields.BooleanField object>, 'disable_assistant': <django.forms.fields.BooleanField object>, 'disable_autounlock': <django.forms.fields.BooleanField object>, 'disable_beta': <django.forms.fields.BooleanField object>, 'disable_camera': <django.forms.fields.BooleanField object>, 'disable_context': <django.forms.fields.BooleanField object>, 'disable_handoff': <django.forms.fields.BooleanField object>, 'disable_password_change': <django.forms.fields.BooleanField object>, 'disable_screenshot': <django.forms.fields.BooleanField object>, 'disable_sleep': <django.forms.fields.BooleanField object>, 'disable_touchid': <django.forms.fields.BooleanField object>, 'disabled_panes': <django.forms.fields.MultipleChoiceField object>, 'disallow_notifications': <django.forms.fields.BooleanField object>, 'display_name': <django.forms.fields.CharField object>, 'dock_version': <django.forms.fields.IntegerField object>, 'downloads_clear': <django.forms.fields.ChoiceField object>, 'downloads_path': <django.forms.fields.CharField object>, 'ds_store': <django.forms.fields.BooleanField object>, 'empty_trash': <django.forms.fields.BooleanField object>, 'enable_protection': <django.forms.fields.BooleanField object>, 'enabled_panes': <django.forms.fields.MultipleChoiceField object>, 'energy_version': <django.forms.fields.IntegerField object>, 'extra_dock': <django.forms.fields.IntegerField object>, 'extra_firewall': <django.forms.fields.IntegerField object>, 'filename': <django.forms.fields.CharField object>, 'filevault': <django.forms.fields.BooleanField object>, 'filevault_version': <django.forms.fields.IntegerField object>, 'finder_version': <django.forms.fields.IntegerField object>, 'firewall_enable': <django.forms.fields.BooleanField object>, 'firewall_version': <django.forms.fields.IntegerField object>, 'force_reset': <django.forms.fields.BooleanField object>, 'grace_period': <django.forms.fields.IntegerField object>, 'hidden_panes': <django.forms.fields.MultipleChoiceField object>, 'hide_admin': <django.forms.fields.BooleanField object>, 'history_limit': <django.forms.fields.ChoiceField object>, 'homepage': <django.forms.fields.CharField object>, 'host_info': <django.forms.fields.CharField object>, 'improve_siri': <django.forms.fields.ChoiceField object>, 'insecure_forms': <django.forms.fields.BooleanField object>, 'ipod_sync': <django.forms.fields.BooleanField object>, 'itunes_agreement': <django.forms.fields.BooleanField object>, 'itunes_file_share': <django.forms.fields.BooleanField object>, 'itunes_version': <django.forms.fields.IntegerField object>, 'java': <django.forms.fields.BooleanField object>, 'javascript': <django.forms.fields.BooleanField object>, 'library_sharing': <django.forms.fields.BooleanField object>, 'locked': <django.forms.fields.BooleanField object>, 'lockmessage_ui': <django.forms.fields.BooleanField object>, 'login_full_name': <django.forms.fields.BooleanField object>, 'login_version': <django.forms.fields.IntegerField object>, 'magnify': <django.forms.fields.BooleanField object>, 'magnify_immutable': <django.forms.fields.BooleanField object>, 'magsize_immutable': <django.forms.fields.BooleanField object>, 'mineffect': <django.forms.fields.ChoiceField object>, 'mineffect_immutable': <django.forms.fields.BooleanField object>, 'mini_app': <django.forms.fields.BooleanField object>, 'mobile_backups': <django.forms.fields.BooleanField object>, 'multiple_pages': <django.forms.fields.BooleanField object>, 'music_store': <django.forms.fields.BooleanField object>, 'new_tab': <django.forms.fields.ChoiceField object>, 'new_window': <django.forms.fields.ChoiceField object>, 'orientation': <django.forms.fields.ChoiceField object>, 'os_auto': <django.forms.fields.BooleanField object>, 'pass_autofill': <django.forms.fields.BooleanField object>, 'pass_proximity': <django.forms.fields.BooleanField object>, 'pass_share': <django.forms.fields.BooleanField object>, 'passcode_attempts': <django.forms.fields.IntegerField object>, 'passcode_force': <django.forms.fields.BooleanField object>, 'passcode_simple': <django.forms.fields.BooleanField object>, 'passcode_version': <django.forms.fields.IntegerField object>, 'password_change': <django.forms.fields.BooleanField object>, 'password_version': <django.forms.fields.IntegerField object>, 'pin_age': <django.forms.fields.IntegerField object>, 'pin_history': <django.forms.fields.IntegerField object>, 'pin_inactivity': <django.forms.fields.IntegerField object>, 'pin_min_length': <django.forms.fields.IntegerField object>, 'plugins': <django.forms.fields.BooleanField object>, 'policy_enable': <django.forms.fields.BooleanField object>, 'policy_version': <django.forms.fields.IntegerField object>, 'position': <django.forms.fields.BooleanField object>, 'power_loggedin': <django.forms.fields.BooleanField object>, 'preferences_version': <django.forms.fields.IntegerField object>, 'preferred_style': <django.forms.fields.ChoiceField object>, 'private_browsing': <django.forms.fields.BooleanField object>, 'process': <django.forms.fields.BooleanField object>, 'prohibit_connect': <django.forms.fields.BooleanField object>, 'prohibit_goto': <django.forms.fields.BooleanField object>, 'removal_date': <django.forms.fields.SplitDateTimeField object>, 'removal_period': <django.forms.fields.IntegerField object>, 'restart': <django.forms.fields.BooleanField object>, 'restart_loggedin': <django.forms.fields.BooleanField object>, 'restrictions_version': <django.forms.fields.IntegerField object>, 'retries_till_hint': <django.forms.fields.IntegerField object>, 'safari_version': <django.forms.fields.IntegerField object>, 'safe_downloads': <django.forms.fields.BooleanField object>, 'scope': <django.forms.fields.ChoiceField object>, 'screen_lock': <django.forms.fields.BooleanField object>, 'screensaver_delay': <django.forms.fields.IntegerField object>, 'screensaver_idle': <django.forms.fields.IntegerField object>, 'screensaver_password': <django.forms.fields.BooleanField object>, 'screensaver_path': <django.forms.fields.CharField object>, 'screensaver_version': <django.forms.fields.IntegerField object>, 'setup_version': <django.forms.fields.IntegerField object>, 'shared_music': <django.forms.fields.BooleanField object>, 'show_connected': <django.forms.fields.BooleanField object>, 'shutdown': <django.forms.fields.BooleanField object>, 'shutdown_loggedin': <django.forms.fields.BooleanField object>, 'siri_enabled': <django.forms.fields.BooleanField object>, 'siri_version': <django.forms.fields.IntegerField object>, 'size_immutable': <django.forms.fields.BooleanField object>, 'skip_appearance': <django.forms.fields.BooleanField object>, 'skip_cloud': <django.forms.fields.BooleanField object>, 'skip_cloud_storage': <django.forms.fields.BooleanField object>, 'skip_privacy': <django.forms.fields.BooleanField object>, 'skip_siri': <django.forms.fields.BooleanField object>, 'skip_true_tone': <django.forms.fields.BooleanField object>, 'sleep': <django.forms.fields.BooleanField object>, 'software_version': <django.forms.fields.IntegerField object>, 'softwareupdate_only': <django.forms.fields.BooleanField object>, 'spotlight_internet': <django.forms.fields.BooleanField object>, 'stealth': <django.forms.fields.BooleanField object>, 'store_version': <django.forms.fields.IntegerField object>, 'tab_links': <django.forms.fields.BooleanField object>, 'tab_policy': <django.forms.fields.ChoiceField object>, 'text': <django.forms.fields.CharField object>, 'time_machine_version': <django.forms.fields.IntegerField object>, 'time_reset': <django.forms.fields.IntegerField object>, 'update_check': <django.forms.fields.BooleanField object>, 'update_notifications': <django.forms.fields.BooleanField object>, 'version': <django.forms.fields.IntegerField object>, 'warn_trash': <django.forms.fields.BooleanField object>, 'window_target': <django.forms.fields.ChoiceField object>}¶
-
fields
= {}¶
-
media
¶
-
-
class
devices.forms.
ProfileRemovalForm
(*args, **kwargs)[source]¶ -
base_fields
= {'options': <django.forms.fields.ChoiceField object>}¶
-
declared_fields
= {'options': <django.forms.fields.ChoiceField object>}¶
-
media
¶
-
-
class
devices.forms.
RemovalForm
(*args, **kwargs)[source]¶ -
base_fields
= {'agree': <django.forms.fields.BooleanField object>, 'client_removed': <django.forms.fields.BooleanField object>, 'profiles_removed': <django.forms.fields.BooleanField object>}¶
-
declared_fields
= {'agree': <django.forms.fields.BooleanField object>, 'client_removed': <django.forms.fields.BooleanField object>, 'profiles_removed': <django.forms.fields.BooleanField object>}¶
-
media
¶
-
-
class
devices.forms.
UninstallAppForm
(*args, **kwargs)[source]¶ -
base_fields
= {}¶
-
declared_fields
= {}¶
-
media
¶
-
-
class
devices.forms.
UpdateAppForm
(*args, **kwargs)[source]¶ -
class
Meta
[source]¶ -
fields
= ['name', 'identifier', 'developer', 'version', 'description', 'developer_website', 'requires_license']¶
-
model
¶ alias of
devices.models.MacOSApp
-
-
base_fields
= {'description': <django.forms.fields.CharField object>, 'developer': <django.forms.fields.CharField object>, 'developer_website': <django.forms.fields.URLField object>, 'identifier': <django.forms.fields.CharField object>, 'name': <django.forms.fields.CharField object>, 'requires_license': <django.forms.fields.BooleanField object>, 'version': <django.forms.fields.CharField object>}¶
-
declared_fields
= {}¶
-
media
¶
-
class