from abc import ABCMeta, abstractmethod from six import add_metaclass @add_metaclass(ABCMeta) class SuperuserConfigDataInterface(object): """ Interface that represents all data store interactions required by the superuser config API. """ @abstractmethod def is_valid(self): """ Returns true if the configured database is valid. """ @abstractmethod def has_users(self): """ Returns true if there are any users defined. """ @abstractmethod def create_superuser(self, username, password, email): """ Creates a new superuser with the given username, password and email. Returns the user's UUID. """ @abstractmethod def has_federated_login(self, username, service_name): """ Returns true if the matching user has a federated login under the matching service. """ @abstractmethod def attach_federated_login(self, username, service_name, federated_username): """ Attaches a federatated login to the matching user, under the given service. """