예제 #1
0
    def update(self, instance: Client, validated_data: Dict):
        name_slug = re.sub(r'\W', '-', validated_data['name'].lower())
        client_with_slug: Client = Client.objects.filter(
            name_slug=name_slug).first()  # type: ignore
        if client_with_slug is not None and instance.id != client_with_slug.id:
            raise serializers.ValidationError(
                'Client with name already exists')  # type: ignore

        instance.name = validated_data['name']
        instance.address = validated_data['address']
        instance.client_industry_id = validated_data[
            'client_industry_id']  # type: ignore
        instance.save()
        return instance
예제 #2
0
def edit_page_post(client_instance, request):  # TeamRome
    """ views.py ClientEditMain(TemplateView) POST method. """
    """ Входные данные для сохранения: """
    user = request.user
    user_name = check_input_str(request.POST['client_first_name'])
    last_name = check_input_str(request.POST['client_last_name'])
    patronymic = check_input_str(request.POST['client_middle_name'])
    sex = Sex.objects.get(
        sex_word=request.POST['sex']) if request.POST['sex'] else None
    date = request.POST['date_born'] if request.POST['date_born'] else None
    citizenship = Citizenship.objects.get(
        country_word=request.POST['citizenship']
    ) if request.POST['citizenship'] else None
    family_state = FamilyState.objects.get(
        state_word=request.POST['family_state']
    ) if request.POST['family_state'] else None
    children = Children.objects.get(children_word=request.POST['children']
                                    ) if request.POST['children'] else None
    country = Citizenship.objects.get(country_word=request.POST['country']
                                      ) if request.POST['country'] else None
    city = City.objects.get(
        city_word=request.POST['city']) if request.POST['city'] else None
    street = check_input_str(request.POST['street'])
    house = check_home_number(request.POST['house'])
    flat = check_home_number(request.POST['flat'])
    telegram_link = check_telegram(request.POST['telegram_link'])
    skype = check_input_str(request.POST['skype_id'])
    email = request.POST['email']
    link_linkedin = request.POST['link_linkedin']
    state = State.objects.get(
        state_word=request.POST['state']) if request.POST['state'] else None
    # print(user_name, last_name, patronymic, sex, date, citizenship, family_state, children, country, city,
    #       street, house, flat, telegram_link, skype, email, link_linkedin, state)

    if not client_instance:
        """ Если карточки нету - создаём. """
        print('\tUser Profile DO NOT exists - creating!')

        client = Client(
            user_client=user,
            patronymic=patronymic,
            sex=sex,
            date_born=date,
            citizenship=citizenship,
            family_state=family_state,
            children=children,
            country=country,
            city=city,
            street=street,
            house=house,
            flat=flat,
            telegram_link=telegram_link,
            skype=skype,
            link_linkedin=link_linkedin,
            state=state,
        )
        client.save()
    else:
        """ Если карточка есть - достаём из БД Объект = Клиент_id.
        Перезаписываем (изменяем) существующие данныев. """
        print('\tUser Profile exists - Overwriting user data')

        user_model = UserModel.objects.get(id=client_instance.user_client_id)
        user_model.first_name = user_name
        user_model.last_name = last_name
        user_model.email = email
        user_model.save()

        client = client_instance
        client.name = user_name
        client.last_name = last_name
        client.patronymic = patronymic
        client.sex = sex
        client.date_born = date
        client.citizenship = citizenship
        client.family_state = family_state
        client.children = children
        client.country = country
        client.city = city
        client.street = street
        client.house = house
        client.flat = flat
        client.telegram_link = telegram_link
        client.skype = skype
        client.email = email
        client.link_linkedin = link_linkedin
        client.state = state
        client.save()
    """ Сохранение телефонных номеров клиента """
    tel = request.POST.getlist('phone')
    if any(tel):
        Telephone.objects.filter(client_phone=client_instance).delete()
    for t in tel:
        t = check_phone(t)
        if t:
            phone = Telephone(
                client_phone=client,
                telephone_number=t,
            )
            phone.save()
