mirror of
				https://github.com/SectorLabs/django-localized-fields.git
				synced 2025-11-03 19:58:56 +03:00 
			
		
		
		
	Make sure values are strings before saving LocalizedIntegerValue
This commit is contained in:
		@@ -41,13 +41,18 @@ class LocalizedIntegerField(LocalizedField):
 | 
			
		||||
 | 
			
		||||
        # make sure all values are proper integers
 | 
			
		||||
        for lang_code, _ in settings.LANGUAGES:
 | 
			
		||||
            local_value = prepped_value[lang_code]
 | 
			
		||||
            try:
 | 
			
		||||
                if prepped_value[lang_code] is not None:
 | 
			
		||||
                    int(prepped_value[lang_code])
 | 
			
		||||
                if local_value is not None:
 | 
			
		||||
                    int(local_value)
 | 
			
		||||
            except (TypeError, ValueError):
 | 
			
		||||
                raise IntegrityError('non-integer value in column "%s.%s" violates '
 | 
			
		||||
                                     'integer constraint' % (self.name, lang_code))
 | 
			
		||||
 | 
			
		||||
            # convert to a string before saving because the underlying
 | 
			
		||||
            # type is hstore, which only accept strings
 | 
			
		||||
            prepped_value[lang_code] = str(local_value) if local_value else None
 | 
			
		||||
 | 
			
		||||
        return prepped_value
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								setup.py
									
									
									
									
									
								
							@@ -18,8 +18,9 @@ setup(
 | 
			
		||||
    author_email='open-source@sectorlabs.ro',
 | 
			
		||||
    keywords=['django', 'localized', 'language', 'models', 'fields'],
 | 
			
		||||
    install_requires=[
 | 
			
		||||
        'django-postgres-extra>=1.11',
 | 
			
		||||
        'Django>=1.11'
 | 
			
		||||
        'django-postgres-extra>=1.21a',
 | 
			
		||||
        'Django>=1.11',
 | 
			
		||||
        'deprecation==2.0.3'
 | 
			
		||||
    ],
 | 
			
		||||
    classifiers=[
 | 
			
		||||
        'Environment :: Web Environment',
 | 
			
		||||
 
 | 
			
		||||
@@ -152,3 +152,14 @@ class LocalizedIntegerFieldTestCase(TestCase):
 | 
			
		||||
 | 
			
		||||
        obj.refresh_from_db()
 | 
			
		||||
        assert obj.score.get(settings.LANGUAGE_CODE) is None
 | 
			
		||||
 | 
			
		||||
    def test_default_value(self):
 | 
			
		||||
        """Tests whether a default is properly set
 | 
			
		||||
        when specified."""
 | 
			
		||||
 | 
			
		||||
        model = get_fake_model({
 | 
			
		||||
            'score': LocalizedIntegerField(default={settings.LANGUAGE_CODE: 75})
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        obj = model.objects.create()
 | 
			
		||||
        assert obj.score.get(settings.LANGUAGE_CODE) == 75
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user