Django Crud Manager
Project description
Django-Crud-Manager
Simple, compact and useful library to read request parameters in django framework.
Install
There are 2 methods to install this:
1- Install with pip (Recommended and the easiest way)
pip install django-crud-manager
2- Install from source code:
git clone https://github.com/sauditore/SARequest.git
python setup.py install
Usage:
To use this library just create a class and inherit from sa_request main class
from django_crud_manager import CrudManager, ParamNotFoundError
class ViewName(CrudManager):
def check_perm(self) -> bool:
return self.logged_in # check if the user logged in or not
def get_request(self):
# Get int_name from query string
user_int = self.get_int("int_name", False, 100)
# Get str_name from query string. If data was not found then "default_data" will return
user_str = self.get_string("str_name", False, "default_data")
# Get float_name from query string. If data was not found then 1.1 will return
user_float = self.get_float("float_name", False, 1.1)
try:
# If raise_error is set True, then default value ignored
# and and exception will raise.
str_data = self.get_string("parameter_name", True)
# Checks for user permission. If permission not granted then
# AuthError will raise
if not self.authorize(perm="user.add_user"):
raise Exception("Unauthorized")
except ParamNotFoundError as e:
# A response will return to user
return e.get_response()
# and other logics
Basic Structure:
Most of the methods have a similar signature:
method(name, raise_error, default)
- name: Name of the parameter to read from query string or post data
- raise_error: If data is not provided, then raise ParamNotFoundError error.
- default: If raise_error is set to False, then this value will return as result.
Methods:
get_int:
Get "name" as int from request:
def get_int(name: str,
raise_error: bool = False,
default: int = 0,
min_value: int = None,
max_value: int = None
) -> int:
get_string:
Get "name" from request as str with min / max length validation
def get_string(name: str,
raise_error: bool = False,
default: str = '',
min_len: int = 0,
max_len: int = 0) -> str:
paginate:
Paginate query set or list and returns it to use in a template. Queryset or data key name in a dictionary is
the same data_name
provided. Per Page parameter is read from pp
querystring. Current Page is also
read from cp
querystring.
Result contains these keys:
1- data_name
: Contains paginated data
2- next
: Next number to pass to cp
parameter to view next page.
3- back
: Back number to pass to cp
parameter in querystring to view previous page
4- current_page
: Current page number
5- pages
: Total number of pages
6- last_page
: Number of last page to pass to cp
parameter to view
7- request
: request object to build URL
8- is_last_page
: True if reached last page
9- is_first_page
: True if cp is on the first page
10- total_result
: Number of records to view
11- next_pages
: List of pages to view for the next pages. Each item must pass to cp param to view the page.
12- back_pages
: List of pages to view for previous pages. Each item must pass to cp param to view the pate.
def paginate(
query_set: Union[List, QuerySet],
data_name: str,
extra: Dict = None,
default_per_page: int = 10)
get_decrypted_list:
Process request and find objects by name, decrypt and return in a list
def get_decrypted_list(
name: str,
raise_error: bool = False,
default: List = None) -> List
get_int_list:
Process the request and get a list of int
def get_int_list(
name: str,
raise_error: bool = False,
default: List = ()) -> List
get_file_size:
Convert user input data to file size. e.g. User enters : 1024 MB, you will receive : 1024 * 1024 bytes
def get_file_size(
name: str,
raise_error: bool = False,
default: float = 0) -> float
get_float:
Get "name" as float
def get_float(
name: str,
raise_error: bool = False,
default: float = 0.0) -> float
Contribute:
You're always welcome to contribute to the project! Please file an issue and send your great PR.
TODO:
Add more useful functions
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 django_crud_manager-0.10.0.tar.gz
.
File metadata
- Download URL: django_crud_manager-0.10.0.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d3f2fe7c283eb30bfe480616b57b748ae158df1c05376b10e679c3615407516 |
|
MD5 | 7b10511e26bf4fd2628452f600f2cb5e |
|
BLAKE2b-256 | 1a4a5d0674978e54ad96cda946b80fa3c4fad2914c04b9e3435d5c3c4978dec1 |
File details
Details for the file django_crud_manager-0.10.0-py3-none-any.whl
.
File metadata
- Download URL: django_crud_manager-0.10.0-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a7fa451c7bfb9bb82e7788586995799af1dac4eb7e5962e875cb6db10977d6f |
|
MD5 | 4641f19184b1d9d478d3b690dac69b98 |
|
BLAKE2b-256 | 51e720ba626185ac93a05df586ca5eabbf8e13bbeb15e944cc7214de042f77ca |