mirror of
				https://github.com/samuelclay/NewsBlur.git
				synced 2025-10-31 08:41:36 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.db import models
 | |
| 
 | |
| from south.modelsinspector import add_introspection_rules
 | |
| add_introspection_rules([], ["^utils\.compressed_textfield\.StoryField"])
 | |
| 
 | |
| def uncompress_string(s):
 | |
|     '''helper function to reverse django.utils.text.compress_string'''
 | |
|     import cStringIO, gzip
 | |
|     try:
 | |
|         zbuf = cStringIO.StringIO(s)
 | |
|         zfile = gzip.GzipFile(fileobj=zbuf)
 | |
|         ret = zfile.read()
 | |
|         zfile.close()
 | |
|     except:
 | |
|         ret = s
 | |
|     return ret
 | |
|     
 | |
| class StoryField(models.TextField):
 | |
|     
 | |
|     __metaclass__ = models.SubfieldBase
 | |
|     
 | |
|     def to_python(self, value):
 | |
|         
 | |
|         if not value:
 | |
|             return None
 | |
|             
 | |
|         # print 'From DB: %s %s' % (len(value), value[:25],)
 | |
|         try:
 | |
|             return unicode(value.decode('base64').decode('zlib'))
 | |
|         except:
 | |
|             return value
 | |
|         
 | |
|     def get_prep_save(self, value):
 | |
|         
 | |
|         if value:
 | |
|             # print "Pre To DB: %s %s" % (len(value), value[:25])
 | |
|             value = value.encode('zlib').encode('base64')            
 | |
|             # print "Post To DB: %s %s" % (len(value), value[:25])
 | |
|         
 | |
|         return super(StoryField, self).get_prep_save(value)
 | 
