Пример #1
0
    def getCriteriaItems( self ):
        """
            Return a sequence of items to be used to build the catalog query.
        """
        if self.value is not None:
            field = self.Field()
            value = self.value
            operation = self.operation

            # Negate the value for 'old' days
            if self.daterange == 'old' and value != 0:
                value = -value

                # Also reverse the operator to match what a user would expect.
                # Queries such as "More than 2 days ago" should match dates
                # *earlier* than "today minus 2", and "Less than 2 days ago"
                # would be expected to return dates *later* then "today minus
                # two".
                if operation == 'max':
                    operation = 'min'
                elif operation == 'min':
                    operation = 'max'

            date = DateTime() + value

            if operation == 'within_day':
                # When items within a day are requested, the range is between
                # the earliest and latest time of that particular day
                range = ( date.earliestTime(), date.latestTime() )
                return ( ( field, {'query': range, 'range': 'min:max'} ), )

            elif operation == 'min':
                if value != 0:
                    if self.daterange == 'old':
                        date_range = (date, DateTime())
                        return ( ( field, { 'query': date_range
                                          , 'range': 'min:max'
                                          } ), )
                    else:
                        return ( ( field, { 'query': date.earliestTime()
                                          , 'range': operation 
                                          } ), )
                else:
                    # Value 0 means "Now", so get everything from now on
                    return ( ( field, {'query': date,'range': operation } ), )

            elif operation == 'max':
                if value != 0:
                    if self.daterange == 'old':
                        return ((field, {'query': date, 'range': operation}),)
                    else:
                        date_range = (DateTime(), date.latestTime())
                        return ( ( field, { 'query': date_range
                                          , 'range': 'min:max'
                                          } ), )
                else:
                    # Value is 0, meaning "Now", get everything before "Now"
                    return ( ( field, {'query': date, 'range': operation} ), )
        else:
            return ()
Пример #2
0
    def getCriteriaItems(self):
        """
            Return a sequence of items to be used to build the catalog query.
        """
        result = []

        if self.value is not None:

            field = self.Field()
            value = self.value

            # Negate the value for 'old' days
            if self.daterange == 'old':
                value = -value

            date = DateTime() + value

            operation = self.operation
            if operation == 'within_day':

                range = (date.earliestTime(), date.latestTime())
                result.append((field, range))

                result.append(('%s_usage' % field, 'range:min:max'))
            else:
                result.append((field, date))

                result.append(
                    ('%s_usage' % field, 'range:%s' % self.operation))

        return result
Пример #3
0
    def test_Today(self):
        friendly = self._makeOne("foo", "foofield")

        friendly.apply(self.today)
        self.assertEqual(friendly.daterange, "ahead")

        now = DateTime()

        result = friendly.getCriteriaItems()
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0][0], "foofield")
        self.assertEqual(result[0][1]["query"], (now.earliestTime(), now.latestTime()))
        self.assertEqual(result[0][1]["range"], "min:max")
Пример #4
0
    def test_Today( self ):
        friendly = self._makeOne('foo', 'foofield')

        friendly.apply( self.today )
        self.assertEqual( friendly.daterange, 'ahead' )

        now = DateTime()

        result = friendly.getCriteriaItems()
        self.assertEqual( len(result), 1 )
        self.assertEqual( result[0][0], 'foofield' )
        self.assertEqual( result[0][1]['query'],
                          ( now.earliestTime(), now.latestTime() ) )
        self.assertEqual( result[0][1]['range'], 'min:max' )
Пример #5
0
    def test_Today(self):
        friendly = self._makeOne('foo', 'foofield')

        friendly.apply(self.today)
        self.assertEqual(friendly.daterange, 'ahead')

        now = DateTime()

        result = friendly.getCriteriaItems()
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0][0], 'foofield')
        self.assertEqual(result[0][1]['query'],
                         (now.earliestTime(), now.latestTime()))
        self.assertEqual(result[0][1]['range'], 'min:max')
Пример #6
0
    def test_Today(self):

        from Products.CMFTopic.DateCriteria import FriendlyDateCriterion
        friendly = FriendlyDateCriterion('foo', 'foofield')

        friendly.apply(self.today)
        self.assertEqual(friendly.daterange, 'ahead')

        now = DateTime()

        result = friendly.getCriteriaItems()
        self.assertEqual(len(result), 2)
        self.assertEqual(result[0][0], 'foofield')
        self.assertEqual(result[0][1], (now.earliestTime(), now.latestTime()))
        self.assertEqual(result[1][0], 'foofield_usage')
        self.assertEqual(result[1][1], 'range:min:max')
