code: def availableRoles(self):
          '''
          Returns the set of roles for this event.  Since roles are not always custom specified for
          event, this looks for the set of available roles in multiple places.  If no roles are found,
          then the method returns an empty list, in which case it can be assumed that the event's registration
          is not role-specific.
          '''
          eventRoles = self.eventrole_set.filter(capacity__gt=0)
          if eventRoles.count() > 0:
              return [x.role for x in eventRoles]
          elif isinstance(self,Series):
              return self.classDescription.danceTypeLevel.danceType.roles.all()
          return [f availableRoles(self):
          '''
          Returns the set of roles for this event.  Since roles are not always custom specified for
          event, this looks for the set of available roles in multiple places.  If no roles are found,
          then the method returns an empty list, in which case it can be assumed that the event's registration
          is not role-specific.
          '''
          eventRoles = self.eventrole_set.filter(capacity__gt=0)
          if eventRoles.count() > 0:
              return [x.role for x in eventRoles]
          elif isinstance(self,Series):
              return self.classDescription.danceTypeLevel.danceType.roles.all()
          return []
docs: Returns the set of roles for this event.  Since roles are not always custom specified for
          event, this looks for the set of available roles in multiple places.  If no roles are found,
          then the method returns an empty list, in which case it can be assumed that the event's registration
          is not role-specific.