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()
def save(self, *args, **kwargs): # save to UserProfile super().save(*args, **kwargs) # invalidate permissions cache mqtt_cache_clear()
def delete(self, *args, **kwargs): # delete from UserProfile super().delete(*args, **kwargs) # invalidate permissions cache mqtt_cache_clear()
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)
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)
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()
def user_groups_changed_handler(sender, instance, action, **kwargs): if action == 'post_add' or action == 'post_remove': # invalidate permissions cache mqtt_cache_clear()