Ejemplo n.º 1
0
    def test_unproxify(self):
        #Proxify First
        self.address_view.proxifyField(
            {'my_region': 'Base_view.my_list_field'})
        self.person_view.proxifyField(
            {'my_default_region': 'Address_view.my_region'})
        field_value_cache.clear()
        #UnProxify
        self.person_view.unProxifyField({'my_default_region': 'on'})
        field = self.person_view.my_default_region
        self.assertEqual(field.meta_type, 'ListField')
        self.assertEqual(field.get_value('title'), 'Country')
        self.assertEqual(
            field.get_tales('items')._text,
            'here/portal_categories/region/getCategoryChildTranslatedLogicalPathItemList'
        )

        #Test unproxify with old instance.
        #Proxify First
        self.person_view.proxifyField({
            'my_career_subordination_title':
            'Base_view.my_relation_string_field'
        })
        field_value_cache.clear()
        #UnProxify
        self.person_view.unProxifyField(
            {'my_career_subordination_title': 'on'})
        field = self.person_view.my_career_subordination_title
        self.assertEqual(field.meta_type, 'RelationStringField')
        self.assertEqual(field.get_value('title'), 'Organisation')
        self.assertEqual(field.get_value('proxy_listbox_ids'), [
            ('OrganisationModule_viewOrganisationList/listbox', 'Organisation')
        ])
        self.assertFalse(field.checkConsistency())
Ejemplo n.º 2
0
  def test_datetime_field(self):
    field_value_cache.clear()
    
    # make sure that boundmethod must not be cached.
    year_field = self.root.form.datetime_field.sub_form.get_field('year', include_disabled=1)
    self.assertEqual(True, type(year_field.overrides['items']) is BoundMethod)

    cache_size = len(field_value_cache)
    year_field.get_value('items')

    # See Formulator/StandardFields.py(line:174)
    # there are two get_value, start_datetime and end_datetime
    cache_size += 2

    # make sure that boundmethod is not cached(cache size does not change)
    self.assertEqual(True, ('Form.get_value',
                            self.root.form.datetime_field._p_oid,
                            self.root.form.datetime_field._p_oid,
                            'start_datetime'
                            ) in field_value_cache)
    self.assertEqual(True, ('Form.get_value',
                            self.root.form.datetime_field._p_oid,
                            self.root.form.datetime_field._p_oid,
                            'end_datetime'
                            ) in field_value_cache)
    self.assertEqual(False, ('Form.get_value',
                            year_field._p_oid,
                            year_field._p_oid,
                            'items'
                            ) in field_value_cache)
    self.assertEqual(cache_size, len(field_value_cache))

    year_field.get_value('size')
    year_field.get_value('default')
    self.assertEqual(cache_size+2, len(field_value_cache))
Ejemplo n.º 3
0
 def purgeFieldValueCache(self, method_call_object):
     """
   Interaction method (defined at the Interactor level).
   Make sure all field value caches are purged
 """
     from Products.ERP5Form.Form import field_value_cache
     field_value_cache.clear()
Ejemplo n.º 4
0
    def test_datetime_field(self):
        field_value_cache.clear()

        # make sure that boundmethod must not be cached.
        year_field = self.root.form.datetime_field.sub_form.get_field(
            'year', include_disabled=1)
        self.assertEqual(True,
                         type(year_field.overrides['items']) is BoundMethod)

        cache_size = len(field_value_cache)
        year_field.get_value('items')

        # See Formulator/StandardFields.py(line:174)
        # there are two get_value, start_datetime and end_datetime
        cache_size += 2

        # make sure that boundmethod is not cached(cache size does not change)
        self.assertEqual(True, ('Form.get_value',
                                self.root.form.datetime_field._p_oid,
                                self.root.form.datetime_field._p_oid,
                                'start_datetime') in field_value_cache)
        self.assertEqual(True,
                         ('Form.get_value',
                          self.root.form.datetime_field._p_oid,
                          self.root.form.datetime_field._p_oid, 'end_datetime')
                         in field_value_cache)
        self.assertEqual(False, ('Form.get_value', year_field._p_oid,
                                 year_field._p_oid, 'items')
                         in field_value_cache)
        self.assertEqual(cache_size, len(field_value_cache))

        year_field.get_value('size')
        year_field.get_value('default')
        self.assertEqual(cache_size + 2, len(field_value_cache))
