Exemplo n.º 1
0
 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))
Exemplo n.º 2
0
    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()