enum method working
This commit is contained in:
parent
0efcea4879
commit
833f0bdf4c
5 changed files with 22 additions and 37 deletions
|
@ -58,7 +58,7 @@ class CourseBuilder:
|
||||||
|
|
||||||
meta = yaml.load(fm,Loader=yaml.Loader)
|
meta = yaml.load(fm,Loader=yaml.Loader)
|
||||||
|
|
||||||
table_items = schema.process(meta=meta,fields=actual_fields,lang=args.lang) if query == None else schema.process_raw(meta=meta,fields=actual_fields,lang=args.lang)
|
table_items = schema.process(meta=meta,fields=actual_fields,lang=args.lang) if query == None else schema.to_dataframe(meta=meta,fields=actual_fields,lang=args.lang)
|
||||||
|
|
||||||
if args.legacy:
|
if args.legacy:
|
||||||
MarkdownGenerator.generate_table_legacy(table_items=table_items,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.leftcol)
|
MarkdownGenerator.generate_table_legacy(table_items=table_items,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.leftcol)
|
||||||
|
|
|
@ -6,8 +6,8 @@ class Query:
|
||||||
|
|
||||||
def run(self,table_items):
|
def run(self,table_items):
|
||||||
# print(table_items)
|
# print(table_items)
|
||||||
for row in table_items:
|
for item in table_items:
|
||||||
print(row)
|
print(item)
|
||||||
# print(eval(self.__query,{row:row}))
|
# print(eval(self.__query,locals()))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -122,43 +122,27 @@ class Schema:
|
||||||
return meta[field]['value']
|
return meta[field]['value']
|
||||||
|
|
||||||
def get_enum(self,meta,field,lang):
|
def get_enum(self,meta,field,lang):
|
||||||
vv = meta[field]['value']
|
enum_val = meta[field]['value']
|
||||||
return self.__schema[field]['values'][vv][lang]
|
return self.__schema[field]['values'][ enum_val ][lang]
|
||||||
|
|
||||||
def get_num(self,meta,field,lang):
|
|
||||||
return meta[field]['value']
|
|
||||||
|
|
||||||
# if self.needs_spec(field):
|
|
||||||
|
|
||||||
# t = string.Template(self.get_template(field=field,lang=lang))
|
|
||||||
|
|
||||||
# spec = meta[field]['spec'][lang]
|
|
||||||
|
|
||||||
# return [self.process_label(field,lang),t.substitute({'value': enum_val,'spec': spec})]
|
|
||||||
# else:
|
|
||||||
# return [self.process_label(field,lang),enum_val]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_value(self,meta,field,lang):
|
def get_value(self,meta,field,lang):
|
||||||
|
"""treats receiving the value like a variant,
|
||||||
|
return values are language specific"""
|
||||||
match self.__schema[field]['type']:
|
match self.__schema[field]['type']:
|
||||||
case 'str': return self.get_str(meta,field,lang)
|
case 'str': return self.get_str(meta,field,lang)
|
||||||
case 'enum': return self.get_enum(meta,field,lang)
|
case 'enum': return self.get_enum(meta,field,lang)
|
||||||
case 'int' | 'num' : return self.get_num(meta,field,lang)
|
case 'int' | 'num' : return meta[field]['value']
|
||||||
case 'multinum' : return meta[field]['value']
|
case 'multinum' : return meta[field]['value']
|
||||||
|
|
||||||
|
def to_dataframe(self,meta,fields,lang):
|
||||||
def process_raw(self,meta,fields,lang):
|
# list comprehension for rows
|
||||||
|
return [{'field' : field, # field name
|
||||||
items = [{'field' : field,
|
'lang' : lang, # language shortcode
|
||||||
'lang' : lang,
|
'type' : self.__schema[field]['type'], # datatype
|
||||||
'type' : self.__schema[field]['type'],
|
'label' : self.process_label(field,lang), # label
|
||||||
'label' : self.process_label(field,lang),
|
'value' : self.get_value(meta,field,lang), # actual value
|
||||||
'value' : self.get_value(meta,field,lang)
|
'template' : self.__schema[field]['template'][lang] if 'template' in self.__schema[field] else None,
|
||||||
|
# getting crazy with nested dict comprehension
|
||||||
|
'enum_values' : { k:v[lang] for (k,v) in self.__schema[field]['values'].items()} if 'enum' in self.__schema[field]['type'] else None
|
||||||
}
|
}
|
||||||
for field in fields]
|
for field in fields]
|
||||||
|
|
||||||
|
|
||||||
# maybe return tableitems as np.Dataframe?
|
|
||||||
return items
|
|
|
@ -33,6 +33,6 @@ debug:
|
||||||
# | pandoc ${target_flags} -V lang:de -o ${target_de}
|
# | pandoc ${target_flags} -V lang:de -o ${target_de}
|
||||||
|
|
||||||
debug-query:
|
debug-query:
|
||||||
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml mod.interactsys.yaml -q "kind == compulsory"
|
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml mod.interactsys.yaml -q "item['field'] == 'kind' and item['value'] == 'elective'"
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
|
@ -181,7 +181,8 @@ workload:
|
||||||
# credits/ECTS
|
# credits/ECTS
|
||||||
#
|
#
|
||||||
credits:
|
credits:
|
||||||
type: num
|
type: num
|
||||||
|
unit: ECTS
|
||||||
label: {
|
label: {
|
||||||
en: "credits and weight of mark",
|
en: "credits and weight of mark",
|
||||||
de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote"
|
de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue