HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/self/root/home/arjun/projects/buyercall/buyercall/blueprints/filters/__init__.py
import re
import logging as log
import jinja2
from flask import Blueprint, current_app as app
from buyercall.lib.util_crypto import AESCipher


jinja_filters = Blueprint('jinja_filters', __name__)


@jinja2.pass_context
@jinja_filters.app_template_filter()
def format_number(context, value):
    """ Formats a US telephone number for display.
        Usage:
        {{ '+11215554567'|format_number }} --> +1-121-555-4567
    """
    value = str(value)
    only_nums = re.sub('[^0-9]', '', value)
    if len(only_nums) != 11 or only_nums[0] != '1':
        return value
    return '+1-{}-{}-{}'.format(only_nums[1:4], only_nums[4:7], only_nums[7:])


def isfloat(value):
    try:
        float(value)
        return True
    except ValueError:
        return False


def isint(value):
    try:
        int(value)
        return True
    except ValueError:
        return False


@jinja2.pass_context
@jinja_filters.app_template_filter()
def decrypt_value(context, value):
    """ Decrypt a database field value.
        Usage:
        {{ 'd976p+hMx8o3aPNL6TU+eWT5iMec86Asx0iIuYfTBBwaZ9H2OY3Yf1R1YQX'|decrypt_value }} --> 720
    """
    try:
        encrypt_key = app.config['CRYPTO_SECRET_KEY']
        cipher = AESCipher(encrypt_key)
        decrypted_field = cipher.decrypt(value)
        return decrypted_field
    except:
        return value

@jinja2.pass_context
@jinja_filters.app_template_filter()
def decrypt_tos_value(context, value):
    crypto_key = app.config['CRYPTO_SECRET_KEY']
    cipher = AESCipher(crypto_key)
    decrypted_tos = ''

    if value:
        try:
            decrypted_tos = cipher.decrypt(value)
        except TypeError:
            decrypted_tos = value
        except ValueError:
            decrypted_tos = value
    else:
        decrypted_tos = ''

    if decrypted_tos is None or decrypted_tos == '':
        return ''
    elif decrypted_tos.lower() == 'yes' or decrypted_tos.lower() == 'y':
        return 'Yes'
    elif decrypted_tos.lower() == 'no' or decrypted_tos.lower() == 'n':
        return 'No'
    else:
        return decrypted_tos

@jinja2.pass_context
@jinja_filters.app_template_filter()
def tuple_to_dict(context, array_of_tuples, *args):
    array_of_dicts = []
    if array_of_tuples:
        for tuple_ in array_of_tuples:
            dict_ = {}
            dict_[tuple_[0]] = tuple_[1]
            array_of_dicts.append(dict_)
    return array_of_dicts


def format_phone_number(phone_number=''):

    if phone_number.startswith('+1'):
        try:
            formatted_number = phone_number.replace(" ", "").replace("-", "").replace("(", "").replace(")", "").replace(".", "")
        except Exception as e:
            formatted_number = ''
            log.error('The phonenumber is {}'.format(phone_number))

    elif phone_number.startswith('1'):
        formatted_number = '+{}'.format(
            phone_number.replace(" ", "").replace("-", "").replace("(", "").replace(")", "").replace(".", "")
        )
    else:
        formatted_number = '+1{}'.format(
            phone_number.replace(" ", "").replace("-", "").replace("(", "").replace(")", "").replace(".", "")
        )

    return formatted_number


def format_phone_number_bracket(phone_number):
    """ Formats a US telephone number for display.
        Usage:
        '+11215554567 --> (121) 555-4567
    """
    if phone_number:
        if phone_number.startswith('+1'):
            try:
                formatted_number = phone_number.replace("+1", "")
                only_nums = re.sub('[^0-9]', '', formatted_number)
                return '({}) {}-{}'.format(only_nums[0:3], only_nums[3:6], only_nums[6:])
            except Exception as e:
                log.error('The phone number is {}'.format(phone_number))
        elif phone_number.startswith('1'):
            try:
                formatted_number = phone_number.replace("1", "")
                only_nums = re.sub('[^0-9]', '', formatted_number)
                return '({}) {}-{}'.format(only_nums[0:3], only_nums[3:6], only_nums[6:])
            except Exception as e:
                log.error('The phone number is {}'.format(phone_number))
        else:
            try:
                only_nums = re.sub('[^0-9]', '', phone_number)
                return '({}) {}-{}'.format(only_nums[0:3], only_nums[3:6], only_nums[6:])
            except Exception as e:
                log.error('The phone number is {}'.format(phone_number))
   
    return ''