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)

Reply via email to