Skip to main content

Django tool

Project description

shopcloud-django-toolbox

install

$ pip install shopcloud-django-toolbox

Models

Add the GID as identifier to all django models

from shopcloud_django_toolbox import GID

class FooBarModel(models.Model, GID):
    pass

URL-Signing

generate or load signed base64 encoded dict containing versioned with expiration date for access-control

Usage

settings.py

DJ_TOOLBOX_SIGNER = {
    'VERSION': "1",
}

dump values dict:

from shopcloud django.toolbox import signer

signing_key = signer.dumps({"foo":"bar"}, expire_in_hours:12)

load values dict:

from shopcloud django.toolbox import signer
from django.http import HttpResponseForbidden

def some_view(request):
    sign_str = request.GET.get("sign")
    is_valid, data = signer.loads(sign_str)
    if not is_valid(request):
        return HttpResponseForbidden("Not allowed")
    data.get("xxx")
    #
    ## … some view logic
    #

alternative for a django Request:

from shopcloud django.toolbox import signer
from django.http import HttpResponseForbidden

def some_view(request):
    sign_str = request.GET.get("sign")
    is_valid, data = signer.loads_from_request(sign_str)
    if not is_valid(request):
            return HttpResponseForbidden("Not allowed")
    data.get("xxx")
    #
    ## … some view logic
    #

Django View Decorator

check if GET-parameter sign is set and has required keys in data objects

from shopcloud_django_toolbox import signer
from shopcloud_django_toolbox.decorators import


@require_toolbox_sign(needed_keys=['key_that_must_exist', 'foo', 'bar'])
def some_view(request):
    is_valid, data = signer.loads_from_request(request)
    #
    ## … some view logic
    #

Testing

API standart tests

Standart template for the tests.py file in all modules with admin and REST API`s

from shopcloud_django_toolbox import TestAdminTestCase
from shopcloud_django_toolbox.tests import BaseTestApiAuthorization
from shopcloud_django_toolbox import SetupClass
from shopcloud_django_toolbox.tests import Representation
__


class TestRepresentation(utils.Representation):
    def test_representation(self):
        from . import seeds
        self._test_representations_from_seeds(seeds)


class TestAdminPages(TestAdminTestCase):
    MODULE = 'url-name'

    def test_admin_easylineitem(self):
        self.run_for_model(
            'url-model-name',
            is_check_add=False,  # deactivate when add function is deactivated
            is_check_template=False,  # deactivate generic template check
            is_check_search=True,  # activate searchbar check
            is_check_detail=False, # erzeugt ein Model-Object und ruft den Detail-View auf,
            creation_parameters={}, # notwendig für den detailcheck da ein generisches erzeugen von spezeillen Models nicht mgl
        )


class TestApiAuthorization(BaseTestApiAuthorization):
    app_name = "url-module-name"

    def test_model_foo(self):
        self.run_test_endpoint("url-model-name")

    def test_model_bar(self):
        self.run_test_endpoint("url-model-name")


class YoutAPITest(SetupClass):
    def test_api_endpint(self):
        client = APIClient()
        client.login(username=self.username, password=self.pwd)

        r = client.get('/module/api/endpoint')
        self.assertEqual(r.status_code, status.HTTP_201_CREATED)

Event

To fire events and run tasks in prarallel, need [PROJECT] to receive and run the output from log and call the API.

from shopcloud_django_toolbox import Event


class FooBarModel(models.Model):
    ...

    def do_event(self):
        event = Event(
            name="de.talk-point.platform/module/model/sync",
            model=self,
        )
        event.add_task(
            queue="default",
            url=f"moduke/api/model/{self.id}/action/",
            json={}
        )
        event.fire()

File Hash Generating

generate sha-384 file hash for sri with given filepath

from shopcloud-django-toolbox import hash_for_file


hash_for_file("./some-file.txt")

deploy

# change version Number in setup.py ändern und dann erst releasen
# delete build and dist-directory
$ rm -rf build dist
$ pip3 install wheel twine
$ python3 setup.py sdist bdist_wheel
$ twine upload dist/*
  - username __token__

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

shopcloud_django_toolbox-1.19.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

shopcloud_django_toolbox-1.19.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file shopcloud_django_toolbox-1.19.0.tar.gz.

File metadata

File hashes

Hashes for shopcloud_django_toolbox-1.19.0.tar.gz
Algorithm Hash digest
SHA256 9638e7f0cb3af121bc61efa5ce969fa4bc79a32be2333b234d5dfaeda92f47f2
MD5 5adb4e3bfb9a60c907b8ad7643758091
BLAKE2b-256 b9370751043010c97772e0e8f6cb08b03b87bedb16a8f688061102fe5b49c8c4

See more details on using hashes here.

File details

Details for the file shopcloud_django_toolbox-1.19.0-py3-none-any.whl.

File metadata

File hashes

Hashes for shopcloud_django_toolbox-1.19.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ac02f0d987e9637a9d4239fc974ad27f654a19bab4926eb5a6d498d7dcd391f
MD5 e43ed6d20043b48bc4ef0b2cc7784772
BLAKE2b-256 85f64d4c86c4929ac5e05f5abc80aca011e3075ca9b25fbe1a05ce04751c0e70

See more details on using hashes here.

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