I just developed a way to quickly handle translations of table records, that works this way:
Assuming we have a table name 'mytable' with three fields ('field0',
'field1' and 'field2'), it creates an exact copy of the original table
(named 't9n_mytable', containing all the original fields plus a
'language' field, containin language code, and a 'record' field that is
a reference to mytable).
Now, I want to be sure there are no duplicate translations, and way to
do so would be to create an unique index on ``(record, language)``, but
it looks like there is no straight-forward way to do that in web2py..
For the moment, I solved using this code, but it doesn't look great.. is
there a better way to do this?
Code::
_table_existed = ('t9n_mytable' in db.tables)
## Here, define the table...
if not _table_existed:
import urlparse
dbtype = urlparse.urlparse(db._uri).scheme
if dbtype == 'sqlite':
db.executesql('CREATE UNIQUE INDEX'
' IF NOT EXISTS unique_record_language'
' ON t9n_mytable (record, language);')
elif dbtype == 'mysql':
db.executesql('CREATE UNIQUE INDEX'
' unique_record_language'
' ON t9n_mytable (record, language);')
elif dbtype == 'pgsql':
db.executesql('CREATE UNIQUE INDEX'
' unique_record_language'
' ON t9n_mytable (record, language);')
else:
pass
--
Samuele ~redShadow~ Santi
----------------------------------------------------------------
redshadow[at]hackzine.org - redshadowhack[at]gmail.com
Blog: http://hackzine.org
GPG Key signature:
050D 3E9F 6E0B 44CE C008 D1FC 166C 3C7E EB26 4933
----------------------------------------------------------------
/me recommends:
Squadra Informatica - http://www.squadrainformatica.com
----------------------------------------------------------------
- Proud ThinkPad T-Series owner
- Registered Linux-User: #440008
* GENTOO User since 1199142000 (2008-01-01)
* former DEBIAN SID user
----------------------------------------------------------------
"Software is like sex: it's better when it's free!"
-- Linus Torvalds
signature.asc
Description: This is a digitally signed message part

