Exemplo n.º 1
0
    def save(self, *args, **kwargs):

        # creation?
        created = self.pk is None

        # create equipment holder?
        try:
            if created or self.equipmentholder is None:
                self.equipmentholder = EquipmentHolder.objects.create()
        except EquipmentHolder.DoesNotExist:
            self.equipmentholder = EquipmentHolder.objects.create()

        # enforce type hospital
        self.type = LocationType.h.name

        # save to Hospital
        super().save(*args, **kwargs)

        # publish to mqtt
        from mqtt.publish import SingletonPublishClient
        SingletonPublishClient().publish_hospital(self)

        # just created?
        if created:
            # invalidate permissions cache
            from mqtt.cache_clear import mqtt_cache_clear
            mqtt_cache_clear()
Exemplo n.º 2
0
    def save(self, *args, **kwargs):

        # save to UserProfile
        super().save(*args, **kwargs)

        # invalidate permissions cache
        mqtt_cache_clear()
Exemplo n.º 3
0
    def delete(self, *args, **kwargs):

        # delete from UserProfile
        super().delete(*args, **kwargs)

        # invalidate permissions cache
        mqtt_cache_clear()
Exemplo n.º 4
0
    def delete(self, *args, **kwargs):

        # invalidate permissions cache
        from mqtt.cache_clear import mqtt_cache_clear
        mqtt_cache_clear()

        # delete from Hospital
        super().delete(*args, **kwargs)
Exemplo n.º 5
0
    def form_valid(self, form):

        try:

            # invalidate permission cache
            mqtt_cache_clear()

            # add message
            messages.info(self.request, 'Successfully reinitialized system.')

            # call super form_valid
            return super().form_valid(form)

        except Exception as error:

            # add error to form
            form.add_error(None, error)

            # call super form_invalid
            return super().form_invalid(form)
Exemplo n.º 6
0
    def save(self, *args, **kwargs):

        # creation?
        created = self.pk is None

        # loaded_values?
        loaded_values = self._loaded_values is not None

        # create equipment holder?
        try:
            if created or self.equipmentholder is None:
                self.equipmentholder = EquipmentHolder.objects.create()
        except EquipmentHolder.DoesNotExist:
            self.equipmentholder = EquipmentHolder.objects.create()

        # has location changed?
        has_moved = False
        if (not loaded_values) or \
                calculate_distance(self._loaded_values['location'], self.location) > stationary_radius:
            has_moved = True

        # calculate orientation only if location has changed and orientation has not changed
        if has_moved and loaded_values and self._loaded_values['orientation'] == self.orientation:
            # TODO: should we allow for a small radius before updating direction?
            self.orientation = calculate_orientation(self._loaded_values['location'], self.location)
            # logger.debug('< {} - {} = {}'.format(self._loaded_values['location'],
            #                                      self.location,
            #                                      self.orientation))

        # logger.debug('loaded_values: {}'.format(loaded_values))
        # logger.debug('_loaded_values: {}'.format(self._loaded_values))

        # if comment, capability, status or location changed
        # model_changed = False
        if has_moved or \
                self._loaded_values['status'] != self.status or \
                self._loaded_values['capability'] != self.capability or \
                self._loaded_values['comment'] != self.comment:

            # save to Ambulance
            super().save(*args, **kwargs)

            # logger.debug('SAVED')

            # save to AmbulanceUpdate
            data = {k: getattr(self, k)
                    for k in ('capability', 'status', 'orientation',
                              'location', 'timestamp',
                              'comment', 'updated_by', 'updated_on')}
            data['ambulance'] = self
            obj = AmbulanceUpdate(**data)
            obj.save()

            # logger.debug('UPDATE SAVED')

            # # model changed
            # model_changed = True

        # if identifier changed
        # NOTE: self._loaded_values is NEVER None because has_moved is True
        elif self._loaded_values['identifier'] != self.identifier:

            # save only to Ambulance
            super().save(*args, **kwargs)

            # logger.debug('SAVED')

            # # model changed
            # model_changed = True

        # # Did the model change?
        # if model_changed:
        #
        #     # publish to mqtt
        #
        #     from mqtt.publish import SingletonPublishClient
        #     SingletonPublishClient().publish_ambulance(self)
        #
        #     # logger.debug('PUBLISHED ON MQTT')

        # just created?
        if created:
            # invalidate permissions cache
            from mqtt.cache_clear import mqtt_cache_clear
            mqtt_cache_clear()
Exemplo n.º 7
0
def user_groups_changed_handler(sender, instance, action, **kwargs):
    if action == 'post_add' or action == 'post_remove':

        # invalidate permissions cache
        mqtt_cache_clear()