예제 #1
0
    def update(self, store, validated_data):
        changed_data = get_changed_data(store, validated_data)
        before_data = StoreHistorySerializer(store).data
        store = super().update(store, validated_data)
        after_data = StoreHistorySerializer(store).data

        if 'weeks_in_advance' in changed_data or \
                ('status' in changed_data and store.status == StoreStatus.ACTIVE.value):
            with transaction.atomic():
                for series in store.series.all():
                    series.update_pickup_dates()

        if before_data != after_data:
            History.objects.create(
                typus=HistoryTypus.STORE_MODIFY,
                group=store.group,
                store=store,
                users=[
                    self.context['request'].user,
                ],
                payload=changed_data,
                before=before_data,
                after=after_data,
            )
        store.group.refresh_active_status()
        return store
예제 #2
0
    def update(self, group, validated_data):
        if group.is_playground():
            # Prevent editing of public fields
            # Password shouldn't get changed and the others get overridden with a translation message
            for field in ['name', 'public_description']:
                if field in validated_data:
                    del validated_data[field]

        changed_data = get_changed_data(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=changed_data,
                before=before_data,
                after=after_data,
            )
        return group
예제 #3
0
    def update(self, series, validated_data):
        selected_validated_data = {}
        for attr in self.Meta.update_fields:
            if attr in validated_data:
                selected_validated_data[attr] = validated_data[attr]

        changed_data = get_changed_data(series, selected_validated_data)
        before_data = PickupDateSeriesHistorySerializer(series).data
        super().update(series, selected_validated_data)
        after_data = PickupDateSeriesHistorySerializer(series).data

        if before_data != after_data:
            History.objects.create(
                typus=HistoryTypus.SERIES_MODIFY,
                group=series.store.group,
                store=series.store,
                users=[
                    self.context['request'].user,
                ],
                payload=changed_data,
                before=before_data,
                after=after_data,
            )
        series.store.group.refresh_active_status()
        return series
예제 #4
0
    def update(self, pickupdate, validated_data):
        selected_validated_data = {}
        for attr in self.Meta.update_fields:
            if attr in validated_data:
                selected_validated_data[attr] = validated_data[attr]
        changed_data = get_changed_data(pickupdate, selected_validated_data)

        if pickupdate.series:
            if 'max_collectors' in changed_data:
                selected_validated_data['is_max_collectors_changed'] = True
                if not pickupdate.is_max_collectors_changed:
                    changed_data['is_max_collectors_changed'] = True
            if 'date' in changed_data:
                selected_validated_data['is_date_changed'] = True
                if not pickupdate.is_date_changed:
                    changed_data['is_date_changed'] = True
            if 'description' in changed_data:
                selected_validated_data['is_description_changed'] = True
                if not pickupdate.is_description_changed:
                    changed_data['is_description_changed'] = True

        super().update(pickupdate, selected_validated_data)

        if changed_data:
            post_pickup_modify.send(sender=self.__class__,
                                    group=pickupdate.store.group,
                                    store=pickupdate.store,
                                    user=self.context['request'].user,
                                    payload=changed_data)
        return pickupdate
예제 #5
0
    def update(self, pickupdate, validated_data):
        selected_validated_data = {}
        for attr in self.Meta.update_fields:
            if attr in validated_data:
                selected_validated_data[attr] = validated_data[attr]
        changed_data = get_changed_data(pickupdate, selected_validated_data)

        if pickupdate.series:
            if 'max_collectors' in changed_data:
                selected_validated_data['is_max_collectors_changed'] = True
                if not pickupdate.is_max_collectors_changed:
                    changed_data['is_max_collectors_changed'] = True
            if 'date' in changed_data:
                selected_validated_data['is_date_changed'] = True
                if not pickupdate.is_date_changed:
                    changed_data['is_date_changed'] = True
            if 'description' in changed_data:
                selected_validated_data['is_description_changed'] = True
                if not pickupdate.is_description_changed:
                    changed_data['is_description_changed'] = True

        super().update(pickupdate, selected_validated_data)

        if changed_data:
            History.objects.create(
                typus=HistoryTypus.PICKUP_MODIFY,
                group=pickupdate.store.group,
                store=pickupdate.store,
                users=[
                    self.context['request'].user,
                ],
                payload=changed_data,
            )
        return pickupdate
    def update(self, group, validated_data):
        changed_data = get_changed_data(group, validated_data)
        group = super().update(group, validated_data)

        if changed_data:
            post_group_modify.send(sender=self.__class__,
                                   group=group,
                                   user=self.context['request'].user,
                                   payload=changed_data)
        return group
