Esempio n. 1
0
 def validate(self, attr):
     action = self.context['request'].parser_context['view'].action
     if action != 'partial_update':
         if not check_if_translated_field('name', attr):
             raise serializers.ValidationError(
                 {'name': _("This field is required.")})
     return super(PackageSerializer, self).validate(attr)
Esempio n. 2
0
    def validate(self, attr):
        err = {}

        if not check_if_translated_field('name', attr):
            err.update(getMessageTranslate('name', attr, True))
        if err:
            raise serializers.ValidationError(err)
        return super(RetreatSerializer, self).validate(attr)
Esempio n. 3
0
    def validate(self, attrs):
        """Prevents overlapping active periods and invalid start/end date"""
        if not check_if_translated_field('name', attrs):
            raise serializers.ValidationError(
                {'name': _("This field is required.")})
        # Forbid Period full updates if users have reserved timeslots
        action = self.context['view'].action
        if action == 'update' or action == 'partial_update':
            reservations = TimeSlot.objects.filter(
                period=self.instance).exclude(users=None).count()
            if reservations:
                raise serializers.ValidationError(
                    _("The period contains timeslots with user reservations."),
                )
        # Get instance values of start_date, end_date and is_active if not
        # provided in request data (needed for validation).
        start = attrs.get('start_date',
                          getattr(self.instance, 'start_date', None))
        end = attrs.get('end_date', getattr(self.instance, 'end_date', None))
        is_active = attrs.get('is_active',
                              getattr(self.instance, 'is_active', None))

        if start >= end:
            raise serializers.ValidationError({
                'end_date': [_("End date must be later than start_date.")],
                'start_date': [_("Start date must be earlier than end_date.")],
            })

        # If creating/updating an active period, make sure that it does not
        # overlap with another active period
        if is_active:
            instance_id = getattr(self.instance, 'id', None)
            workplace = attrs.get('workplace',
                                  getattr(self.instance, 'workplace', None))
            # Get other active periods aasociated to the same workplace
            workplace_periods = Period.objects.filter(
                workplace=workplace,
                is_active=True,
            )
            # Exclude current period (for updates)
            workplace_periods = workplace_periods.exclude(id=instance_id)
            # Keep start_date & end_date for validation
            # This creates a list of tuple: [(start_date, end_date), ...]
            date_list = workplace_periods.values_list('start_date', 'end_date')

            for duration in date_list:
                if max(duration[0], start) < min(duration[1], end):
                    raise serializers.ValidationError(
                        _("An active period associated to the same "
                          "workplace overlaps with the provided start_date "
                          "and end_date."), )

        return attrs
Esempio n. 4
0
    def validate(self, attr):
        err = {}
        if attr.get('type', Retreat.TYPE_PHYSICAL) == Retreat.TYPE_PHYSICAL:
            required_attrs = [
                'accessibility',
                'postal_code',
                'has_shared_rooms'
            ]
            for key in required_attrs:
                if attr.get(key, None) is None:
                    err.update(
                        {
                            key: _("This field is required.")
                        }
                    )

            if not check_if_translated_field('name', attr):
                err.update(getMessageTranslate('name', attr, True))
            if not check_if_translated_field('details', attr):
                err.update(getMessageTranslate('details', attr, True))
            if not check_if_translated_field('country', attr):
                err.update(getMessageTranslate('country', attr, True))
            if not check_if_translated_field('state_province', attr):
                err.update(getMessageTranslate('state_province', attr, True))
            if not check_if_translated_field('city', attr):
                err.update(getMessageTranslate('city', attr, True))
            if not check_if_translated_field('address_line1', attr):
                err.update(getMessageTranslate('address_line1', attr, True))
            if err:
                raise serializers.ValidationError(err)
        return super(RetreatSerializer, self).validate(attr)
Esempio n. 5
0
 def validate(self, attr):
     err = {}
     if not check_if_translated_field('name', attr):
         err['name'] = _("This field is required.")
     if not check_if_translated_field('details', attr):
         err['details'] = _("This field is required.")
     if not check_if_translated_field('country', attr):
         err['country'] = _("This field is required.")
     if not check_if_translated_field('state_province', attr):
         err['state_province'] = _("This field is required.")
     if not check_if_translated_field('city', attr):
         err['city'] = _("This field is required.")
     if not check_if_translated_field('address_line1', attr):
         err['address_line1'] = _("This field is required.")
     if not check_if_translated_field('timezone', attr):
         err['timezone'] = _("This field is required.")
     if not check_if_translated_field('postal_code', attr):
         err['postal_code'] = _("This field is required.")
     if not check_if_translated_field('seats', attr):
         err['seats'] = _("This field is required.")
     if err:
         raise serializers.ValidationError(err)
     return super(WorkplaceSerializer, self).validate(attr)
Esempio n. 6
0
 def validate(self, attr):
     err = {}
     if not check_if_translated_field('name', attr):
         err['name'] = _("This field is required.")
     if not check_if_translated_field('details', attr):
         err['details'] = _("This field is required.")
     if not check_if_translated_field('country', attr):
         err['country'] = _("This field is required.")
     if not check_if_translated_field('state_province', attr):
         err['state_province'] = _("This field is required.")
     if not check_if_translated_field('city', attr):
         err['city'] = _("This field is required.")
     if not check_if_translated_field('address_line1', attr):
         err['address_line1'] = _("This field is required.")
     if not check_if_translated_field('timezone', attr):
         err['timezone'] = _("This field is required.")
     if not check_if_translated_field('postal_code', attr):
         err['postal_code'] = _("This field is required.")
     if not check_if_translated_field('seats', attr):
         err['seats'] = _("This field is required.")
     if not check_if_translated_field('price', attr):
         err['price'] = _("This field is required.")
     if not check_if_translated_field('start_time', attr):
         err['start_time'] = _("This field is required.")
     if not check_if_translated_field('end_time', attr):
         err['end_time'] = _("This field is required.")
     if not check_if_translated_field('min_day_refund', attr):
         err['min_day_refund'] = _("This field is required.")
     if not check_if_translated_field('refund_rate', attr):
         err['refund_rate'] = _("This field is required.")
     if not check_if_translated_field('min_day_exchange', attr):
         err['min_day_exchange'] = _("This field is required.")
     if not check_if_translated_field('is_active', attr):
         err['is_active'] = _("This field is required.")
     if not check_if_translated_field('accessibility', attr):
         err['accessibility'] = _("This field is required.")
     if err:
         raise serializers.ValidationError(err)
     return super(RetirementSerializer, self).validate(attr)
 def validate(self, attr):
     if not check_if_translated_field('name', attr):
         raise serializers.ValidationError(
             getMessageTranslate('name', attr, True))
     return super(BaseProductSerializer, self).validate(attr)