# ~*~ 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}, }