예제 #7
0
    def update(self, group, validated_data):
        changed_data = get_changed_data(group, validated_data)
        group = super().update(group, validated_data)

        if changed_data:
            user = self.context['request'].user
            History.objects.create(typus=HistoryTypus.GROUP_MODIFY,
                                   group=group,
                                   users=[
                                       user,
                                   ],
                                   payload=changed_data)
        return group
예제 #8
0
    def update(self, store, validated_data):
        changed_data = get_changed_data(store, validated_data)
        store = super().update(store, validated_data)

        if 'weeks_in_advance' in changed_data:
            with transaction.atomic():
                for series in store.series.all():
                    series.update_pickup_dates()

        if changed_data:
            post_store_modify.send(sender=self.__class__,
                                   group=store.group,
                                   store=store,
                                   user=self.context['request'].user,
                                   payload=self.initial_data)
        return store
예제 #9
0
    def update(self, series, validated_data):
        selected_validated_data = {}
        for attr in self.Meta.update_fields:
            if attr in validated_data:
                selected_validated_data[attr] = validated_data[attr]

        changed_data = get_changed_data(series, selected_validated_data)
        super().update(series, selected_validated_data)
        series.update_pickup_dates()

        if changed_data:
            post_series_modify.send(sender=self.__class__,
                                    group=series.store.group,
                                    store=series.store,
                                    user=self.context['request'].user,
                                    payload=changed_data)
        return series
예제 #10
0
    def update(self, store, validated_data):
        changed_data = get_changed_data(store, validated_data)
        store = super().update(store, validated_data)

        if 'weeks_in_advance' in changed_data:
            with transaction.atomic():
                for series in store.series.all():
                    series.update_pickup_dates()

        if changed_data:
            History.objects.create(
                typus=HistoryTypus.STORE_MODIFY,
                group=store.group,
                store=store,
                users=[self.context['request'].user, ],
                payload=changed_data,
            )
        return store
예제 #11
0
    def update(self, series, validated_data):
        selected_validated_data = {}
        for attr in self.Meta.update_fields:
            if attr in validated_data:
                selected_validated_data[attr] = validated_data[attr]

        changed_data = get_changed_data(series, selected_validated_data)
        super().update(series, selected_validated_data)

        if changed_data:
            History.objects.create(
                typus=HistoryTypus.SERIES_MODIFY,
                group=series.store.group,
                store=series.store,
                users=[self.context['request'].user, ],
                payload=changed_data,
            )
        return series
예제 #12
0
    def update(self, pickupdate, validated_data):
        selected_validated_data = {}
        for attr in self.Meta.update_fields:
            if attr in validated_data:
                selected_validated_data[attr] = validated_data[attr]
        changed_data = get_changed_data(pickupdate, selected_validated_data)

        if pickupdate.series:
            if 'max_collectors' in changed_data:
                selected_validated_data['is_max_collectors_changed'] = True
                if not pickupdate.is_max_collectors_changed:
                    changed_data['is_max_collectors_changed'] = True
            if 'date' in changed_data:
                selected_validated_data['is_date_changed'] = True
                if not pickupdate.is_date_changed:
                    changed_data['is_date_changed'] = True
            if 'description' in changed_data:
                selected_validated_data['is_description_changed'] = True
                if not pickupdate.is_description_changed:
                    changed_data['is_description_changed'] = True

        before_data = PickupDateHistorySerializer(pickupdate).data
        super().update(pickupdate, selected_validated_data)
        after_data = PickupDateHistorySerializer(pickupdate).data

        if before_data != after_data:
            History.objects.create(
                typus=HistoryTypus.PICKUP_MODIFY,
                group=pickupdate.store.group,
                store=pickupdate.store,
                users=[
                    self.context['request'].user,
                ],
                payload=changed_data,
                before=before_data,
                after=after_data,
            )
        pickupdate.store.group.refresh_active_status()
        return pickupdate