Ejemplo n.º 5
0
  def test_multi_level_proxify(self):
    self.address_view.proxifyField({'my_region':'Base_view.my_list_field'})
    self.person_view.proxifyField({'my_default_region':'Address_view.my_region'})

    field = self.person_view.my_default_region
    self.assertEqual(field.meta_type, 'ProxyField')
    self.assertEqual(field.get_value('form_id'), 'Address_view')
    self.assertEqual(field.get_value('field_id'), 'my_region')
    self.assertEqual(field.getTemplateField().getId(), 'my_region')
    self.assertEqual(field.getRecursiveTemplateField().getId(), 'my_list_field')
    self.assertEqual(field.is_delegated('title'), True)
    self.assertEqual(field.get_value('title'), 'Country')
    self.assertEqual(field.is_delegated('size'), True)
    self.assertEqual(field.get_value('size'), 1)
    self.assertEqual(field.is_delegated('items'), False)
    self.assertEqual(field.get_tales('items')._text,
                     'here/portal_categories/region/getCategoryChildTranslatedLogicalPathItemList')
    self.assertEqual(field.is_delegated('enabled'), True)
    self.assertEqual(field.get_value('enabled'), 1)
    self.assertEqual(field.is_delegated('description'), True)
    self.assertEqual(field.get_value('description'), '')

    self.assertEqual(field.has_value('scrap_variable'), 0)

    field_value_cache.clear() # must purge cache before changing internal field value.
    template_field = self.address_view.my_region
    template_field.values['title'] = 'Region'
    self.assertEqual(field.get_value('title'), 'Region')
Ejemplo n.º 6
0
  def test_multi_level_proxify(self):
    self.address_view.proxifyField({'my_region':'Base_view.my_list_field'})
    self.person_view.proxifyField({'my_default_region':'Address_view.my_region'})

    field = self.person_view.my_default_region
    self.assertEqual(field.meta_type, 'ProxyField')
    self.assertEqual(field.get_value('form_id'), 'Address_view')
    self.assertEqual(field.get_value('field_id'), 'my_region')
    self.assertEqual(field.getTemplateField().getId(), 'my_region')
    self.assertEqual(field.getRecursiveTemplateField().getId(), 'my_list_field')
    self.assertEqual(field.is_delegated('title'), True)
    self.assertEqual(field.get_value('title'), 'Country')
    self.assertEqual(field.is_delegated('size'), True)
    self.assertEqual(field.get_value('size'), 1)
    self.assertEqual(field.is_delegated('items'), False)
    self.assertEqual(field.get_tales('items')._text,
                     'here/portal_categories/region/getCategoryChildTranslatedLogicalPathItemList')
    self.assertEqual(field.is_delegated('enabled'), True)
    self.assertEqual(field.get_value('enabled'), 1)
    self.assertEqual(field.is_delegated('description'), True)
    self.assertEqual(field.get_value('description'), '')

    self.assertEqual(field.has_value('scrap_variable'), 0)

    field_value_cache.clear() # must purge cache before changing internal field value.
    template_field = self.address_view.my_region
    template_field.values['title'] = 'Region'
    self.assertEqual(field.get_value('title'), 'Region')
Ejemplo n.º 7
0
 def purgeFieldValueCache(self, method_call_object):
   """
     Interaction method (defined at the Interactor level).
     Make sure all field value caches are purged
   """
   from Products.ERP5Form.Form import field_value_cache
   field_value_cache.clear()
