def handle(self, *args, **kwargs):

        for event in HotlineEvent.objects.all():
            print(event.identity)
            event.operator = operator_from_mali_number(event.identity)
            event.save()

        print("End of Updated.")
def handle_sms_call(payload, event_type=None):

    identity = normalize_phone_number(payload.get('from').strip())
    if not is_valid_number(identity) or number_is_blacklisted(identity):
        return

    message = payload.get('message').strip()
    if not len(message):
        message = None

    if event_type is None:
        event_type = event_type_from_message(message)

    phone_number = payload.get('phone_number')
    timestamp = payload.get('timestamp')
    received_on = datetime_from_timestamp(timestamp)
    operator = operator_from_mali_number(identity)

    try:
        existing = HotlineEvent.objects.get(identity=identity,
                                            processed=False)
    except HotlineEvent.DoesNotExist:
        existing = None

    # if same number calls again before previous request has been treated
    # we just update the date of the event.
    if existing:
        print(existing)
        existing.received_on = received_on
        existing.save()
        return

    try:
        event = HotlineEvent.objects.create(
            identity=identity,
            event_type=event_type,
            hotline_number=phone_number,
            received_on=received_on,
            sms_message=message,
            operator=operator)
    except:
        return

    if event.event_type == HotlineEvent.TYPE_SMS_USHAHIDI:
        event.processed = False
        make_ushahidi_request(event)

    send_notification(event)
    return
def handle_sms_call(payload, event_type=None):

    identity = normalize_phone_number(payload.get('from').strip())
    if not is_valid_number(identity) or number_is_blacklisted(identity):
        return

    message = payload.get('message').strip()
    if not len(message):
        message = None

    if event_type is None:
        event_type = event_type_from_message(message)

    phone_number = payload.get('phone_number')
    timestamp = payload.get('timestamp')
    received_on = datetime_from_timestamp(timestamp)
    operator = operator_from_mali_number(identity)

    try:
        existing = HotlineEvent.objects.get(identity=identity, processed=False)
    except HotlineEvent.DoesNotExist:
        existing = None

    # if same number calls again before previous request has been treated
    # we just update the date of the event.
    if existing:
        print(existing)
        existing.received_on = received_on
        existing.save()
        return

    try:
        event = HotlineEvent.objects.create(identity=identity,
                                            event_type=event_type,
                                            hotline_number=phone_number,
                                            received_on=received_on,
                                            sms_message=message,
                                            operator=operator)
    except:
        return

    if event.event_type == HotlineEvent.TYPE_SMS_USHAHIDI:
        event.processed = False
        make_ushahidi_request(event)

    send_notification(event)
    return
def reply_with_phone_number(payload):
    end_user_phone = payload.get('from')
    if end_user_phone is not None:
        return get_phone_number_for(operator_from_mali_number(end_user_phone))
    return None
    # we don't store outgoing messages for now
    return


def handle_device_status_change(payload):
    # we don't track device changes for now
    return


def check_meta_data(payload):
    # we don't track device changes for now
    return


def reply_with_phone_number(payload):
    end_user_phone = payload.get('from')
    if end_user_phone is not None:
        return get_phone_number_for(operator_from_mali_number(end_user_phone))
    return None


def get_phone_number_for(operator):
    return random.choice(INCOMING_NUMBERS_BY_OPERATOR.get(operator, [None])) or None

for number in settings.FONDA_INCOMING_NUMBERS:
    operator = operator_from_mali_number(number)
    if not operator in INCOMING_NUMBERS_BY_OPERATOR.keys():
        INCOMING_NUMBERS_BY_OPERATOR.update({operator: []})
    INCOMING_NUMBERS_BY_OPERATOR[operator].append(number)
    INCOMING_NUMBERS_WITH_OPERATOR.update({number: operator})
def reply_with_phone_number(payload):
    end_user_phone = payload.get('from')
    if end_user_phone is not None:
        return get_phone_number_for(operator_from_mali_number(end_user_phone))
    return None

def handle_device_status_change(payload):
    # we don't track device changes for now
    return


def check_meta_data(payload):
    # we don't track device changes for now
    return


def reply_with_phone_number(payload):
    end_user_phone = payload.get('from')
    if end_user_phone is not None:
        return get_phone_number_for(operator_from_mali_number(end_user_phone))
    return None


def get_phone_number_for(operator):
    return random.choice(INCOMING_NUMBERS_BY_OPERATOR.get(operator,
                                                          [None])) or None


for number in settings.FONDA_INCOMING_NUMBERS:
    operator = operator_from_mali_number(number)
    if not operator in INCOMING_NUMBERS_BY_OPERATOR.keys():
        INCOMING_NUMBERS_BY_OPERATOR.update({operator: []})
    INCOMING_NUMBERS_BY_OPERATOR[operator].append(number)
    INCOMING_NUMBERS_WITH_OPERATOR.update({number: operator})