def save(self, **kwargs): if not self.instance: return super().save(**kwargs) updated_message = self.validated_data.pop('updated_message', None) activity_type = self.instance changed_data = find_changed(activity_type, self.validated_data) self._validated_data = changed_data skip_update = len(self.validated_data.keys()) == 0 if skip_update: return self.instance before_data = ActivityTypeHistorySerializer(activity_type).data activity_type = super().save(**kwargs) after_data = ActivityTypeHistorySerializer(activity_type).data if before_data != after_data: History.objects.create( typus=HistoryTypus.ACTIVITY_TYPE_MODIFY, group=activity_type.group, users=[self.context['request'].user], payload={k: self.initial_data.get(k) for k in changed_data.keys()}, before=before_data, after=after_data, message=updated_message, ) return activity_type
def save(self, **kwargs): pickupdate = self.instance changed_data = find_changed(pickupdate, self.validated_data) self._validated_data = changed_data skip_update = len(self.validated_data.keys()) == 0 if skip_update: return self.instance before_data = PickupDateHistorySerializer(pickupdate).data pickupdate = super().save(**kwargs) after_data = PickupDateHistorySerializer(pickupdate).data if before_data != after_data: typus_list = [] if 'is_disabled' in changed_data: if changed_data['is_disabled']: typus_list.append(HistoryTypus.PICKUP_DISABLE) stats.pickup_disabled(pickupdate) else: typus_list.append(HistoryTypus.PICKUP_ENABLE) stats.pickup_enabled(pickupdate) if len(set(changed_data.keys()).difference(['is_disabled'])) > 0: typus_list.append(HistoryTypus.PICKUP_MODIFY) for typus in typus_list: History.objects.create( typus=typus, group=pickupdate.place.group, place=pickupdate.place, pickup=pickupdate, users=[self.context['request'].user], payload={ k: self.initial_data.get(k) for k in changed_data.keys() }, before=before_data, after=after_data, ) pickupdate.place.group.refresh_active_status() return pickupdate
def save(self, **kwargs): activity = self.instance changed_data = find_changed(activity, self.validated_data) self._validated_data = changed_data skip_update = len(self.validated_data.keys()) == 0 if skip_update: return self.instance before_data = ActivityHistorySerializer(activity).data activity = super().save(**kwargs) after_data = ActivityHistorySerializer(activity).data if before_data != after_data: typus_list = [] if 'is_disabled' in changed_data: if changed_data['is_disabled']: typus_list.append(HistoryTypus.ACTIVITY_DISABLE) stats.activity_disabled(activity) else: typus_list.append(HistoryTypus.ACTIVITY_ENABLE) stats.activity_enabled(activity) if len(set(changed_data.keys()).difference(['is_disabled'])) > 0: typus_list.append(HistoryTypus.ACTIVITY_MODIFY) for typus in typus_list: History.objects.create( typus=typus, group=activity.place.group, place=activity.place, activity=activity, users=[self.context['request'].user], payload={ k: self.initial_data.get(k) for k in changed_data.keys() }, before=before_data, after=after_data, ) activity.place.group.refresh_active_status() return activity
def update(self, group, validated_data): if group.is_playground(): # Prevent editing of public fields # Those fields get overridden with a translation message for field in ['name', 'public_description']: if field in validated_data: del validated_data[field] if 'photo' in validated_data: group.delete_photo() changed_data = find_changed(group, validated_data) before_data = GroupHistorySerializer(group).data group = super().update(group, validated_data) after_data = GroupHistorySerializer(group).data if before_data != after_data: user = self.context['request'].user History.objects.create( typus=HistoryTypus.GROUP_MODIFY, group=group, users=[user], payload={ k: self.initial_data.get(k) for k in changed_data.keys() }, before=before_data, after=after_data, ) if 'photo' in validated_data: deleted = validated_data['photo'] is None History.objects.create( typus=HistoryTypus.GROUP_DELETE_PHOTO if deleted else HistoryTypus.GROUP_CHANGE_PHOTO, group=group, users=[self.context['request'].user], ) return group
def save(self, **kwargs): self._validated_data = find_changed(self.instance, self.validated_data) skip_update = len(self.validated_data.keys()) == 0 if skip_update: return self.instance return super().save(**kwargs)