from django.conf import settings


class BackendBase:
    # User 表中的字段
    account_field = None

    # Django setting 中的字段名
    is_enable_field_in_settings = None

    def get_accounts(self, users):
        accounts = []
        unbound_users = []
        account_user_mapper = {}

        for user in users:
            account = getattr(user, self.account_field, None)
            if account:
                account_user_mapper[account] = user
                accounts.append(account)
            else:
                unbound_users.append(user)
        return accounts, unbound_users, account_user_mapper

    @classmethod
    def get_account(cls, user):
        return getattr(user, cls.account_field)

    @classmethod
    def is_enable(cls):
        enable = getattr(settings, cls.is_enable_field_in_settings)
        return bool(enable)