Users are central to the capabilities and functionality of the system. A User Object in the system should correspond to a physical person accessing the system so that the actions of that user can be tracked for auditing, and various permissions given to that user adhered to.

Users are collected in groups of Users, have multiple attributes associated with them and are authenticated upon login to the system. We have capabilities with a Cantemo App of integration with Active Directory.

Each user inherits capabilities from the groups that they belong to, such as what transcode profiles they can use, what export locations they have and what Portal Roles they have in the system.

The Portal Roles that they have correspond to the capabilities that have in the system. One Portal Role should be related to an action in the user interface.

The user’s information is stored in two database models. User and UserProfile:

There is a one-to-one relationship between a User and UserProfile. A User object will always have a UserProfile, upon creation of a User a related UserProfile model is created and filled with details of the user.

User and UserProfiles also have relationships to internal models to extend the capabilities:

  • Message - Internal messages framework

  • Permission - Internal permission framework

  • Group - Grouping of Users

  • Theme - Each user can be given a separate theme if they so wish.

They are also sync’d to backend MAM resources, such as Vidispine, which in turn might be integrated to a third-party user directory system.


class django.contrib.auth.models.User(*args, **kwargs)

Users within the Django authentication system are represented by this model.

Username and password are required. Other fields are optional.

  • id – Id

  • password – Password

  • last_login – Last login

  • is_superuser – Designates that this user has all permissions without explicitly assigning them.

  • username – Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.

  • first_name – First name

  • last_name – Last name

  • email – Email address

  • is_staff – Designates whether the user can log into this admin site.

  • is_active – Designates whether this user should be treated as active. Unselect this instead of deleting accounts.

  • date_joined – Date joined

exception DoesNotExist
exception MultipleObjectsReturned


class portal.users.models.UserProfile(*args, **kwargs)

UserProfile objects are automatically created by listing to a post_save signal from the User model. UserProfile extends the User model. holds the code to this holds a reference. UserEditProfileAdminAjaxForm in users.forms is used to allowing Admins to update this section.

>>> u = User.objects.create_user(username="doctestuser",
                                 password = "testpassword",
                                 email = "")
>>> u.delete()
  • id – Id

  • user_id – User

  • notes – Notes

  • create_date – Creation date

  • contact_number – Contact number

  • extra_info – Extra info

  • theme_id – Theme

  • roles – Roles

  • portal_roles – Portal roles

  • homepage – Homepage

  • default_ingest_group_id – Default ingest profile

  • default_collection_profile_id – Default collection profile

  • default_group_id – Default group

  • default_sort_list – Default sort list

  • exclude_search_table_view_columns – Columns to display when using the table view on the search page

  • _default_metadata_group_item – Default metadata group for items

  • _default_metadata_group_collection – Default metadata group for collections

  • _default_metadata_group_subclip – Default metadata group for subclips

  • default_metadata_batch_update_behaviour – Default metadata batch update behaviour

  • login_count – Login count

  • metadata_fields – Metadata fields

  • timeout – Timeout

  • default_search_panel – The panel that should be shown by default on the search page

  • portal_is_local_user – Portal is local user

  • avatar – Avatar

  • default_search_criteria_display – Default search criteria display

  • default_search_criteria_search_only – Default search criteria search only

exception DoesNotExist
exception MultipleObjectsReturned
property default_metadata_group

The users default metadata group. Note: This attribute is deprecated and is now an alias for default_metadata_group_item. Please use the more specific attributes: default_metadata_group_item, default_metadata_group_collection and default_metadata_group_subclip instead. :return: default_metadata_group_item


use_default_if_none – whether to return a default image when

the avatar has not been set.

Returns the names of the groups the user belongs to. It uses cache as well, as this function is called multiple times in some workflows.

Checking Roles

If you have a User object, or a UserProfile object you can check the MAM roles that are stored on the UserProfile. This is for example useful in App views.

You can get a listing of all the Portal Roles a user has in a view by looking at the user associated with a incoming Request:


You can check whether a user has a particular Portal Role:

if 'portal_ingest_import_from_storage' in self.request.user.userprofile.portal_roles:
    print("User has import role.")

The Portal Roles are sync’d on login by the system.