def render(self, session, osname, osversion, archetype, comments, **arguments): valid = re.compile('^[a-zA-Z0-9_.-]+$') if (not valid.match(osname)): raise ArgumentError("OS name '%s' is not valid." % osname) if not valid.match(osversion): raise ArgumentError("OS version '%s' is not valid." % osversion) dbarchetype = Archetype.get_unique(session, archetype, compel=True) OperatingSystem.get_unique(session, name=osname, version=osversion, archetype=dbarchetype, preclude=True) dbos = OperatingSystem(name=osname, version=osversion, archetype=dbarchetype, comments=comments) session.add(dbos) return