コード例 #1
0
ファイル: fields.py プロジェクト: akinfold/django-recurrence
 def to_python(self, value):
     if value is None:
         return value
     if isinstance(value, recurrence.Recurrence):
         return value
     value = super(RecurrenceField, self).to_python(value) or u''
     return recurrence.deserialize(value)
コード例 #2
0
 def to_python(self, value):
     if value is None:
         return value
     if isinstance(value, recurrence.Recurrence):
         return value
     value = super(RecurrenceField, self).to_python(value) or u''
     return recurrence.deserialize(value)
コード例 #3
0
 def to_python(self, value):
     print('topython', value)
     traceback.print_stack()
     if value is None or isinstance(value, recurrence.Recurrence):
         return value
     value = super(RecurrenceField, self).to_python(value) or u''
     return recurrence.deserialize(value, self.include_dtstart)
コード例 #4
0
def test_rule_serialization():
    rule = Rule(
        recurrence.WEEKLY
    )

    serialized = recurrence.serialize(rule)
    assert 'RRULE:FREQ=WEEKLY' == serialized
    assert recurrence.deserialize(serialized) == Recurrence(rrules=[rule])
コード例 #5
0
def test_rule_serialization():
    rule = Rule(
        recurrence.WEEKLY
    )

    serialized = recurrence.serialize(rule)
    assert 'RRULE:FREQ=WEEKLY' == serialized
    assert recurrence.deserialize(serialized) == Recurrence(rrules=[rule])
コード例 #6
0
ファイル: fields.py プロジェクト: buypolarbear/childcare-2
    def get_db_prep_value(self, value, connection=None, prepared=False):
        if value is None and self.null == False:
            raise ValueError(
                'Cannot assign None: "%s.%s" does not allow null values.' %
                (self.model._meta.object_name, self.name))

        if isinstance(value, basestring):
            value = recurrence.deserialize(value)
        return recurrence.serialize(value)
コード例 #7
0
ファイル: fields.py プロジェクト: zosiakropka/time-lease
    def get_db_prep_value(self, value, connection=None, prepared=False):
        if value is None and self.null == False:
            raise ValueError(
                'Cannot assign None: "%s.%s" does not allow null values.' % (
                self.model._meta.object_name, self.name))

        if isinstance(value, basestring):
            value = recurrence.deserialize(value)
        return recurrence.serialize(value)
コード例 #8
0
    def clean(self, value):
        """
        Validates that ``value`` deserialized into a
        `recurrence.base.Recurrence` object falls within the
        parameters specified to the `RecurrenceField` constructor.
        """
        try:
            recurrence_obj = recurrence.deserialize(value)
        except exceptions.DeserializationError as error:
            raise forms.ValidationError(error.args[0])
        except TypeError:
            return None
        if not self.accept_dtstart:
            recurrence_obj.dtstart = None
        if not self.accept_dtend:
            recurrence_obj.dtend = None

        if self.max_rrules is not None:
            if len(recurrence_obj.rrules) > self.max_rrules:
                raise forms.ValidationError(
                    self.error_messages['max_rrules_exceeded'] % {
                        'limit': self.max_rrules
                    }
                )
        if self.max_exrules is not None:
            if len(recurrence_obj.exrules) > self.max_exrules:
                raise forms.ValidationError(
                    self.error_messages['max_exrules_exceeded'] % {
                        'limit': self.max_exrules
                    }
                )
        if self.max_rdates is not None:
            if len(recurrence_obj.rdates) > self.max_rdates:
                raise forms.ValidationError(
                    self.error_messages['max_rdates_exceeded'] % {
                        'limit': self.max_rdates
                    }
                )
        if self.max_exdates is not None:
            if len(recurrence_obj.exdates) > self.max_exdates:
                raise forms.ValidationError(
                    self.error_messages['max_exdates_exceeded'] % {
                        'limit': self.max_exdates
                    }
                )

        for rrule in recurrence_obj.rrules:
            if rrule.freq not in self.frequencies:
                raise forms.ValidationError(
                    self.error_messages['invalid_frequency'])
        for exrule in recurrence_obj.exrules:
            if exrule.freq not in self.frequencies:
                raise forms.ValidationError(
                    self.error_messages['invalid_frequency'])

        return recurrence_obj
コード例 #9
0
ファイル: forms.py プロジェクト: fcurella/django-recurrence
 def clean(self, value):
     """
     Validates that ``value`` deserialized into a
     `recurrence.base.Recurrence` object falls within the
     parameters specified to the `RecurrenceField` constructor.
     """
     try:
         recurrence_obj = recurrence.deserialize(value)
     except exceptions.DeserializationError, error:
         raise forms.ValidationError(error.args[0])
コード例 #10
0
 def clean(self, value):
     """
     Validates that ``value`` deserialized into a
     `recurrence.base.Recurrence` object falls within the
     parameters specified to the `RecurrenceField` constructor.
     """
     try:
         recurrence_obj = recurrence.deserialize(value)
     except exceptions.DeserializationError, error:
         raise forms.ValidationError(error.args[0])
