- # Role IDs equal to or lower than this number are for use by real
- # accounts. Other role IDs are used internally.
- role_max = 500
+ def validate_role_id(self, role_id):
+ # Make sure role does not already exist
+ conflicts = Roles(self.api, [role_id])
+ if conflicts:
+ raise PLCInvalidArgument, "Role ID already in use"
+
+ return role_id
+
+ def validate_name(self, name):
+ # Make sure name is not blank
+ if not len(name):
+ raise PLCInvalidArgument, "Role must be specified"
+
+ # Make sure role does not already exist
+ conflicts = Roles(self.api, [name])
+ if conflicts:
+ raise PLCInvalidArgument, "Role name already in use"
+
+ return name
+
+class Roles(Table):
+ """
+ Representation of the roles table in the database.
+ """
+
+ def __init__(self, api, role_filter = None):
+ Table.__init__(self, api, Role)