Пример #7
0
    def test_Today( self ):

        from Products.CMFTopic.DateCriteria import FriendlyDateCriterion
        friendly = FriendlyDateCriterion( 'foo', 'foofield' )

        friendly.apply( self.today )
        self.assertEqual( friendly.daterange, 'ahead' )

        now = DateTime()

        result = friendly.getCriteriaItems()
        self.assertEqual( len( result ), 2 )
        self.assertEqual( result[0][0], 'foofield' )
        self.assertEqual( result[0][1], ( now.earliestTime()
                                        , now.latestTime() ) )
        self.assertEqual( result[1][0], 'foofield_usage' )
        self.assertEqual( result[1][1], 'range:min:max' )
Пример #8
0
    def getCriteriaItems( self ):
        """
            Return a sequence of items to be used to build the catalog query.
        """
        if self.value is not None:
            field = self.Field()
            value = self.value

            # Negate the value for 'old' days
            if self.daterange == 'old':
                value = -value

            date = DateTime() + value

            operation = self.operation
            if operation == 'within_day':
                range = ( date.earliestTime(), date.latestTime() )
                return ( ( field, {'query': range, 'range': 'min:max'} ), )
            else:
                return ( ( field, {'query': date, 'range': operation} ), )
        else:
            return ()
Пример #9
0
    def getCriteriaItems( self ):
        """
            Return a sequence of items to be used to build the catalog query.
        """
        if self.value is not None:
            field = self.Field()
            value = self.value

            # Negate the value for 'old' days
            if self.daterange == 'old':
                value = -value

            date = DateTime() + value

            operation = self.operation
            if operation == 'within_day':
                range = ( date.earliestTime(), date.latestTime() )
                return ( ( field, {'query': range, 'range': 'min:max'} ), )
            else:
                return ( ( field, {'query': date, 'range': operation} ), )
        else:
            return ()
Пример #10
0
    def getCriteriaItems( self ):
        """
            Return a sequence of items to be used to build the catalog query.
        """
        result = []

        if self.value is not None:

            field = self.Field()
            value = self.value

            # Negate the value for 'old' days
            if self.daterange == 'old':
                value = -value

            date = DateTime() + value

            operation = self.operation
            if operation == 'within_day':

                range = ( date.earliestTime(), date.latestTime() )
                result.append( ( field, range ) )


                result.append( ( '%s_usage' % field
                               , 'range:min:max'
                               ) )
            else:
                result.append( ( field, date ) )


                result.append( ( '%s_usage' % field
                            , 'range:%s' % self.operation
                            ) )

        return result
Пример #11
0
    def getCriteriaItems(self):
        """
            Return a sequence of items to be used to build the catalog query.
        """
        if self.value is not None:
            field = self.Field()
            value = self.value
            operation = self.operation

            # Negate the value for 'old' days
            if self.daterange == 'old' and value != 0:
                value = -value

                # Also reverse the operator to match what a user would expect.
                # Queries such as "More than 2 days ago" should match dates
                # *earlier* than "today minus 2", and "Less than 2 days ago"
                # would be expected to return dates *later* then "today minus
                # two".
                if operation == 'max':
                    operation = 'min'
                elif operation == 'min':
                    operation = 'max'

            date = DateTime() + value

            if operation == 'within_day':
                # When items within a day are requested, the range is between
                # the earliest and latest time of that particular day
                range = (date.earliestTime(), date.latestTime())
                return ((field, {'query': range, 'range': 'min:max'}), )

            elif operation == 'min':
                if value != 0:
                    if self.daterange == 'old':
                        date_range = (date, DateTime())
                        return ((field, {
                            'query': date_range,
                            'range': 'min:max'
                        }), )
                    else:
                        return ((field, {
                            'query': date.earliestTime(),
                            'range': operation
                        }), )
                else:
                    # Value 0 means "Now", so get everything from now on
                    return ((field, {'query': date, 'range': operation}), )

            elif operation == 'max':
                if value != 0:
                    if self.daterange == 'old':
                        return ((field, {'query': date, 'range': operation}), )
                    else:
                        date_range = (DateTime(), date.latestTime())
                        return ((field, {
                            'query': date_range,
                            'range': 'min:max'
                        }), )
                else:
                    # Value is 0, meaning "Now", get everything before "Now"
                    return ((field, {'query': date, 'range': operation}), )
        else:
            return ()