Thanks for your details. I found a bug in the plugin, which occurs when using fields with hide properties such as readonly. Then I fixed the bug. Could you test the new version of the plugin?: http://dev.s-cubism.com/plugin_solidform
Regards, Kenji On 12月19日, 午後5:51, Johann Spies <johann.sp...@gmail.com> wrote: > Dear Kenji, > > Apologies for the late reply. I was away for a few days. > > Do you use virtual fields for computing the article_eq and ltitle? > > No. > > Here is my model: > > akb_signature_uuid = db.Table(db, 'akb_signature_uuid', > Field('uuid', length = 64, default = > lambda:str(uuid.uuid4()), > notnull = True, writable = False, readable = > False, > unique = True, ondelete = 'CASCADE'), > Field('created_on', 'datetime', default = request.now, > readable = False, writable = False), > Field('created_by', db.auth_user, default = > auth.user_id, > readable = False, writable = False), > Field('updated_on', 'datetime', default = request.now, > readable = False, writable = False), > Field('updated_by', db.auth_user, update = > auth.user_id, > readable = False, writable = False) > > ## The following two functions are used to calculate article_eq: > > def au_cleanup(au): > au1 = re.sub(',', '', au.strip()) > au2 = re.sub('[ ]+', ' ', au1) > return au2.upper() > > def art_ekw(art): > skrywers = set ([]) > if art.primaryauthor: > skrywers.add (au_cleanup(art.primaryauthor)) > if art.authors: > for au in art.authors.split(';'): > skrywers.add(au_cleanup(au)) > if len(skrywers): > ekw = 1.0 / len(skrywers) > else: > ekw = 0 > return ekw > > db.define_table('akb_articles', > Field('title'), > Field('primaryauthor'), > Field('authors', 'text'), > Field('rp_author', length = 64, > requires = IS_EMPTY_OR(IS_IN_DB(db, > 'akb_reprint.uuid', '%(rp_author)s'))), > Field('journal', > requires = IS_IN_DB(db, 'akb_journal.uuid', > '%(title)s')), > Field('bib_id'), > Field('bib_pages'), > Field('doctype'), > Field('language'), > Field('abstract', 'text'), > Field('bib_vol'), > Field('bib_date'), > Field('url'), > Field('pubyear', compute = lambda x: x['bib_date'][-4:]), > Field('ut', # isi-unieke rekordnommer > requires = IS_EMPTY_OR(IS_NOT_IN_DB(db, > 'akb_articles.ut'))), > Field('scopus_id', requires = IS_EMPTY_OR(IS_NOT_IN_DB(db, > 'akb_articles.scopus_id'))), > Field('sabinet_id', requires = IS_EMPTY_OR(IS_NOT_IN_DB(db, > 'akb_articles.sabinet_id'))), > Field('isap_id', requires = IS_EMPTY_OR(IS_NOT_IN_DB(db, > 'akb_articles.isap_id'))), > Field('ltitle', compute = lambda x: > re.sub('<[iI]>|<[/][iI]>|<[sS][uU][pbBP]>|</[sS][uU][pPbB]>|\W', > '', > x['title'].lower())), > Field('article_eq', 'double' , compute = lambda x: > art_ekw(x)), > akb_signature_uuid, > format = '%(title)s' > ) > > If it didn't work, please let me know more details. > > > > As I am not using virtualfields, I did not try your suggestion. > > Thanks for your attention. > > Regards > Johann > > -- > Because experiencing your loyal love is better than life itself, > my lips will praise you. (Psalm 63:3)