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 ''