Skip to main content

Generate hard to guess url from python secrets module. Implement custom view logic

Project description

HTG URL INSTALLATION


1. Install package

$ pip install htg-url-generator

2. Register package in INSTALLED_APPS in the Django settings:

INSTALLED_APPS = [
    ...
    'htg_url',
    ...
]

3. Declare a new 'AbstractHtgUrlGenerator' wrapper class and override 'create_unique_identifier' method:

class ExampleGeneratorClass(AbstractHtgUrlGenerator):
    @staticmethod
    def create_unique_identifier(**properties):
        ...
        Include
        custom
        implementation
        ...
Return value for the 'create_unique_identifier' method should be a string

4. Declare a new 'AbstractFetchDataFromSap' wrapper class and override 'create_unique_identifier' method:

class ExampleFetcherCLass(AbstractFetchDataFromSap):
    @staticmethod
    def fetch_document_from_sap(**properties):
        ...
        Include
        custom
        implementation
        ...
Return value for the 'fetch_document_from_sap' method should be a base64 encoded string or None

5. Declare a new 'AbstractDownloadDocumentView' wrapper class:

class ExampleDownloadDocumentView(AbstractDownloadDocumentView):
    pass
By default 'AbstractDownloadDocumentView' class does NOT require login or any permission. Override if necessary

6. Register a new path in 'urls.py' and map declared view class:

    path('document/<token>/', ExampleDownloadDocumentView.as_view())

7. Declare settings for the package in the Django settings

HTG_URL_SETTINGS = {
    'HTG_URL_REDIS_TTL': 216000, # 60 minutes
    'HTG_WRAPPER_CLASS': 'app_name.file_name.class_name',
    'DOC_WRAPPER_CLASS': 'app_name.file_name.class_name'
    'REDIS_CONNECTION_STRING': 'redis_connection_string' or None
}

8. Run tests

$ python manage.py test htg_url

NOTE

Package will use connection string to connect to Redis if it is defined in settings under 'REDIS_CONNECTION_STRING'.
Otherwise it will initialize connection using environment variables (see below)
Package expects you to have 'REDIS_HOST', 'REDIS_PORT', 'REDIS_PASSWORD' and 'CACHE_REDIS_DB' (db index) environment variables as follows:
host = os.environ.get('REDIS_HOST'), port = int(os.environ.get('REDIS_PORT')),
password = os.environ.get('REDIS_PASSWORD'), os.environ.get('CACHE_REDIS_DB')

NOTE

Package also expects you to have 'libmagic' installed on your machine as 'python-magic' library depends on it:
$ sudo apt-get install libmagic1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

htg_url_generator-0.2.tar.gz (8.4 kB view hashes)

Uploaded Source

Built Distribution

htg_url_generator-0.2-py3-none-any.whl (9.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page