def runUpsertValidation(self, obj):
     RepositoryBaseClass.RequireStringElement(obj, "tenantName",
                                              self.objName)
     RepositoryBaseClass.RequireStringElement(obj, "ticketTypeName",
                                              self.objName)
     RepositoryBaseClass.RequireStringElement(obj, "description",
                                              self.objName)
     requireBooleanElement(obj, "enabled", self.objName)
     RepositoryBaseClass.RequireStringElement(obj, "welcomeMessage",
                                              self.objName)
     requireBooleanElement(obj["welcomeMessage"], "agreementRequired",
                           self.objName + ".welcomeMessage")
     RepositoryBaseClass.RequireStringElement(
         obj["welcomeMessage"], "title", self.objName + ".welcomeMessage")
     RepositoryBaseClass.RequireStringElement(
         obj["welcomeMessage"], "body", self.objName + ".welcomeMessage")
     RepositoryBaseClass.RequireStringElement(
         obj["welcomeMessage"], "okButtonText",
         self.objName + ".welcomeMessage")
     requireBooleanElement(obj, "allowUserCreation", self.objName)
     reqireIntegerElement(obj, "issueDuration", self.objName)
     RepositoryBaseClass.RequireListElement(obj, "roles", self.objName)
     for curRole in obj["roles"]:
         if not isinstance(curRole, str):
             raise RepositoryValidationException(
                 self.objName + " must have all roles as strings")
         if curRole == "":
             raise RepositoryValidationException(
                 self.objName + " must have all roles as non-empty strings")
         if curRole == constants.DefaultHasAccountRole:
             raise RepositoryValidationException(
                 self.objName + " not valid to assign " +
                 constants.DefaultHasAccountRole + " role")
     #We have a good use case for ticket type with no role
     #if len(obj["roles"]) == 0:
     #  raise RepositoryValidationException(self.objName + " must have at least one role")
     RepositoryBaseClass.RequireStringElement(obj, "postUseURL",
                                              self.objName)
     RepositoryBaseClass.RequireStringElement(obj, "postInvalidURL",
                                              self.objName)
def reqireIntegerElement(obj,
                         elementName,
                         objectName,
                         minval=None,
                         maxval=None):
    RepositoryBaseClass.RequireStringElement(obj, elementName, objectName)
    try:
        val = int(obj[elementName])
    except ValueError:
        raise RepositoryValidationException(objectName + " must have a " +
                                            elementName +
                                            " that is an integer")
    if minval is not None:
        if val < minval:
            raise RepositoryValidationException(
                objectName + " must have a " + elementName +
                " that is an integer greater than " + str(minval))
    if maxval is not None:
        if val > maxval:
            raise RepositoryValidationException(
                objectName + " must have a " + elementName +
                " that is an integer less than " + str(maxval))
def requireBooleanElement(obj, elementName, objectName):
    RepositoryBaseClass.RequireStringElement(obj, elementName, objectName)
    if not isinstance(obj[elementName], bool):
        raise RepositoryValidationException(objectName + " must have a " +
                                            elementName + " that is a boolean")