def create_collection(scope, name, description): """Instantiates, initialises & returns a term collection. """ # Validate inputs. v.validate(scope) v.validate_collection_name(name) v.validate_collection_description(description) # Format inputs. name = unicode(name).strip() description = unicode(description).strip() # Instantiate. i = Collection() i.create_date = arrow.utcnow().datetime i.description = description i.label = name i.name = name.lower() i.scope = scope i.uid = uuid.uuid4() # Append to parent & set idx. scope.collections.append(i) i.idx = len(scope.collections) # Raise validation exception (if appropriate). if not i.is_valid: raise ValidationError(i.errors) return i
def create_scope(authority, name, description, url): """Instantiates, initialises & returns a term scope. """ # Validate inputs. v.validate(authority) v.validate_scope_name(name) v.validate_scope_description(description) v.validate_scope_url(url) # Format inputs. name = unicode(name).strip() description = unicode(description).strip() url = unicode(url).strip() # Instantiate. i = Scope() i.authority = authority i.description = description i.label = name i.name = name.lower() i.uid = uuid.uuid4() i.url = url # Append to parent & set idx. authority.scopes.append(i) i.idx = len(authority.scopes) # Raise validation exception (if appropriate). if not i.is_valid: raise ValidationError(i.errors) return i
def validate(self): """Validates instance. :returns: Set of validation errrors. :rtype: set """ # N.B. just-in-time import to avaoid circular references. from pyesdoc.cv import validation as v return v.validate(self)
def create_term(collection, name, data=None): """Instantiates, initialises & returns a term. param: pyesdoc.cv.Collection collection: The collection to which the term belongs. param: str name: Name of term. param: dict data: Arbitrary data associated with term. """ # Validate inputs. v.validate(collection) v.validate_term_name(name) if data is not None: v.validate_term_data(data) # Format inputs. name = unicode(name).strip() # Instantiate. i = Term() i.collection = collection i.create_date = arrow.utcnow().datetime i.label = name i.name = name.lower() i.status = constants.GOVERNANCE_STATUS_PENDING i.uid = uuid.uuid4() i.data = data # Append to parent & set idx. collection.terms.append(i) i.idx = len(collection.terms) # Raise validation exception (if appropriate). if not i.is_valid: raise ValidationError(i.errors) return i