Newfies Dialer Bulk Contact Import Customization
Newfies-Dialer is a voice broadcast and SMS messaging platform that sends telephone calls and text messages at very high speed to help you grow and retain your customer base effectively.
Contact Import
Newfies-Dialer has builtin bulk contact import support. It allows importing contacts from csv file. But applies a strict fromating rule. And here comes the importance of customization.
Newfies-Dialer is a django application. So let's write a decorator function. The wrapper function must accept at least one argument HttpRequest
object. Wrapper function checks HTTP request method. If gets HTTP POST request then do some calculation & if necessary returns HttpResponse
.
def contact_import_decorator(view_func):
@wraps(view_func, assigned=available_attrs(view_func))
def wrapped_view(request, *args, **kwargs):
if request.user and request.method == 'POST':
# check for user permission
if user_limit_over(user):
# redirecting user to contact list page if dont have
# enough permission to add more contacts
return HttpResponseRedirect(redirect_url_to_contact_list)
# initializing form with POST data
form = Contact_fileImport(request.user, request.POST or None,
request.FILES or None)
# form data validation
if form.is_valid():
# freedom to apply own logic
data = add_contacts_to_db_from_parsed_data(
custom_csv_parser(request.FILES['csv_file'].file)
)
return render_to_response(
'dialer_contact/contact/import_contact.html',
data, context_instance=RequestContext(request)
)
# if form is not valid then let the main view function to
# handle the request. But dont forget to turn the request
# method to HTTP GET from POST.
request._post = QueryDict('')
request._files = MultiValueDict()
request.method = 'GET'
# calling the default view function for HTTP GET request
# or modified GET request.
return view_func(request, *args, **kwargs)
return wrapped_view
Import the decorator function in dialer_contact/views.py
and decorate contact_import
view function.
from custom_module import contact_import_decorator
@login_required
@contact_import_decorator
def contact_import(request):
....
Now got the freedom of writing custom_csv_parser
and add_contacts_to_db_from_parsed_data
function to meet the demand. Newfies-Dialer default contact_import
view function also don't have any mechanism to prevent duplicate contact addition during import.