def asset_tracking_event(request):
    encoded_token = request.body.decode("utf-8")
    payload = jwt.decode(encoded_token,
                         'fe155688cf6e4245a46b0cc4bdd4c56b',
                         algorithms=['HS256'])
    event = payload['eventName']
    print(payload)
    if event == 'Webhook_Subscription':
        event_object = payload['eventArgs']['object']
        customer_id = payload['eventArgs']['entry'][0]['uuid']
        customer_resource_url = payload['eventArgs']['resource_url']
        #token = payload['auth']['accessToken'] No longer supported
        if event_object == 'COMPANY':
            client = Client(client_uuid=customer_id,
                            resource_url=customer_resource_url)
            name = process_client(customer_resource_url)['name']
            print(name)
            client.name = name
            client.save()
            print("Client saved")
            return HttpResponse("Client saved")
        elif event_object == 'JOB':
            process_job(customer_resource_url)
            return JsonResponse({'Status': 'Data saved'})
        elif event_object == 'TASK':
            process_task(customer_resource_url)
            return HttpResponse("OK")
    elif event == 'client_systems_event':
        try:
            systems = System.objects.filter(
                client__client_uuid=payload['eventArgs']['companyUUID'])
            rendered = render_to_string('sm8event/event.html',
                                        {'systems': systems})
            return JsonResponse({'eventResponse': rendered})
        except ObjectDoesNotExist:
            return JsonResponse(
                {'eventResponse': 'No system(s) recorded for client.'})
    elif event == 'system_reports_event':
        total_jobs = Job.objects.filter(
            created__month=datetime.datetime.now().month).count()
        total_maintenance_jobs = Job.objects.filter(
            created__month=datetime.datetime.now().month).filter(
                job_category="Maintenance").count()
        total_clients_contract = System.objects.filter(
            date_created__month=datetime.datetime.now().month).filter(
                contracted="Y").count()
        total_clients_non_contract = System.objects.filter(
            date_created__month=datetime.datetime.now().month).filter(
                contracted="N").count()
        maintenance_hit_rate = (total_maintenance_jobs / total_jobs *
                                100) if total_jobs != 0 else 0
        access_control_audible = System.objects.filter(
            system_type="AC").filter(monitoring_type="A").count()
        access_control_monitored = System.objects.filter(
            system_type="AC").filter(monitoring_type="M").count()
        access_control_dualcom = System.objects.filter(
            system_type="AC").filter(monitoring_type="D").count()
        access_control_digi = System.objects.filter(system_type="AC").filter(
            monitoring_type="DI").count()
        access_control_digi_plus = System.objects.filter(
            system_type="AC").filter(monitoring_type="DIP").count()
        access_control_digi_air = System.objects.filter(
            system_type="AC").filter(monitoring_type="DIA").count()
        access_control_redcare_classic = System.objects.filter(
            system_type="AC").filter(monitoring_type="RC").count()
        access_control_redcare_secure = System.objects.filter(
            system_type="AC").filter(monitoring_type="RS").count()
        access_control_none = System.objects.filter(system_type="AC").filter(
            monitoring_type="N").count()
        access_control_total = access_control_audible + access_control_monitored + access_control_dualcom + access_control_digi + access_control_digi_plus + access_control_digi_air + access_control_redcare_classic + access_control_redcare_secure + access_control_none
        alarm_audible = System.objects.filter(system_type="AL").filter(
            monitoring_type="A").count()
        alarm_monitored = System.objects.filter(system_type="AL").filter(
            monitoring_type="M").count()
        alarm_dualcom = System.objects.filter(system_type="AL").filter(
            monitoring_type="D").count()
        alarm_digi = System.objects.filter(system_type="AL").filter(
            monitoring_type="DI").count()
        alarm_digi_plus = System.objects.filter(system_type="AL").filter(
            monitoring_type="DIP").count()
        alarm_digi_air = System.objects.filter(system_type="AL").filter(
            monitoring_type="DIA").count()
        alarm_redcare_classic = System.objects.filter(system_type="AL").filter(
            monitoring_type="RC").count()
        alarm_redcare_secure = System.objects.filter(system_type="AL").filter(
            monitoring_type="RS").count()
        alarm_none = System.objects.filter(system_type="AL").filter(
            monitoring_type="N").count()
        alarm_total = alarm_audible + alarm_monitored + alarm_dualcom + alarm_digi + alarm_digi_plus + alarm_digi_air + alarm_redcare_classic + alarm_redcare_secure + alarm_none
        cctv_audible = System.objects.filter(system_type="CT").filter(
            monitoring_type="A").count()
        cctv_monitored = System.objects.filter(system_type="CT").filter(
            monitoring_type="M").count()
        cctv_dualcom = System.objects.filter(system_type="CT").filter(
            monitoring_type="D").count()
        cctv_digi = System.objects.filter(system_type="CT").filter(
            monitoring_type="DI").count()
        cctv_digi_plus = System.objects.filter(system_type="CT").filter(
            monitoring_type="DIP").count()
        cctv_digi_air = System.objects.filter(system_type="CT").filter(
            monitoring_type="DIA").count()
        cctv_redcare_classic = System.objects.filter(system_type="CT").filter(
            monitoring_type="RC").count()
        cctv_redcare_secure = System.objects.filter(system_type="CT").filter(
            monitoring_type="RS").count()
        cctv_none = System.objects.filter(system_type="CT").filter(
            monitoring_type="N").count()
        cctv_total = cctv_audible + cctv_monitored + cctv_dualcom + cctv_digi + cctv_digi_plus + cctv_digi_air + cctv_redcare_classic + cctv_redcare_secure + cctv_none
        door_entry_audible = System.objects.filter(system_type="DE").filter(
            monitoring_type="A").count()
        door_entry_monitored = System.objects.filter(system_type="DE").filter(
            monitoring_type="M").count()
        door_entry_dualcom = System.objects.filter(system_type="DE").filter(
            monitoring_type="D").count()
        door_entry_digi = System.objects.filter(system_type="DE").filter(
            monitoring_type="DI").count()
        door_entry_digi_plus = System.objects.filter(system_type="DE").filter(
            monitoring_type="DIP").count()
        door_entry_digi_air = System.objects.filter(system_type="DE").filter(
            monitoring_type="DIA").count()
        door_entry_redcare_classic = System.objects.filter(
            system_type="DE").filter(monitoring_type="RC").count()
        door_entry_redcare_secure = System.objects.filter(
            system_type="DE").filter(monitoring_type="RS").count()
        door_entry_none = System.objects.filter(system_type="DE").filter(
            monitoring_type="N").count()
        door_entry_total = door_entry_audible + door_entry_monitored + door_entry_dualcom + door_entry_digi + door_entry_digi_plus + door_entry_digi_air + door_entry_redcare_classic + door_entry_redcare_secure + door_entry_none
        emergency_lights_audible = System.objects.filter(
            system_type="EL").filter(monitoring_type="A").count()
        emergency_lights_monitored = System.objects.filter(
            system_type="EL").filter(monitoring_type="M").count()
        emergency_lights_dualcom = System.objects.filter(
            system_type="EL").filter(monitoring_type="D").count()
        emergency_lights_digi = System.objects.filter(system_type="EL").filter(
            monitoring_type="DI").count()
        emergency_lights_digi_plus = System.objects.filter(
            system_type="EL").filter(monitoring_type="DIP").count()
        emergency_lights_digi_air = System.objects.filter(
            system_type="EL").filter(monitoring_type="DIA").count()
        emergency_lights_redcare_classic = System.objects.filter(
            system_type="EL").filter(monitoring_type="RC").count()
        emergency_lights_redcare_secure = System.objects.filter(
            system_type="EL").filter(monitoring_type="RS").count()
        emergency_lights_none = System.objects.filter(system_type="EL").filter(
            monitoring_type="N").count()
        emergency_lights_total = emergency_lights_audible + emergency_lights_monitored + emergency_lights_dualcom + emergency_lights_digi + emergency_lights_digi_plus + emergency_lights_digi_air + emergency_lights_redcare_classic + emergency_lights_redcare_secure + emergency_lights_none
        fire_alarm_audible = System.objects.filter(system_type="FA").filter(
            monitoring_type="A").count()
        fire_alarm_monitored = System.objects.filter(system_type="FA").filter(
            monitoring_type="M").count()
        fire_alarm_dualcom = System.objects.filter(system_type="FA").filter(
            monitoring_type="D").count()
        fire_alarm_digi = System.objects.filter(system_type="FA").filter(
            monitoring_type="DI").count()
        fire_alarm_digi_plus = System.objects.filter(system_type="FA").filter(
            monitoring_type="DIP").count()
        fire_alarm_digi_air = System.objects.filter(system_type="FA").filter(
            monitoring_type="DIA").count()
        fire_alarm_redcare_classic = System.objects.filter(
            system_type="FA").filter(monitoring_type="RC").count()
        fire_alarm_redcare_secure = System.objects.filter(
            system_type="FA").filter(monitoring_type="RS").count()
        fire_alarm_none = System.objects.filter(system_type="FA").filter(
            monitoring_type="N").count()
        fire_alarm_total = fire_alarm_audible + fire_alarm_monitored + fire_alarm_dualcom + fire_alarm_digi + fire_alarm_digi_plus + fire_alarm_digi_air + fire_alarm_redcare_classic + fire_alarm_redcare_secure + fire_alarm_none
        fire_extinguisher_audible = System.objects.filter(
            system_type="FE").filter(monitoring_type="A").count()
        fire_extinguisher_monitored = System.objects.filter(
            system_type="FE").filter(monitoring_type="M").count()
        fire_extinguisher_dualcom = System.objects.filter(
            system_type="FE").filter(monitoring_type="D").count()
        fire_extinguisher_digi = System.objects.filter(
            system_type="FE").filter(monitoring_type="DI").count()
        fire_extinguisher_digi_plus = System.objects.filter(
            system_type="FE").filter(monitoring_type="DIP").count()
        fire_extinguisher_digi_air = System.objects.filter(
            system_type="FE").filter(monitoring_type="DIA").count()
        fire_extinguisher_redcare_classic = System.objects.filter(
            system_type="FE").filter(monitoring_type="RC").count()
        fire_extinguisher_redcare_secure = System.objects.filter(
            system_type="FE").filter(monitoring_type="RS").count()
        fire_extinguisher_none = System.objects.filter(
            system_type="FE").filter(monitoring_type="N").count()
        fire_extinguisher_total = fire_extinguisher_audible + fire_extinguisher_monitored + fire_extinguisher_dualcom + fire_extinguisher_digi + fire_extinguisher_digi_plus + fire_extinguisher_digi_air + fire_extinguisher_redcare_classic + fire_extinguisher_redcare_secure + fire_extinguisher_none
        key_holding_audible = System.objects.filter(system_type="KE").filter(
            monitoring_type="A").count()
        key_holding_monitored = System.objects.filter(system_type="KE").filter(
            monitoring_type="M").count()
        key_holding_dualcom = System.objects.filter(system_type="KE").filter(
            monitoring_type="D").count()
        key_holding_digi = System.objects.filter(system_type="KE").filter(
            monitoring_type="DI").count()
        key_holding_digi_plus = System.objects.filter(system_type="KE").filter(
            monitoring_type="DIP").count()
        key_holding_digi_air = System.objects.filter(system_type="KE").filter(
            monitoring_type="DIA").count()
        key_holding_redcare_classic = System.objects.filter(
            system_type="KE").filter(monitoring_type="RC").count()
        key_holding_redcare_secure = System.objects.filter(
            system_type="KE").filter(monitoring_type="RS").count()
        key_holding_none = System.objects.filter(system_type="KE").filter(
            monitoring_type="N").count()
        key_holding_total = key_holding_audible + key_holding_monitored + key_holding_dualcom + key_holding_digi + key_holding_digi_plus + key_holding_digi_air + key_holding_redcare_classic + key_holding_redcare_secure + key_holding_none
        nurse_call_audible = System.objects.filter(system_type="NC").filter(
            monitoring_type="A").count()
        nurse_call_monitored = System.objects.filter(system_type="NC").filter(
            monitoring_type="M").count()
        nurse_call_dualcom = System.objects.filter(system_type="NC").filter(
            monitoring_type="D").count()
        nurse_call_digi = System.objects.filter(system_type="NC").filter(
            monitoring_type="DI").count()
        nurse_call_digi_plus = System.objects.filter(system_type="NC").filter(
            monitoring_type="DIP").count()
        nurse_call_digi_air = System.objects.filter(system_type="NC").filter(
            monitoring_type="DIA").count()
        nurse_call_redcare_classic = System.objects.filter(
            system_type="NC").filter(monitoring_type="RC").count()
        nurse_call_redcare_secure = System.objects.filter(
            system_type="NC").filter(monitoring_type="RS").count()
        nurse_call_none = System.objects.filter(system_type="NC").filter(
            monitoring_type="N").count()
        nurse_call_total = nurse_call_audible + nurse_call_monitored + nurse_call_dualcom + nurse_call_digi + nurse_call_digi_plus + nurse_call_digi_air + nurse_call_redcare_classic + nurse_call_redcare_secure + nurse_call_none
        refuge_audible = System.objects.filter(system_type="R").filter(
            monitoring_type="A").count()
        refuge_monitored = System.objects.filter(system_type="R").filter(
            monitoring_type="M").count()
        refuge_dualcom = System.objects.filter(system_type="R").filter(
            monitoring_type="D").count()
        refuge_digi = System.objects.filter(system_type="R").filter(
            monitoring_type="DI").count()
        refuge_digi_plus = System.objects.filter(system_type="R").filter(
            monitoring_type="DIP").count()
        refuge_digi_air = System.objects.filter(system_type="R").filter(
            monitoring_type="DIA").count()
        refuge_redcare_classic = System.objects.filter(system_type="R").filter(
            monitoring_type="RC").count()
        refuge_redcare_secure = System.objects.filter(system_type="R").filter(
            monitoring_type="RS").count()
        refuge_none = System.objects.filter(system_type="R").filter(
            monitoring_type="N").count()
        refuge_total = refuge_audible + refuge_monitored + refuge_dualcom + refuge_digi_plus + refuge_digi_air + refuge_redcare_classic + refuge_redcare_secure + refuge_none
        misc_audible = System.objects.filter(system_type="M").filter(
            monitoring_type="A").count()
        misc_monitored = System.objects.filter(system_type="M").filter(
            monitoring_type="M").count()
        misc_dualcom = System.objects.filter(system_type="M").filter(
            monitoring_type="D").count()
        misc_digi = System.objects.filter(system_type="M").filter(
            monitoring_type="DI").count()
        misc_digi_plus = System.objects.filter(system_type="M").filter(
            monitoring_type="DIP").count()
        misc_digi_air = System.objects.filter(system_type="M").filter(
            monitoring_type="DIA").count()
        misc_redcare_classic = System.objects.filter(system_type="M").filter(
            monitoring_type="RC").count()
        misc_redcare_secure = System.objects.filter(system_type="M").filter(
            monitoring_type="RS").count()
        misc_none = System.objects.filter(system_type="M").filter(
            monitoring_type="N").count()
        misc_total = misc_audible + misc_monitored + misc_dualcom + misc_digi + misc_digi_plus + misc_digi_air + misc_redcare_classic + misc_redcare_secure + misc_none
        response_time = Task.objects.aggregate(Avg('job_task_time_difference'),
                                               Max('job_task_time_difference'),
                                               Min('job_task_time_difference'))
        print(response_time)
        rendered = render_to_string(
            'sm8event/report.html', {
                'total_jobs': total_jobs,
                'total_maintenance_jobs': total_maintenance_jobs,
                'total_clients_contract': total_clients_contract,
                'total_clients_non_contract': total_clients_non_contract,
                'maintenance_hit_rate': maintenance_hit_rate,
                'access_control_audible': access_control_audible,
                'access_control_monitored': access_control_monitored,
                'access_control_dualcom': access_control_dualcom,
                'access_control_digi': access_control_digi,
                'access_control_digi_plus': access_control_digi_plus,
                'access_control_digi_air': access_control_digi_air,
                'access_control_redcare_classic':
                access_control_redcare_classic,
                'access_control_redcare_secure': access_control_redcare_secure,
                'access_control_none': access_control_none,
                'access_control_total': access_control_total,
                'alarm_monitored': alarm_monitored,
                'alarm_audible': alarm_audible,
                'alarm_dualcom': alarm_dualcom,
                'alarm_digi': alarm_digi,
                'alarm_digi_plus': alarm_digi_plus,
                'alarm_digi_air': alarm_digi_air,
                'alarm_redcare_classic': alarm_redcare_classic,
                'alarm_redcare_secure': alarm_redcare_secure,
                'alarm_none': alarm_none,
                'alarm_total': alarm_total,
                'cctv_monitored': cctv_monitored,
                'cctv_audible': cctv_audible,
                'cctv_dualcom': cctv_dualcom,
                'cctv_digi': cctv_digi,
                'cctv_digi_plus': cctv_digi_plus,
                'cctv_digi_air': cctv_digi_air,
                'cctv_redcare_classic': cctv_redcare_classic,
                'cctv_redcare_secure': cctv_redcare_secure,
                'cctv_none': cctv_none,
                'cctv_total': cctv_total,
                'door_entry_audible': door_entry_audible,
                'door_entry_monitored': door_entry_monitored,
                'door_entry_dualcom': door_entry_dualcom,
                'door_entry_digi': door_entry_digi,
                'door_entry_digi_plus': door_entry_digi_plus,
                'door_entry_digi_air': door_entry_digi_air,
                'door_entry_redcare_classic': door_entry_redcare_classic,
                'door_entry_redcare_secure': door_entry_redcare_secure,
                'door_entry_none': door_entry_none,
                'door_entry_total': door_entry_total,
                'emergency_lights_audible': emergency_lights_audible,
                'emergency_lights_monitored': emergency_lights_monitored,
                'emergency_lights_dualcom': emergency_lights_dualcom,
                'emergency_lights_digi': emergency_lights_digi,
                'emergency_lights_digi_plus': emergency_lights_digi_plus,
                'emergency_lights_digi_air': emergency_lights_digi_air,
                'emergency_lights_redcare_classic':
                emergency_lights_redcare_classic,
                'emergency_lights_redcare_secure':
                emergency_lights_redcare_secure,
                'emergency_lights_none': emergency_lights_none,
                'emergency_lights_total': emergency_lights_total,
                'fire_alarm_audible': fire_alarm_audible,
                'fire_alarm_monitored': fire_alarm_monitored,
                'fire_alarm_dualcom': fire_alarm_dualcom,
                'fire_alarm_digi': fire_alarm_digi,
                'fire_alarm_digi_plus': fire_alarm_digi_plus,
                'fire_alarm_digi_air': fire_alarm_digi_air,
                'fire_alarm_redcare_classic': fire_alarm_redcare_classic,
                'fire_alarm_redcare_secure': fire_alarm_redcare_secure,
                'fire_alarm_none': fire_alarm_none,
                'fire_alarm_total': fire_alarm_total,
                'fire_extinguisher_audible': fire_extinguisher_audible,
                'fire_extinguisher_monitored': fire_extinguisher_monitored,
                'fire_extinguisher_dualcom': fire_extinguisher_dualcom,
                'fire_extinguisher_digi': fire_extinguisher_digi,
                'fire_extinguisher_digi_plus': fire_extinguisher_digi_plus,
                'fire_extinguisher_digi_air': fire_extinguisher_digi_air,
                'fire_extinguisher_redcare_classic':
                fire_extinguisher_redcare_classic,
                'fire_extinguisher_redcare_secure':
                fire_extinguisher_redcare_secure,
                'fire_extinguisher_none': fire_extinguisher_none,
                'fire_extinguisher_total': fire_extinguisher_total,
                'key_holding_audible': key_holding_audible,
                'key_holding_monitored': key_holding_monitored,
                'key_holding_dualcom': key_holding_dualcom,
                'key_holding_digi': key_holding_digi,
                'key_holding_digi_plus': key_holding_digi_plus,
                'key_holding_digi_air': key_holding_digi_air,
                'key_holding_redcare_classic': key_holding_redcare_classic,
                'key_holding_redcare_secure': key_holding_redcare_secure,
                'key_holding_none': key_holding_none,
                'key_holding_total': key_holding_total,
                'nurse_call_audible': nurse_call_audible,
                'nurse_call_monitored': nurse_call_monitored,
                'nurse_call_dualcom': nurse_call_dualcom,
                'nurse_call_digi': nurse_call_digi,
                'nurse_call_digi_plus': nurse_call_digi_plus,
                'nurse_call_digi_air': nurse_call_digi_air,
                'nurse_call_redcare_classic': nurse_call_redcare_classic,
                'nurse_call_redcare_secure': nurse_call_redcare_secure,
                'nurse_call_none': nurse_call_none,
                'nurse_call_total': nurse_call_total,
                'refuge_audible': refuge_audible,
                'refuge_monitored': refuge_monitored,
                'refuge_dualcom': refuge_dualcom,
                'refuge_digi': refuge_digi,
                'refuge_digi_plus': refuge_digi_plus,
                'refuge_digi_air': refuge_digi_air,
                'refuge_redcare_classic': refuge_redcare_classic,
                'refuge_redcare_secure': refuge_redcare_secure,
                'refuge_none': refuge_none,
                'refuge_total': refuge_total,
                'misc_audible': misc_audible,
                'misc_monitored': misc_monitored,
                'misc_dualcom': misc_dualcom,
                'misc_digi': misc_digi,
                'misc_digi_plus': misc_digi_plus,
                'misc_digi_air': misc_digi_air,
                'misc_redcare_classic': misc_redcare_classic,
                'misc_redcare_secure': misc_redcare_secure,
                'misc_none': misc_none,
                'misc_total': misc_total,
                'response_time': response_time
            })
        return JsonResponse({'eventResponse': rendered})