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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file shopcloud_django_toolbox-1.19.0.tar.gz
.
File metadata
- Download URL: shopcloud_django_toolbox-1.19.0.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9638e7f0cb3af121bc61efa5ce969fa4bc79a32be2333b234d5dfaeda92f47f2 |
|
MD5 | 5adb4e3bfb9a60c907b8ad7643758091 |
|
BLAKE2b-256 | b9370751043010c97772e0e8f6cb08b03b87bedb16a8f688061102fe5b49c8c4 |
File details
Details for the file shopcloud_django_toolbox-1.19.0-py3-none-any.whl
.
File metadata
- Download URL: shopcloud_django_toolbox-1.19.0-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ac02f0d987e9637a9d4239fc974ad27f654a19bab4926eb5a6d498d7dcd391f |
|
MD5 | e43ed6d20043b48bc4ef0b2cc7784772 |
|
BLAKE2b-256 | 85f64d4c86c4929ac5e05f5abc80aca011e3075ca9b25fbe1a05ce04751c0e70 |