Beispiel #1
0
class PainSettings(appsettings.AppSettings):
    """Specific settings for django-pain app."""

    # Dictionary of names and dotted paths to processor classes setting.
    processors = NamedClassSetting(
        'django_pain.processors.AbstractPaymentProcessor',
        required=True,
        key_type=str,
        value_type=str)

    # A card payment handler classes.
    card_payment_handlers = NamedClassSetting(
        'django_pain.card_payment_handlers.AbstractCardPaymentHandler',
        key_type=str,
        value_type=str)

    # Location of process_payments command lock file.
    process_payments_lock_file = appsettings.StringSetting(
        default='/tmp/pain_process_payments.lock')

    # Whether variable symbol should be trimmed of leading zeros.
    trim_varsym = appsettings.BooleanSetting(default=False)

    # List of dotted paths to callables that takes BankPayment object as their argument and return (possibly) changed
    # BankPayment.
    #
    # These callables are called right before the payment is saved during the import. Especially, these callable can
    # raise ValidationError in order to avoid saving payment to the database.
    import_callbacks = CallableListSetting(item_type=str)

    downloaders = NamedDictSetting(
        dict(DOWNLOADER=appsettings.ObjectSetting(
            required=True,
            validators=[ClassPathValidator(BankStatementDownloader)]),
             PARSER=appsettings.ObjectSetting(
                 required=True,
                 validators=[ClassPathValidator(BankStatementParser)]),
             DOWNLOADER_PARAMS=appsettings.DictSetting(required=True,
                                                       key_type=str)))

    # CSOB card settings
    csob_card = appsettings.NestedDictSetting(dict(
        api_url=appsettings.StringSetting(
            default='https://api.platebnibrana.csob.cz/api/v1.7/'),
        api_public_key=appsettings.FileSetting(required=True),
        merchant_id=appsettings.StringSetting(required=True),
        merchant_private_key=appsettings.FileSetting(required=True),
        account_name=appsettings.StringSetting(required=True),
    ),
                                              default=None)

    class Meta:
        """Meta class."""

        setting_prefix = 'pain_'
 def test_dict_setting_from_environ_delimiter_value_with_types(self):
     setting = appsettings.DictSetting(
         name="setting", outer_delimiter="--", inner_delimiter=":", key_type=str, value_type=int
     )
     setting.check()
     assert setting.value == {"a": 1, "b": 2}
Beispiel #3
0
 def test_dict_setting(self):
     setting = appsettings.DictSetting()
     assert setting.value == {}
 def test_dict_setting_from_environ_delimiter_value(self):
     setting = appsettings.DictSetting(name="setting")
     setting.check()
     assert setting.value == {"a": "A", "b": "B"}