General Methods – An utility for Django Rest Framework, contains many utility functions that ease the development and improve the speed of development process.

PIPY: https://pypi.org/project/general-methods/

GITHUB: https://pypi.org/project/general-methods/

Installation

Install or add general-methods.

pip install general-methods

Utils functions

Import utils.

from general_methods import utils

Get Headers

To get headers (Dictionary type) from request.

headers = utils.get_headers(request)

Get Client IP Address

To get client IP Address.

client_ip_address = utils.get_client_ip_address(request)

Generate Random Token

To generate random alpha-numeric string. Default string length is 20.

token = utils.generate_token()  // Default token length is 20 characters.
token = utils.generate_token(length=50)  // Token length is 50 characters.

Get UUID

To get UUID string.

uuid = utils.get_uuid()

Hash algorithms.

The available algorithms are : ‘sha256’, ‘sha384’, ‘sha224’, ‘sha512’, ‘sha1’, ‘md5’

SHA1
hashed_string = utils.sha1('string_to_hash')
SHA224
hashed_string = utils.sha224('string_to_hash')
SHA256
hashed_string = utils.sha256('string_to_hash')
SHA384
hashed_string = utils.sha384('string_to_hash')
SHA512
hashed_string = utils.sha512('string_to_hash')
MD5
hashed_string = utils.md5('string_to_hash')

Encode String Data

To encode string data using django SECRET_KEY (available in settings.py file) as key to encode.

Note: If you changed the secret key of your django application then it won’t decode the string back. Use only in run time use-cases for example encode user id before sending it to client side so client will never get to know the actual user id.

encoded_data = utils.encode('MY_DATA_TO_ENCODE')

Decode String Data

To decode string data using django SECRET_KEY (available in settings.py file) as key to decode.

decoded_data = utils.decode('MY_DATA_TO_DECODE')

Is Valid JSON

To identify JSON data is valid or not. If valid, returns True else False.

is_valid_json = utils.is_valid_json({'key': 'value'})

Is Valid EMAIL ID

To identify email is valid or not. If valid, returns True else False.

is_valid_email = utils.is_valid_email('abc@mail.com')

Response functions

Note: Returns application/json response.

Import response.

from general_methods import response

Success Response 200

Returns dictionary { status: boolean, message: str, result: any }

Response code: 200

Function: response.success(‘Any Type of Data’)

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.success('Any Type of Data')  // returning response to client.

Bad Request 400

Returns dictionary { status: boolean, message: str, result: any }

Response code: 400

Function: response.bad_request(‘Username is required.’)

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.bad_request('Username is required.')  // returning response to client.

Server Error 500

Returns dictionary { status: boolean, message: str, result: any }

Response code: 500

Function: response.server_error(‘Optional Message’)

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.server_error()  // returning response to client.

No Data Found 200

Returns dictionary { status: boolean, message: str, result: any }

Response code: 200

Function: response.no_data_found()

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.no_data_found()  // returning response to client.

Parameter Missing 400

Returns dictionary { status: boolean, message: str, result: any }

Response code: 400

Function: response.param_missing(key, message)

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.param_missing('username', 'This field is required.')  // returning response to client.

Unauthorized 401

Returns dictionary { status: boolean, message: str, result: any }

Response code: 401

Function: response.unauthorized()

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.unauthorized()  // returning response to client.

Forbidden 403

Returns dictionary { status: boolean, message: str, result: any }

Response code: 403

Function: response.forbidden()

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.forbidden()  // returning response to client.

Method Not Allowed 405

Returns dictionary { status: boolean, message: str, result: any }

Response code: 405

Function: response.method_not_allowed()

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.method_not_allowed()  // returning response to client.

Not Acceptable 406

Returns dictionary { status: boolean, message: str, result: any }

Response code: 406

Function: response.not_acceptable()

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.not_acceptable()  // returning response to client

Custom Error

Returns dictionary { status: boolean, message: str, result: any }

Response code: User Specified

Function: response.custom_error(status_code: int, result)

class MyView(APIView):
    def get(self, request, *args, **kwargs):
        return response.custom_error(status_code=200, result='Login Successful.')  // returning response to client.

Exception functions

Note: Returns application/json response. Can be used in API exceptions. for example in API authorization or permission classes.

Import exceptions.

from general_methods import exceptions

Server Exception 500

Returns dictionary { status: boolean, message: str, result: any }

Response code: 500

raise exceptions.ServerException()

Unauthorized Exception 401

Returns dictionary { status: boolean, message: str, result: any }

Response code: 401

raise exceptions.UnauthorizedException()

Session Expired Exception 401

Returns dictionary { status: boolean, message: str, result: any }

Response code: 401

raise exceptions.SessionExpiredException()

Missing Header Exception 400

Returns dictionary { status: boolean, message: str, result: any }

Response code: 400

raise exceptions.MissingHeaderException()

Blocked Client Exception 401

Returns dictionary { status: boolean, message: str, result: any }

Response code: 401

raise exceptions.BlockedClientException()

Authentication Failed Exception 401

Returns dictionary { status: boolean, message: str, result: any }

Response code: 401

raise exceptions.AuthenticationFailedException()

Validators functions

Can be used in defining Models.

Import validators.

from general_methods import validators

Email Validator

Function: email_validator

class MyModel(models.Model):
    email = models.CharField(max_length=100, validators=[validators.email_validator])

Mobile Number Validator (10 Length)

Function: mobile_number_validator

class MyModel(models.Model):
    mobile = models.CharField(max_length=15, validators=[validators.mobile_number_validator])

Country Code Validator (Example: +91, +1 etc.)

Function: country_code_validator

class MyModel(models.Model):
    mobile = models.CharField(max_length=15, validators=[validators.country_code_validator])

String with Space Validator [ a-zA-Z]

Function: string_with_space_validator

class MyModel(models.Model):
    mobile = models.CharField(max_length=15, validators=[validators.string_with_space_validator])

Country Codes

All country codes are available.

Array of Objects like:

{ ‘country_code’: “IN”, ‘calling_code’: “+91”, ‘name’: ‘India (+91)’ }

Import country_codes.

from general_methods import country_codes

Dealing with forms in Django? Check the documentaion for Django Form Rendering with Crispy Forms.

Want to use TypeScript for your NodeJs project? Check the documentation for Nodejs starter using Typescript


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *