def auto_dial_disable(request):
    """10/03/19: moved from view.py"""

    if dsh_django_request.deny_it(request):
        return views.please_log_in()

    response = views.page_header('disable auto-dial')

    dsh_db_config.set('auto_dial_disable', True)
    disabled = dsh_db_config.get('auto_dial_disable')
    
    if not disabled:
        message = 'views.auto_dial_disable: unexpected error.'
        response += dsh_utils.red_error_break_msg(message)
        dsh_django_utils.error_event(message, errorLevel='CRT')
        response += views.page_footer()
        return HttpResponse(response)

    response += spool_wipe_status_message()
    dsh_django_utils.auto_schedule_delete_all()

    response += dsh_utils.black_break_msg(
        'now <font color=red><b>disabled</b></font>. ' +\
        'wanna <a href="/autodialenable">re-enable</a>?')
    
    response += views.page_footer()

    dsh_agi.report_event('auto-dial disabled.')

    return HttpResponse(response)
Esempio n. 2
0
def schedule_one_callee(request, personDshUid):
    """triggerred by clicking the little clock icon on the Person page.
    for scheduling auto-dialed call for one person."""
    
    if dsh_django_request.deny_it(request):
        return please_log_in()
    
    response = page_header('schedule auto-dialed call for one callee')
    response += '\n'

    disabled = dsh_db_config.get('auto_dial_disable')
    if disabled:
        response += dsh_utils.black_break_msg(
            'auto-dial is currently <font color=red><b>disabled</b></font>.')
        response += page_footer()
        return HttpResponse(response)
    
    persons = dvoice.db.models.Person.objects.filter(dsh_uid=personDshUid)
    if not persons or len(persons) > 1:
        message = 'views.schedule_one_callee: bad DshUid: ' + personDshUid
        response += dsh_utils.red_error_break_msg(message)
        dsh_django_utils.error_event(message, errorLevel='CRT')
        response += page_footer()
        return HttpResponse(response)

    person = persons[0]
    dsh_django_utils.check_auto_timed_calls_for_person(person)
    response += dsh_utils.black_break_msg('done.')
    response += dsh_utils.black_break_msg(
        'see the <a href=/scheduled>schedule</a>.')

    response += page_footer()
    return HttpResponse(response)
def spool_wipe_status_message():
    """called by reschedule(), auto_dial_enable(), and auto_dial_disable().
    displays the current status of spool directory wiping."""
    
    response = ''
    disableWipe = dsh_db_config.get('reschedule_wipe_disable')
    if disableWipe:
        response += dsh_utils.black_break_msg(
            'note: wiping of existing schedule is disabled.')
    return response
def chop_prefix_digits_for_local(callNum, callee):
    """
    10/02/02: chopping of the leading zero is moved from
    dsh_django_utils.generate_dot_call_file().
    also adding code to remove 0522.
    """

    dsh_common_db.init_log(quiet=True)

    #if callee.phone_std:
        #
        # 10/03/13:
        # dial as is.
        #
        #return callNum

    dsh_utils.db_print(
        'chop_prefix_digits_for_local: enter: callNum: ' + callNum, 152)
    if len(callNum) > 1 and (not callee.phone_std) and \
       (not callee.phone_landline) and callNum[0] == '0' and \
       (callNum[1] == '9' or callNum[1] == '8'):
        #
        # it looks like Asterisk doesn't like the leading 0
        # for cell phone numbers, chop it off.
        # 10/03/14:
        # now dealing with phone numbers that start with 8.
        #
        callNum = callNum[1:]
        dsh_utils.db_print(
            'chop_prefix_digits_for_local: return1: callNum: ' + callNum, 152)
        return callNum

    localLandLinePrefix = dsh_db_config.get('local_land_line_prefix')
    if not localLandLinePrefix:
        message = 'chop_prefix_digits_for_local: no local land line prefix.'
        dsh_utils.give_bad_news(message, logging.warning)
        dsh_agi.report_event(message, reportLevel='WRN')
        #
        # try_remove_prefix() will deal with null prefix
        # so no need to worry about anything else than logging message.

    #
    # 10/03/14:
    # should look at the callee.phone_landline flag.
    # but I'm not: it's still legit to look for 0522 and kill it
    # even if it was not explicitly marked as a landline.
    #
    callNum = try_remove_prefix(callNum, localLandLinePrefix)

    dsh_utils.db_print(
        'chop_prefix_digits_for_local: returned ' + callNum, 152)
    return callNum
def change_call_num_to_zoiper_test(callee, callNum):
    """
    10/04/09:
    called by dsh_django_utils.generate_dot_call_file().
    if I'm doing testing on home laptops,
    change the call number to a fellow laptop's Zoiper number.
    normally, it's just callee.phone_number.
    in the Zoiper case, it'll be something like:
    192.168.2.14:4569-753
    see models.py 10/04/09.
    """

    calleeNum = callee.phone_number
    physChannel = dsh_db_config.get('outgoing_channel')
    if not physChannel:
        return callNum
    if physChannel != dsh_config.lookup('FORWARD_OUTGOING_CHANNEL_IAX2'):
        return callNum
    zoiperNumber = dsh_db_config.get('zoiper_number')
    if not zoiperNumber:
        return callNum
    zoiperNumber = zoiperNumber.strip()
    return zoiperNumber
Esempio n. 6
0
def schedule_one_callee(request, personDshUid):
    """triggerred by clicking the little clock icon on the Person page.
    for scheduling auto-dialed call for one person."""
    
    if dsh_django_request.deny_it(request):
        return please_log_in()
    
    response = page_header('schedule auto-dialed call for one callee')
    response += '\n'

    disabled = dsh_db_config.get('auto_dial_disable')
    if disabled:
        response += dsh_utils.black_break_msg(
            'auto-dial is currently <font color=red><b>disabled</b></font>.')
        #response += page_footer()
        #return HttpResponse(response)
        #
        # 10/03/18:
        # I'm going to schedule a call anyways.
        # for sending out doctor replies even though global auto-dial
        # has been turned off.
        #
        response += dsh_utils.black_break_msg(
            "but we are scheduling a call anyhow.")
    
    persons = dv2.db.models.Person.objects.filter(dsh_uid=personDshUid)
    if not persons or len(persons) > 1:
        message = 'views.schedule_one_callee: bad DshUid: ' + personDshUid
        response += dsh_utils.red_error_break_msg(message)
        dsh_django_utils.error_event(message, errorLevel='CRT')
        response += page_footer()
        return HttpResponse(response)

    person = persons[0]
    
    scheduled,respStr = dsh_django_utils.check_auto_timed_calls_for_person(
        person)
    response += dsh_utils.black_break_msg(respStr)
    if scheduled:
        response += dsh_utils.black_break_msg('scheduled.')
    else:
        response += dsh_utils.black_break_msg('not scheduled.')
    
    response += dsh_utils.black_break_msg('done.')
    response += dsh_utils.black_break_msg(
        'see the <a href=/scheduled>schedule</a>.')

    response += page_footer()
    return HttpResponse(response)
