Пример #1
0
    def from_model(cls, model, mask_secrets=True):
        if not KeyValuePairAPI.crypto_setup:
            KeyValuePairAPI._setup_crypto()

        doc = cls._from_model(model, mask_secrets=mask_secrets)

        if getattr(model, 'expire_timestamp', None) and model.expire_timestamp:
            doc['expire_timestamp'] = isotime.format(model.expire_timestamp, offset=False)

        encrypted = False
        secret = getattr(model, 'secret', False)
        if secret:
            encrypted = True

        if not mask_secrets and secret:
            doc['value'] = symmetric_decrypt(KeyValuePairAPI.crypto_key, model.value)
            encrypted = False

        scope = getattr(model, 'scope', SYSTEM_SCOPE)
        if scope:
            doc['scope'] = scope

        key = doc.get('name', None)
        if (scope == USER_SCOPE or scope == FULL_USER_SCOPE) and key:
            doc['user'] = UserKeyReference.get_user(key)
            doc['name'] = UserKeyReference.get_name(key)

        doc['encrypted'] = encrypted
        attrs = {attr: value for attr, value in six.iteritems(doc) if value is not None}
        return cls(**attrs)
Пример #2
0
    def from_model(cls, model, mask_secrets=True):
        if not KeyValuePairAPI.crypto_setup:
            KeyValuePairAPI._setup_crypto()

        doc = cls._from_model(model, mask_secrets=mask_secrets)

        if getattr(model, "expire_timestamp", None) and model.expire_timestamp:
            doc["expire_timestamp"] = isotime.format(model.expire_timestamp,
                                                     offset=False)

        encrypted = False
        secret = getattr(model, "secret", False)
        if secret:
            encrypted = True

        if not mask_secrets and secret:
            doc["value"] = symmetric_decrypt(KeyValuePairAPI.crypto_key,
                                             model.value)
            encrypted = False

        scope = getattr(model, "scope", SYSTEM_SCOPE)
        if scope:
            doc["scope"] = scope

        key = doc.get("name", None)
        if (scope == USER_SCOPE or scope == FULL_USER_SCOPE) and key:
            doc["user"] = UserKeyReference.get_user(key)
            doc["name"] = UserKeyReference.get_name(key)

        doc["encrypted"] = encrypted
        attrs = {
            attr: value
            for attr, value in six.iteritems(doc) if value is not None
        }
        return cls(**attrs)
Пример #3
0
    def from_model(cls, model, mask_secrets=True):
        if not KeyValuePairAPI.crypto_setup:
            KeyValuePairAPI._setup_crypto()

        doc = cls._from_model(model, mask_secrets=mask_secrets)

        if getattr(model, 'expire_timestamp', None) and model.expire_timestamp:
            doc['expire_timestamp'] = isotime.format(model.expire_timestamp, offset=False)

        encrypted = False
        secret = getattr(model, 'secret', False)
        if secret:
            encrypted = True

        if not mask_secrets and secret:
            doc['value'] = symmetric_decrypt(KeyValuePairAPI.crypto_key, model.value)
            encrypted = False

        scope = getattr(model, 'scope', SYSTEM_SCOPE)
        if scope:
            doc['scope'] = scope

        key = doc.get('name', None)
        if scope == USER_SCOPE and key:
            doc['user'] = UserKeyReference.get_user(key)
            doc['name'] = UserKeyReference.get_name(key)

        doc['encrypted'] = encrypted
        attrs = {attr: value for attr, value in six.iteritems(doc) if value is not None}
        return cls(**attrs)