示例#1
0
urlpatterns = [

    # Router API urls
    url(r'^api/', include(router.urls)),
    url(r'^docs/', login_required(schema_view)),
    url(r'^api-auth/',
        include('rest_framework.urls', namespace='rest_framework')),

    # Add mqtt_password to api
    url(r'^api/user/(?P<user__username>[\w.@+-]+)/password/$',
        PasswordView.as_view(),
        name='mqtt_password'),

    # Add mqtt_settings to api
    url(r'^api/settings/$', SettingsView.as_view(), name='mqtt_settings'),

    # ambulance
    url(r'^ambulance/', include('ambulance.urls')),

    # ambulance
    url(r'^hospital/', include('hospital.urls')),

    # login
    url(r'^auth/', include('login.urls')),

    # equipment
    url(r'^equipment/', include('equipment.urls')),

    # admin
    url(r'^admin/', admin.site.urls),
示例#2
0
    def test_mqttseed(self):

        # seed
        from django.core import management

        management.call_command('mqttseed', verbosity=1)

        print('>> Processing messages...')

        # Start client as admin
        broker = {
            'HOST': 'localhost',
            'PORT': 1883,
            'KEEPALIVE': 60,
            'CLEAN_SESSION': True
        }
        broker.update(settings.MQTT)
        broker['CLIENT_ID'] = 'test_mqttseed_admin'

        client = MQTTTestClient(broker)
        self.is_connected(client)

        qos = 0

        # Expect settings
        client.expect('settings',
                      JSONRenderer().render(SettingsView.get_settings()), qos)

        # Expect all ambulances
        for ambulance in Ambulance.objects.all():
            client.expect(
                'ambulance/{}/data'.format(ambulance.id),
                JSONRenderer().render(AmbulanceSerializer(ambulance).data),
                qos)

        # Expect all hospitals
        for hospital in Hospital.objects.all():
            client.expect(
                'hospital/{}/data'.format(hospital.id),
                JSONRenderer().render(HospitalSerializer(hospital).data), qos)
            hospital_equipment = hospital.hospitalequipment_set.values(
                'equipment')
            equipment = Equipment.objects.filter(id__in=hospital_equipment)
            client.expect(
                'hospital/{}/metadata'.format(hospital.id),
                JSONRenderer().render(
                    EquipmentSerializer(equipment, many=True).data), qos)

        # Expect all hospital equipments
        for e in HospitalEquipment.objects.all():
            client.expect(
                'hospital/{}/equipment/{}/data'.format(e.hospital.id,
                                                       e.equipment.name),
                JSONRenderer().render(HospitalEquipmentSerializer(e).data),
                qos)

        # Expect all profiles
        for obj in Profile.objects.all():
            client.expect(
                'user/{}/profile'.format(obj.user.username),
                JSONRenderer().render(ExtendedProfileSerializer(obj).data),
                qos)

        # Subscribed?
        self.is_subscribed(client)

        # Done?
        self.loop(client)
        client.wait()

        # Repeat with same client

        client = MQTTTestClient(broker)
        self.is_connected(client)

        qos = 0

        # Expect settings
        client.expect('settings',
                      JSONRenderer().render(SettingsView.get_settings()), qos)

        # Expect all ambulances
        for ambulance in Ambulance.objects.all():
            client.expect(
                'ambulance/{}/data'.format(ambulance.id),
                JSONRenderer().render(AmbulanceSerializer(ambulance).data),
                qos)

        # Expect all hospitals
        for hospital in Hospital.objects.all():
            client.expect(
                'hospital/{}/data'.format(hospital.id),
                JSONRenderer().render(HospitalSerializer(hospital).data), qos)
            hospital_equipment = hospital.hospitalequipment_set.values(
                'equipment')
            equipment = Equipment.objects.filter(id__in=hospital_equipment)
            client.expect(
                'hospital/{}/metadata'.format(hospital.id),
                JSONRenderer().render(
                    EquipmentSerializer(equipment, many=True).data), qos)

        # Expect all hospital equipments
        for e in HospitalEquipment.objects.all():
            client.expect(
                'hospital/{}/equipment/{}/data'.format(e.hospital.id,
                                                       e.equipment.name),
                JSONRenderer().render(HospitalEquipmentSerializer(e).data),
                qos)

        # Expect all profiles
        for obj in Profile.objects.all():
            client.expect(
                'user/{}/profile'.format(obj.user.username),
                JSONRenderer().render(ExtendedProfileSerializer(obj).data),
                qos)

        # Subscribed?
        self.is_subscribed(client)

        # Done?
        self.loop(client)
        client.wait()

        # Repeat with same client and different qos

        client = MQTTTestClient(broker)
        self.is_connected(client)

        qos = 2

        # Expect settings
        client.expect('settings',
                      JSONRenderer().render(SettingsView.get_settings()), qos)

        # Expect all ambulances
        for ambulance in Ambulance.objects.all():
            client.expect(
                'ambulance/{}/data'.format(ambulance.id),
                JSONRenderer().render(AmbulanceSerializer(ambulance).data),
                qos)

        # Expect all hospitals
        for hospital in Hospital.objects.all():
            client.expect(
                'hospital/{}/data'.format(hospital.id),
                JSONRenderer().render(HospitalSerializer(hospital).data), qos)
            hospital_equipment = hospital.hospitalequipment_set.values(
                'equipment')
            equipment = Equipment.objects.filter(id__in=hospital_equipment)
            client.expect(
                'hospital/{}/metadata'.format(hospital.id),
                JSONRenderer().render(
                    EquipmentSerializer(equipment, many=True).data), qos)

        # Expect all hospital equipments
        for e in HospitalEquipment.objects.all():
            client.expect(
                'hospital/{}/equipment/{}/data'.format(e.hospital.id,
                                                       e.equipment.name),
                JSONRenderer().render(HospitalEquipmentSerializer(e).data),
                qos)

        # Expect all profiles
        for obj in Profile.objects.all():
            client.expect(
                'user/{}/profile'.format(obj.user.username),
                JSONRenderer().render(ExtendedProfileSerializer(obj).data),
                qos)

        # Subscribed?
        self.is_subscribed(client)

        # Done?
        self.loop(client)
        client.wait()

        # repeat with another user

        qos = 0

        # Start client as common user
        broker['USERNAME'] = '******'
        broker['PASSWORD'] = '******'
        broker['CLIENT_ID'] = 'test_mqttseed_testuser1'

        client = MQTTTestClient(broker)
        self.is_connected(client)

        # Expect settings
        client.expect('settings',
                      JSONRenderer().render(SettingsView.get_settings()), qos)

        # Expect user profile
        profile = Profile.objects.get(user__username='******')
        client.expect(
            'user/testuser1/profile',
            JSONRenderer().render(ExtendedProfileSerializer(profile).data),
            qos)

        # User Ambulances
        can_read = profile.ambulances.filter(
            can_read=True).values('ambulance_id')
        for ambulance in Ambulance.objects.filter(id__in=can_read):
            client.expect(
                'ambulance/{}/data'.format(ambulance.id),
                JSONRenderer().render(AmbulanceSerializer(ambulance).data),
                qos)

        # User Hospitals
        can_read = profile.hospitals.filter(
            can_read=True).values('hospital_id')
        for hospital in Hospital.objects.filter(id__in=can_read):
            client.expect(
                'hospital/{}/data'.format(hospital.id),
                JSONRenderer().render(HospitalSerializer(hospital).data), qos)

        # Expect all user hospital equipments
        for e in HospitalEquipment.objects.filter(hospital__id__in=can_read):
            client.expect(
                'hospital/{}/equipment/{}/data'.format(e.hospital.id,
                                                       e.equipment.name),
                JSONRenderer().render(HospitalEquipmentSerializer(e).data),
                qos)

        # Subscribed?
        self.is_subscribed(client)

        # Done?
        self.loop(client)
        client.wait()

        # repeat with another user

        qos = 0

        # Start client as common user
        broker['USERNAME'] = '******'
        broker['PASSWORD'] = '******'
        broker['CLIENT_ID'] = 'test_mqttseed_testuser2'

        client = MQTTTestClient(broker)
        self.is_connected(client)

        # Expect settings
        client.expect('settings',
                      JSONRenderer().render(SettingsView.get_settings()), qos)

        # Expect user profile
        profile = Profile.objects.get(user__username='******')
        client.expect(
            'user/testuser2/profile',
            JSONRenderer().render(ExtendedProfileSerializer(profile).data),
            qos)

        # User Ambulances
        can_read = profile.ambulances.filter(
            can_read=True).values('ambulance_id')
        for ambulance in Ambulance.objects.filter(id__in=can_read):
            client.expect(
                'ambulance/{}/data'.format(ambulance.id),
                JSONRenderer().render(AmbulanceSerializer(ambulance).data),
                qos)

        # User Hospitals
        can_read = profile.hospitals.filter(
            can_read=True).values('hospital_id')
        for hospital in Hospital.objects.filter(id__in=can_read):
            client.expect(
                'hospital/{}/data'.format(hospital.id),
                JSONRenderer().render(HospitalSerializer(hospital).data), qos)

        # Expect all user hospital equipments
        for e in HospitalEquipment.objects.filter(hospital__id__in=can_read):
            client.expect(
                'hospital/{}/equipment/{}/data'.format(e.hospital.id,
                                                       e.equipment.name),
                JSONRenderer().render(HospitalEquipmentSerializer(e).data),
                qos)

        # Subscribed?
        self.is_subscribed(client)

        # Done?
        self.loop(client)
        client.wait()
示例#3
0
 def publish_settings(self, qos=2, retain=False):
     self.publish_topic('settings',
                        SettingsView.get_settings(),
                        qos=qos,
                        retain=retain)
示例#4
0
urlpatterns = i18n_patterns(*[

    # Router API urls
    url(r'^api/', include(router.urls)),
    url(r'^docs/', login_required(schema_view)),
    url(r'^api-auth/', include('rest_framework.urls',
                               namespace='rest_framework')),

    # Add mqtt_password to api
    url(r'^api/user/(?P<user__username>[\w.@+-]+)/password/$',
        PasswordView.as_view(),
        name='mqtt_password'),

    # Add settings to api
    url(r'^api/settings/$',
        SettingsView.as_view(),
        name='mqtt_settings'),

    # Add version to api
    url(r'^api/version/$',
        VersionView.as_view(),
        name='version'),

])

urlpatterns += i18n_patterns(*[

    # ambulance
    url(r'^ambulance/', include('ambulance.urls')),

    # ambulance