def set_fixtures(self): ckeditor = CKEditor() self.db.article.description.widget = ckeditor.widget # virtual field <3 self.entity.embed_code = Field.Virtual(lambda row: self.get_embed_code( row.video_data.video_source, row.video_data.video_height, row. video_data.video_width, row.video_data.video_embed))
def __init__(self, db, expire_db_secs=3600): """ expire_db_secs: how long before refresh database """ self.db = db self.fields = 'iso', 'country_or_district', 'capital', 'area', 'population', 'continent', 'tld', 'currency_code', 'currency_name', 'phone', 'postal_code_format', 'postal_code_regex', 'languages', 'neighbours' self.numeric_fields = 'area', 'population' db.define_table( 'places', Field('created_on', 'datetime', writable=False, readable=False, default=datetime.now), Field('country_or_district_id', 'integer', writable=False, readable=False), Field('flag_img', label='Flag', writable=False, represent=lambda path: IMG(_src=path)), Field('area', 'double', represent=lambda area: locale.format( "%d", area, grouping=True) + ' square kilometres'), Field( 'population', 'integer', represent=lambda pop: locale.format("%d", pop, grouping=True)), #Field('population', 'integer', represent=lambda pop: '{0:,d}'.format(pop)), Field('iso', writable=False), Field('country_or_district', label='Country (District)', writable=False), *[ Field(field, 'string') for field in self.fields if field not in self.numeric_fields ] #format=lambda record: XML('<a href="%(pretty_url)s">%(country_or_district)s (%(iso)s)</a>' % record) ) # define user friendly url for accessing a place db.places.pretty_url = Field.Virtual( 'pretty_url', lambda record: URL( c='default', f='view', extension=False, args=safe(record.places.country_or_district, record.places. country_or_district_id))) db.places.pretty_link = Field.Virtual('pretty_link', lambda record: str(\ DIV( A( IMG(_src=record.places.flag_img), #db.places.flag_img.represent(record.flag_img), ' %s' % (record.places.country_or_district), _href=URL(c='default', f='view', extension=False, args=safe(record.places.country_or_district, record.places.country_or_district_id)) ) ) )) db.places.continent.represent = lambda continent: A( continent, _href=URL(f='continent', args=continent)) db.places.neighbours.represent = lambda neighbours: DIV([ A(neighbour + ' ', _href=URL(f='iso', args=neighbour)) for neighbour in neighbours.split(',') ]) #db.places.pretty_url = Field.Virtual('pretty_url', lambda record: URL(c='default', f='view', extension=False, args=safe(record.places.country_or_district, record.places.country_or_district_id))) if db(db.places).count() == 0: self.load() else: created_on = db(db.places).select().first().created_on if created_on is None or created_on + timedelta( seconds=expire_db_secs) < datetime.now(): self.load()