Ejemplo n.º 8
0
    def test_format_precision(self):
        self.field.values["precision"] = 0
        self.assertEqual("12", self.widget.format_value(self.field, 12.34))
        # value is rounded
        self.assertEqual("13", self.widget.format_value(self.field, 12.9))

        field_value_cache.clear()  # call this before changing internal field values.
        self.field.values["precision"] = 2
        self.assertEqual("0.01", self.widget.format_value(self.field, 0.011))
        # value is rounded
        self.assertEqual("0.01", self.widget.format_value(self.field, 0.009999))
        self.assertEqual("1.00", self.widget.format_value(self.field, sum([0.1] * 10)))
        self.assertEqual("566.30", self.widget.format_value(self.field, 281.80 + 54.50 + 230.00))
Ejemplo n.º 9
0
  def test_format_precision(self):
    self.field.values['precision'] = 0
    self.assertEquals('12', self.widget.format_value(self.field, 12.34))
    # value is rounded
    self.assertEquals('13', self.widget.format_value(self.field, 12.9))

    field_value_cache.clear() # call this before changing internal field values.
    self.field.values['precision'] = 2
    self.assertEquals('0.01', self.widget.format_value(self.field, 0.011))
    # value is rounded
    self.assertEquals('0.01', self.widget.format_value(self.field, 0.009999))
    self.assertEquals('1.00',
        self.widget.format_value(self.field, sum([0.1] * 10)))
    self.assertEquals('566.30',
        self.widget.format_value(self.field, 281.80 + 54.50 + 230.00))
Ejemplo n.º 10
0
  def test_format_precision(self):
    self.field.values['precision'] = 0
    self.assertEqual('12', self.widget.format_value(self.field, 12.34))
    # value is rounded
    self.assertEqual('13', self.widget.format_value(self.field, 12.9))

    field_value_cache.clear() # call this before changing internal field values.
    self.field.values['precision'] = 2
    self.assertEqual('0.01', self.widget.format_value(self.field, 0.011))
    # value is rounded
    self.assertEqual('0.01', self.widget.format_value(self.field, 0.009999))
    self.assertEqual('1.00',
        self.widget.format_value(self.field, sum([0.1] * 10)))
    self.assertEqual('566.30',
        self.widget.format_value(self.field, 281.80 + 54.50 + 230.00))
Ejemplo n.º 11
0
    def test_datetime_field(self):
        field_value_cache.clear()

        # make sure that boundmethod must not be cached.
        year_field = self.root.form.datetime_field.sub_form.get_field("year", include_disabled=1)
        self.assertEqual(True, type(year_field.overrides["items"]) is BoundMethod)

        cache_size = len(field_value_cache)
        year_field.get_value("items")

        # See Formulator/StandardFields.py(line:174)
        # there are two get_value, start_datetime and end_datetime
        cache_size += 2

        # make sure that boundmethod is not cached(cache size does not change)
        self.assertEqual(
            True,
            (
                "Form.get_value",
                self.root.form.datetime_field._p_oid,
                self.root.form.datetime_field._p_oid,
                "start_datetime",
            )
            in field_value_cache,
        )
        self.assertEqual(
            True,
            (
                "Form.get_value",
                self.root.form.datetime_field._p_oid,
                self.root.form.datetime_field._p_oid,
                "end_datetime",
            )
            in field_value_cache,
        )
        self.assertEqual(False, ("Form.get_value", year_field._p_oid, year_field._p_oid, "items") in field_value_cache)
        self.assertEqual(cache_size, len(field_value_cache))

        year_field.get_value("size")
        year_field.get_value("default")
        self.assertEqual(cache_size + 2, len(field_value_cache))
