def ensure(cls, data): source = cls.by_slug(data['slug']) if source is None: source = Source() source.slug = data.get('slug') source.title = data.get('title') source.url = data.get('url') session.add(source) session.commit() return source
def load_or_create(cls, id, type, name, email=None, is_admin=False): role = cls.by_id(id) if role is None: role = cls(id, type) if role.apikey is None: role.apikey = uuid4().hex role.name = name role.email = email role.is_admin = is_admin session.add(role) return role