# ~*~ coding: utf-8
from utils import translate
class InvalidValue(Exception):
pass
class field(object):
def getLegacy(klass):
try:
return klass.legacy
except AttributeError:
return None
getLegacy = classmethod(getLegacy)
def getName(klass):
return klass.__name__
getName = classmethod(getName)
def getTitleI18N(klass, lang):
return translate(None, "field_"+klass.getName(), lang)
getTitleI18N = classmethod(getTitleI18N)
def getKeys(klass):
return klass.choices.keys()
getKeys = classmethod(getKeys)
def view(klass, obj=None, trLang='en'):
r = u'
\n'
tr_title = klass.getTitleI18N(trLang)
r += '\t
\n'
r += '\t
'
fval = klass.default
if obj is not None:
fval = klass.getChoiceI18N(klass.get(obj), trLang)
r += fval
r += '
\n'
r += '
\n'
return r
view = classmethod(view)
def edit(klass, obj=None, trLang='en'):
r = u'\n'
tr_title = klass.getTitleI18N(trLang)
r += '\t
\n'
r += '\t
\n'
r += klass.select(obj, trLang)
r += '\t
\n'
r += '
\n'
return r
edit = classmethod(edit)
def getItems(klass):
items = klass.choices.items()
items.sort(key=lambda k: k[1].get('order'))
return [ (k, d.get('title')) for k, d in items ]
getItems = classmethod(getItems)
def select(klass, obj=None, trLang='en'):
r = '\t\t\n'
return r
select = classmethod(select)
def getChoiceI18N(klass, k, lang):
if not k: k = klass.choices.get(k).get('title')
return translate(None, 'fc_'+klass.getName()+'_'+k, lang)
getChoiceI18N = classmethod(getChoiceI18N)
def get(klass, obj):
if hasattr(obj, '_dsstore'):
return obj._dsstore.get(klass.__name__, klass.default)
else:
if obj.has_key(klass.__name__):
return obj.get(klass.__name__)
get = classmethod(get)
def set(klass, obj, val):
if not klass.choices.has_key(val):
raise InvalidValue(klass.__name__ + " " + val)
obj._dsstore.update({klass.__name__: val})
set = classmethod(set)
class docLanguage(field):
default = 'et'
title = u'Document language'
choices = {
'et' : {'title': u'Estonian', 'order': 1},
'ru' : {'title': u'Russian', 'order': 2},
'fi' : {'title': u'Finnish', 'order': 3},
'en' : {'title': u'English', 'order': 4}
}
class residence(field):
default = ''
title = u'Residence'
legacy = 'elukoht'
choices = {
'' : {'title': u'not important', 'order': 1},
'muu': {'title': u'other', 'order': 2},
'tallinn': {'title': u'Tallinn/Harjumaa', 'order': 3},
'idaviru': {'title': u'Ida-Virumaa', 'order': 4},
'tartu': {'title': u'Tartu', 'order': 5},
'soome': {'title': u'Soome', 'order': 6},
'leedu': {'title': u'Leedu', 'order': 7},
'saksamaa': {'title': u'Saksamaa', 'order': 8},
'inglismaa': {'title': u'Inglismaa', 'order': 9},
'ungari': {'title': u'Inglismaa', 'order': 10}
}
class socBackground(field):
default = ''
title = u'Social background'
legacy = 'sots'
choices = {
'': {'title': u'not important', 'order': 1},
'op': {'title': u'Student', 'order': 2},
'ylop': {'title': u'Undergraduate', 'order': 3},
'teenist': {'title': u'Teenistuja', 'order': 4},
'kvaliftooline': {'title': u'qualified worker', 'order': 5},
'lihttooline': {'title': u'Worker', 'order': 6},
'tootu': {'title': u'Between jobs', 'order': 7},
'kodune': {'title': u'Home', 'order': 8},
'pension': {'title': u'Pensioner', 'order': 9}
}
class age(field):
default = ''
title = u'Age'
legacy = 'vanus'
choices = {
'': {'title': u'unknown', 'order': 1},
'kuni18': {'title': u'up to 18', 'order': 2},
'kuni26': {'title': u'up to 26', 'order': 3},
'kuni40': {'title': u'up to 40', 'order': 4},
'41plus': {'title': u'41+', 'order': 5}
}
class gender(field):
default = ''
title = u'Gender'
legacy = 'sugu'
choices = {
'': {'title': u'unknown', 'order': 1},
'mees': {'title': u'Male', 'order': 2},
'naine': {'title': u'Female', 'order': 3}
}
class motherTongue(field):
default = ''
title = u'Mother tongue'
legacy = 'emakeel'
choices = {
'': {'title': u'unknown', 'order': 1},
'muud': {'title': u'muud', 'order': 2},
'vene': {'title': u'vene', 'order': 3},
'eesti': {'title': u'eesti', 'order': 4},
'ukraina': {'title': u'ukraina', 'order': 5},
'valgevene': {'title': u'valgevene', 'order': 6},
'lati': {'title': u'läti', 'order': 7},
'leedu': {'title': u'leedu', 'order': 8},
'saksa': {'title': u'saksa', 'order': 9},
'soome': {'title': u'soome', 'order': 10},
'rootsi': {'title': u'rootsi', 'order': 11},
'inglise': {'title': u'inglise', 'order': 12},
'jidis': {'title': u'jidiš', 'order': 13},
'itaalia': {'title': u'itaalia', 'order': 14},
'jaapani': {'title': u'jaapani', 'order': 15},
'poola': {'title': u'poola', 'order': 16},
'hollandi': {'title': u'hollandi', 'order': 17},
'sloveenia': {'title': u'sloveenia', 'order': 18},
'hebrea': {'title': u'hebrea', 'order': 19},
'prantsuse': {'title': u'prantsuse', 'order': 20},
'katalaani': {'title': u'katalaani', 'order': 21},
'ungari': {'title': u'ungari', 'order': 22},
'tsehhi': {'title': u'tsehhi', 'order': 23}
}
class langAtHome(field):
default = ''
title = u'Language used home'
legacy = 'kodus'
choices = {
'': {'title': u'unknown', 'order': 1},
'muud': {'title': u'muud', 'order': 2},
'vene': {'title': u'vene', 'order': 3},
'eesti': {'title': u'eesti', 'order': 4},
'ukraina': {'title': u'ukraina', 'order': 5},
'valgevene': {'title': u'valgevene', 'order': 6},
'lati': {'title': u'läti', 'order': 7},
'leedu': {'title': u'leedu', 'order': 8},
'saksa': {'title': u'saksa', 'order': 9},
'soome': {'title': u'soome', 'order': 10},
'rootsi': {'title': u'rootsi', 'order': 11},
'inglise': {'title': u'inglise', 'order': 12},
'jidis': {'title': u'jidiš', 'order': 13},
'itaalia': {'title': u'itaalia', 'order': 14},
'jaapani': {'title': u'jaapani', 'order': 15},
'poola': {'title': u'poola', 'order': 16},
'hollandi': {'title': u'hollandi', 'order': 17},
'sloveenia': {'title': u'sloveenia', 'order': 18},
'hebrea': {'title': u'hebrea', 'order': 19},
'prantsuse': {'title': u'prantsuse', 'order': 20},
'katalaani': {'title': u'katalaani', 'order': 21},
'ungari': {'title': u'ungari', 'order': 22},
'tsehhi': {'title': u'tsehhi', 'order': 23}
}
class levOfCommand(field):
default = ''
title = u'Level of command'
legacy = 'valdamise_tase'
choices = {
'': {'title': u'unknown', 'order': 1},
'A': {'title': u'A', 'order': 2},
'B': {'title': u'B', 'order': 3},
'C': {'title': u'C', 'order': 4},
'A1': {'title': u'A1', 'order': 5},
'A2': {'title': u'A2', 'order': 6},
'B1': {'title': u'B1', 'order': 7},
'B2': {'title': u'B2', 'order': 8},
'C1': {'title': u'C1', 'order': 9},
'C2': {'title': u'C2', 'order': 10}
}
class education(field):
default = ''
title = u'Education'
legacy = 'haridus'
choices = {
'': {'title': u'unknown', 'order': 1},
'muu': {'title': u'Other', 'order': 2},
'pohi': {'title': u'Basic', 'order': 3},
'kesk': {'title': u'Secondary', 'order': 4},
'korg': {'title': u'Higher', 'order': 5}
}
class helpingMaterials(field):
default = ''
title = u'Intermediate agent'
legacy = 'abivahendid'
choices = {
'': {'title': u'unknown', 'order': 1},
'jah': {'title': u'Yes', 'order': 2},
'ei': {'title': u'No', 'order': 3}
}
class texttype(field):
default = ''
title = u'Text type'
legacy = 'texttype'
choices = {
'': {'title': u'unknown', 'order': 1},
'isikiri': {'title': u'Personal letter', 'order': 2},
'amtkiri': {'title': u'Formal letter', 'order': 3},
'essee': {'title': u'Essay', 'order': 4},
'referaat': {'title': u'referaat', 'order': 5},
'trilumunud': {'title': u'Published in print', 'order': 6},
'analyys': {'title': u'Analysis', 'order': 7},
'vastkys': {'title': u'Answer to question', 'order': 8},
'ymberjutustus': {'title': u'ümberjutustus', 'order': 9},
'tolge': {'title': u'Translation', 'order': 10},
'harjutus': {'title': u'Exercise', 'order': 11},
'teadusartikkel': {'title': u'Scientific Article', 'order': 12},
'monograafia': {'title': u'Monography', 'order': 13},
'vaitekiri': {'title': u'Dissertation', 'order': 14},
'matoo': {'title': u'Master Thesis', 'order': 15},
'batoo': {'title': u'Bachelor thesis', 'order': 16},
'muu': {'title': u'Other', 'order': 17}
}
class allikas(field):
default=''
title=u'Source'
legacy='allikas'
choices={
'': {'title': u'unknown', 'order': 1},
'postimees': {'title': u'postimees', 'order': 2},
'ohtuleht': {'title': u'ohtuleht', 'order': 3},
'maaleht': {'title': u'maaleht', 'order': 4},
}