Ejemplo n.º 12
0
  def test_single_level_proxify(self):
    # StringField
    self.person_view.proxifyField({'my_name':'Base_view.my_string_field'})
    field = self.person_view.my_name
    self.assertEqual(field.meta_type, 'ProxyField')
    self.assertEqual(field.get_value('form_id'), 'Base_view')
    self.assertEqual(field.get_value('field_id'), 'my_string_field')
    self.assertEqual(field.is_delegated('title'), False)
    self.assertEqual(field.get_value('title'), 'Name')
    self.assertEqual(field.is_delegated('display_maxwidth'), False)
    self.assertEqual(field.get_value('display_maxwidth'), 20)
    self.assertEqual(field.is_delegated('enabled'), True)
    self.assertEqual(field.get_value('enabled'), 1)
    self.assertEqual(field.is_delegated('description'), True)
    self.assertEqual(field.get_value('description'), '')

    field_value_cache.clear() # must purge cache before changing internal field value.
    template_field = self.base_view.my_string_field
    template_field.values['description'] = 'Description'
    self.assertEqual(field.get_value('description'), 'Description')

    field_value_cache.clear()

    # ListField
    self.person_view.manage_addField('my_gender', 'Gender', 'ListField')
    self.person_view.proxifyField({'my_gender':'Base_view.my_gender'})
    field = self.person_view.my_gender
    self.assertEqual(field.is_delegated('title'), True)
    self.assertEqual(field.get_value('title'), 'Gender')
    self.assertEqual(field.is_delegated('items'), True)
    self.assertEqual(field.get_value('items'), [('Male', 'Male'), ('Female', 'Female')])

    field_value_cache.clear()
Ejemplo n.º 13
0
  def test_single_level_proxify(self):
    # StringField
    self.person_view.proxifyField({'my_name':'Base_view.my_string_field'})
    field = self.person_view.my_name
    self.assertEqual(field.meta_type, 'ProxyField')
    self.assertEqual(field.get_value('form_id'), 'Base_view')
    self.assertEqual(field.get_value('field_id'), 'my_string_field')
    self.assertEqual(field.is_delegated('title'), False)
    self.assertEqual(field.get_value('title'), 'Name')
    self.assertEqual(field.is_delegated('display_maxwidth'), False)
    self.assertEqual(field.get_value('display_maxwidth'), 20)
    self.assertEqual(field.is_delegated('enabled'), True)
    self.assertEqual(field.get_value('enabled'), 1)
    self.assertEqual(field.is_delegated('description'), True)
    self.assertEqual(field.get_value('description'), '')

    field_value_cache.clear() # must purge cache before changing internal field value.
    template_field = self.base_view.my_string_field
    template_field.values['description'] = 'Description'
    self.assertEqual(field.get_value('description'), 'Description')

    field_value_cache.clear()

    # ListField
    self.person_view.manage_addField('my_gender', 'Gender', 'ListField')
    self.person_view.proxifyField({'my_gender':'Base_view.my_gender'})
    field = self.person_view.my_gender
    self.assertEqual(field.is_delegated('title'), True)
    self.assertEqual(field.get_value('title'), 'Gender')
    self.assertEqual(field.is_delegated('items'), True)
    self.assertEqual(field.get_value('items'), [('Male', 'Male'), ('Female', 'Female')])

    field_value_cache.clear()
Ejemplo n.º 14
0
  def test_unproxify(self):
    #Proxify First
    self.address_view.proxifyField({'my_region':'Base_view.my_list_field'})
    self.person_view.proxifyField({'my_default_region':'Address_view.my_region'})
    field_value_cache.clear()
    #UnProxify
    self.person_view.unProxifyField({'my_default_region':'on'})
    field = self.person_view.my_default_region
    self.assertEqual(field.meta_type, 'ListField')
    self.assertEqual(field.get_value('title'), 'Country')
    self.assertEqual(field.get_tales('items')._text,
                     'here/portal_categories/region/getCategoryChildTranslatedLogicalPathItemList')

    #Test unproxify with old instance.
    #Proxify First
    self.person_view.proxifyField({'my_career_subordination_title':'Base_view.my_relation_string_field'})
    field_value_cache.clear()
    #UnProxify
    self.person_view.unProxifyField({'my_career_subordination_title':'on'})
    field = self.person_view.my_career_subordination_title
    self.assertEqual(field.meta_type, 'RelationStringField')
    self.assertEqual(field.get_value('title'), 'Organisation')
    self.assertEqual(field.get_value('proxy_listbox_ids'), [('OrganisationModule_viewOrganisationList/listbox', 'Organisation')])