def auto_schedule_delete_all(force=False, sessionID=None):
    """
    moved from dsh_django_utils.py
    called by views.schedule_del_all().
    force=True when initiated by views.schedule_delete_all().
    """

    disableWipe = dsh_db_config.get('reschedule_wipe_disable')
    if not force and disableWipe:
        message = 'dsh_common_agi.auto_schedule_delete_all: ' +\
                  'note: wiping of existing schedule is disabled.'
        dsh_agi.report_event(message, sessionID=sessionID)
        return dsh_utils.black_break_msg(message)

    spoolDir = dsh_common_config.lookup('ASTERISK_DOT_CALL_DIR')
    if not dsh_utils.is_valid_dir(spoolDir, silence=True):
        message = 'dsh_common_agi.auto_schedule_delete_all: ' + \
                  'spool directory invalid: ' + spoolDir
        dsh_agi.report_event(message, reportLevel = 'CRT', sessionID=sessionID)
        return dsh_utils.red_error_break_msg(message)
    
    message = 'dsh_common_agi.auto_schedule_delete_all: ' +\
              'listdir() failed: ' + spoolDir
    try:
        listing = os.listdir(spoolDir)
        listing = dsh_common_db.filter_listdir_with_dbname(listing)
    except:
        dsh_agi.report_event(message, reportLevel = 'CRT', sessionID=sessionID)
        return dsh_utils.red_error_break_msg(message)

    message = dsh_utils.black_break_msg('deleting...')
    
    for one in listing:
        full = os.path.join(spoolDir, one)
        if not one:
            continue
        if os.path.isdir(full):
            continue
        if not dsh_utils.is_valid_file(full):
            continue
        if not one.endswith('.call'):
            continue

        dsh_utils.cleanup_path(
            full, 'dsh_common_agi.auto_schedule_delete_all: ')
        message += dsh_utils.black_break_msg(full)

    message += dsh_utils.black_break_msg('done.')
    return message
def reschedule(request, personTable):
    """
    10/03/19: moved from views.py
    a combination of delete all and active."""
    
    if dsh_django_request.deny_it(request):
        return views.please_log_in()
    
    response = views.page_header('reschedule auto-dialed calls')
    dsh_common_agi.auto_schedule_delete_all()

    response += spool_wipe_status_message()

    disabled = dsh_db_config.get('auto_dial_disable')
    if disabled:
        response += dsh_utils.black_break_msg(
            'global auto-dial is currently ' +\
            '<font color=red><b>disabled</b></font>.')
        response += dsh_utils.black_break_msg(
            'processing people in the current dial set...')
        response += dsh_common_selection.reschedule_current_dial_set(
            personTable)
    else:
        response += dsh_utils.black_break_msg(
            'global auto-dial is currently ' +\
            '<font color=green><b>enabled</b></font>.')
        response += dsh_utils.black_break_msg(
            'processing all people...')
        dsh_django_utils.check_auto_timed_calls_for_all_persons(noLogging=True)

    response += dsh_utils.black_break_msg('done.')
    response += dsh_utils.black_break_msg(
        'see the <a href=/scheduled>schedule</a>.')

    response += views.page_footer()

    dsh_agi.report_event(
        'reschedule triggered by web interface.',
        action='RESC')
    
    return HttpResponse(response)
def auto_dial_status(request):
    """
    10/03/19: moved from views.py"""
    
    response = views.page_header('auto-dial status')

    response += spool_wipe_status_message()

    disabled = dsh_db_config.get('auto_dial_disable')
    if disabled:
        response += dsh_utils.black_break_msg(
            'auto-dial is currently <font color=red><b>disabled</b></font>.')
        response += dsh_utils.black_break_msg(
            '<a href="/autodialenable">enable</a>?')
    else:
        response += dsh_utils.black_break_msg(
            'auto-dial is currently <font color=green><b>enabled</b></font>.')
        response += dsh_utils.black_break_msg(
            '<a href="/autodialdisable">disable</a>?')
    
    response += views.page_footer()
    return HttpResponse(response)
def reschedule_script_call(personTable):
    """
    10/03/22:
    called by dsh_reschedule.py
    which is in turn invoked by crontab
    """

    sessionID = dsh_common_db.make_session_id()
    dsh_common_agi.auto_schedule_delete_all(sessionID=sessionID)

    disabled = dsh_db_config.get('auto_dial_disable')
    if disabled:
        count = reschedule_current_dial_set(
            personTable, tinyResponse=True, sessionID=sessionID)
        message = 'dsh_reschedule.py: processing current dial set: ' +\
                  str(count)
        dsh_utils.give_news(message, logging.info)
    else:
        dsh_django_utils.check_auto_timed_calls_for_all_persons(noLogging=True)
        
    message = 'triggered by dsh_reschedule.py.  done'
    dsh_agi.report_event(message, action='RESC', sessionID=sessionID)
    dsh_utils.give_news(message, logging.info)