コード例 #11
0
ファイル: forms.py プロジェクト: ollb/django-recurrence
    def clean(self, value):
        """
        Validates that ``value`` deserialized into a
        `recurrence.base.Recurrence` object falls within the
        parameters specified to the `RecurrenceField` constructor.
        """
        try:
            recurrence_obj = recurrence.deserialize(value)
        except exceptions.DeserializationError as error:
            raise forms.ValidationError(error.args[0])

        if not self.accept_dtstart:
            recurrence_obj.dtstart = None
        if not self.accept_dtend:
            recurrence_obj.dtend = None

        if self.max_rrules is not None:
            if len(recurrence_obj.rrules) > self.max_rrules:
                raise forms.ValidationError(
                    self.error_messages['max_rrules_exceeded'] % {
                        'limit': self.max_rrules
                    }
                )
        if self.max_exrules is not None:
            if len(recurrence_obj.exrules) > self.max_exrules:
                raise forms.ValidationError(
                    self.error_messages['max_exrules_exceeded'] % {
                        'limit': self.max_exrules
                    }
                )
        if self.max_rdates is not None:
            if len(recurrence_obj.rdates) > self.max_rdates:
                raise forms.ValidationError(
                    self.error_messages['max_rdates_exceeded'] % {
                        'limit': self.max_rdates
                    }
                )
        if self.max_exdates is not None:
            if len(recurrence_obj.exdates) > self.max_exdates:
                raise forms.ValidationError(
                    self.error_messages['max_exdates_exceeded'] % {
                        'limit': self.max_exdates
                    }
                )

        for rrule in recurrence_obj.rrules:
            if rrule.freq not in self.frequencies:
                raise forms.ValidationError(
                    self.error_messages['invalid_frequency'])
        for exrule in recurrence_obj.exrules:
            if exrule.freq not in self.frequencies:
                raise forms.ValidationError(
                    self.error_messages['invalid_frequency'])

        return recurrence_obj
コード例 #12
0
def test_complex_rule_serialization_with_weekday_instance():
    rule = Rule(
        recurrence.WEEKLY,
        interval=17,
        wkst=recurrence.to_weekday(1),
        count=7,
        byday=[recurrence.to_weekday('-1MO'),
               recurrence.to_weekday('TU')],
        bymonth=[1, 3])

    serialized = recurrence.serialize(rule)
    assert ('RRULE:FREQ=WEEKLY;INTERVAL=17;WKST=TU;'
            'COUNT=7;BYDAY=-1MO,TU;BYMONTH=1,3') == serialized
    assert recurrence.deserialize(serialized) == Recurrence(rrules=[rule])
コード例 #13
0
def test_complex_rule_serialization_with_weekday_instance():
    rule = Rule(
        recurrence.WEEKLY,
        interval=17,
        wkst=recurrence.to_weekday(1),
        count=7,
        byday=[
            recurrence.to_weekday('-1MO'),
            recurrence.to_weekday('TU')
        ],
        bymonth=[1, 3]
    )

    serialized = recurrence.serialize(rule)
    assert ('RRULE:FREQ=WEEKLY;INTERVAL=17;WKST=TU;'
            'COUNT=7;BYDAY=-1MO,TU;BYMONTH=1,3') == serialized
    assert recurrence.deserialize(serialized) == Recurrence(rrules=[rule])
コード例 #14
0
def test_bad_wkst():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:WKST=X')
コード例 #15
0
 def set_rule(self, i):
     self.recurrence = deserialize(i)
コード例 #16
0
def test_bad_byday():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:BYDAY=X')
コード例 #17
0
def test_bad_BYMONTH():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:BYMONTH=X')
コード例 #18
0
def test_unknown_key():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:A=X')
コード例 #19
0
def test_bad_BYMONTH():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:BYMONTH=X')
コード例 #20
0
def test_bad_byday():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:BYDAY=X')
コード例 #21
0
ファイル: fields.py プロジェクト: akinfold/django-recurrence
 def get_prep_value(self, value):
     if isinstance(value, basestring):
         value = recurrence.deserialize(value)
     return recurrence.serialize(value)
コード例 #22
0
def test_bad_interval():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:INTERVAL=X')
コード例 #23
0
def test_no_value():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:A=')
コード例 #24
0
def test_no_equal_sign():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:A')
コード例 #25
0
def test_bad_count():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:COUNT=X')
コード例 #26
0
 def get_db_prep_value(self, value, connection=None, prepared=False):
     if isinstance(value, string_types):
         value = recurrence.deserialize(value)
     return recurrence.serialize(value)
コード例 #27
0
 def get_db_prep_value(self, value, connection=None, prepared=False):
     if isinstance(value, basestring):
         value = recurrence.deserialize(value)
     return recurrence.serialize(value)
コード例 #28
0
def test_no_value():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:A=')
コード例 #29
0
def test_bad_freq():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:FREQ=X')
コード例 #30
0
def test_bad_interval():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:INTERVAL=X')
コード例 #31
0
 def to_python(self, value):
     if value is None or isinstance(value, recurrence.Recurrence):
         return value
     value = self.strip_time.sub('', value)  # HACKS
     return recurrence.deserialize(value)
コード例 #32
0
def test_bad_wkst():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:WKST=X')
コード例 #33
0
def test_unknown_key():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:A=X')
コード例 #34
0
def test_bad_count():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:COUNT=X')
コード例 #35
0
def test_bad_freq():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:FREQ=X')
コード例 #36
0
def test_no_equal_sign():
    with pytest.raises(DeserializationError):
        recurrence.deserialize('RRULE:A')