lims_instrument: "Load Results from File" wizard: add support for 60 fixed files

This commit is contained in:
Adri?n Bernardi 2019-01-29 17:21:11 -03:00
parent abea252df4
commit 3c29bd6aa8
3 changed files with 616 additions and 69 deletions

View File

@ -30,6 +30,10 @@ msgctxt "field:lims.notebook.line,imported_end_date:"
msgid "End date"
msgstr "Fecha de finalización"
msgctxt "field:lims.notebook.line,imported_inj_date:"
msgid "Inject date"
msgstr "Fecha de Inyección"
msgctxt "field:lims.notebook.line,imported_literal_result:"
msgid "Literal result"
msgstr "Resultado textual"
@ -150,6 +154,166 @@ msgctxt "field:lims.notebook.load_results_file.start,infile_20:"
msgid "File 20"
msgstr "Archivo 20"
msgctxt "field:lims.notebook.load_results_file.start,infile_21:"
msgid "File 21"
msgstr "Archivo 21"
msgctxt "field:lims.notebook.load_results_file.start,infile_22:"
msgid "File 22"
msgstr "Archivo 22"
msgctxt "field:lims.notebook.load_results_file.start,infile_23:"
msgid "File 23"
msgstr "Archivo 23"
msgctxt "field:lims.notebook.load_results_file.start,infile_24:"
msgid "File 24"
msgstr "Archivo 24"
msgctxt "field:lims.notebook.load_results_file.start,infile_25:"
msgid "File 25"
msgstr "Archivo 25"
msgctxt "field:lims.notebook.load_results_file.start,infile_26:"
msgid "File 26"
msgstr "Archivo 26"
msgctxt "field:lims.notebook.load_results_file.start,infile_27:"
msgid "File 27"
msgstr "Archivo 27"
msgctxt "field:lims.notebook.load_results_file.start,infile_28:"
msgid "File 28"
msgstr "Archivo 28"
msgctxt "field:lims.notebook.load_results_file.start,infile_29:"
msgid "File 29"
msgstr "Archivo 29"
msgctxt "field:lims.notebook.load_results_file.start,infile_30:"
msgid "File 30"
msgstr "Archivo 30"
msgctxt "field:lims.notebook.load_results_file.start,infile_31:"
msgid "File 31"
msgstr "Archivo 31"
msgctxt "field:lims.notebook.load_results_file.start,infile_32:"
msgid "File 32"
msgstr "Archivo 32"
msgctxt "field:lims.notebook.load_results_file.start,infile_33:"
msgid "File 33"
msgstr "Archivo 33"
msgctxt "field:lims.notebook.load_results_file.start,infile_34:"
msgid "File 34"
msgstr "Archivo 34"
msgctxt "field:lims.notebook.load_results_file.start,infile_35:"
msgid "File 35"
msgstr "Archivo 35"
msgctxt "field:lims.notebook.load_results_file.start,infile_36:"
msgid "File 36"
msgstr "Archivo 36"
msgctxt "field:lims.notebook.load_results_file.start,infile_37:"
msgid "File 37"
msgstr "Archivo 37"
msgctxt "field:lims.notebook.load_results_file.start,infile_38:"
msgid "File 38"
msgstr "Archivo 38"
msgctxt "field:lims.notebook.load_results_file.start,infile_39:"
msgid "File 39"
msgstr "Archivo 39"
msgctxt "field:lims.notebook.load_results_file.start,infile_40:"
msgid "File 40"
msgstr "Archivo 40"
msgctxt "field:lims.notebook.load_results_file.start,infile_41:"
msgid "File 41"
msgstr "Archivo 41"
msgctxt "field:lims.notebook.load_results_file.start,infile_42:"
msgid "File 42"
msgstr "Archivo 42"
msgctxt "field:lims.notebook.load_results_file.start,infile_43:"
msgid "File 43"
msgstr "Archivo 43"
msgctxt "field:lims.notebook.load_results_file.start,infile_44:"
msgid "File 44"
msgstr "Archivo 44"
msgctxt "field:lims.notebook.load_results_file.start,infile_45:"
msgid "File 45"
msgstr "Archivo 45"
msgctxt "field:lims.notebook.load_results_file.start,infile_46:"
msgid "File 46"
msgstr "Archivo 46"
msgctxt "field:lims.notebook.load_results_file.start,infile_47:"
msgid "File 47"
msgstr "Archivo 47"
msgctxt "field:lims.notebook.load_results_file.start,infile_48:"
msgid "File 48"
msgstr "Archivo 48"
msgctxt "field:lims.notebook.load_results_file.start,infile_49:"
msgid "File 49"
msgstr "Archivo 49"
msgctxt "field:lims.notebook.load_results_file.start,infile_50:"
msgid "File 50"
msgstr "Archivo 50"
msgctxt "field:lims.notebook.load_results_file.start,infile_51:"
msgid "File 51"
msgstr "Archivo 51"
msgctxt "field:lims.notebook.load_results_file.start,infile_52:"
msgid "File 52"
msgstr "Archivo 52"
msgctxt "field:lims.notebook.load_results_file.start,infile_53:"
msgid "File 53"
msgstr "Archivo 53"
msgctxt "field:lims.notebook.load_results_file.start,infile_54:"
msgid "File 54"
msgstr "Archivo 54"
msgctxt "field:lims.notebook.load_results_file.start,infile_55:"
msgid "File 55"
msgstr "Archivo 55"
msgctxt "field:lims.notebook.load_results_file.start,infile_56:"
msgid "File 56"
msgstr "Archivo 56"
msgctxt "field:lims.notebook.load_results_file.start,infile_57:"
msgid "File 57"
msgstr "Archivo 57"
msgctxt "field:lims.notebook.load_results_file.start,infile_58:"
msgid "File 58"
msgstr "Archivo 58"
msgctxt "field:lims.notebook.load_results_file.start,infile_59:"
msgid "File 59"
msgstr "Archivo 59"
msgctxt "field:lims.notebook.load_results_file.start,infile_60:"
msgid "File 60"
msgstr "Archivo 60"
msgctxt "field:lims.notebook.load_results_file.start,name_01:"
msgid "Name 01"
msgstr "Nombre 01"
@ -230,6 +394,166 @@ msgctxt "field:lims.notebook.load_results_file.start,name_20:"
msgid "Name 20"
msgstr "Nombre 20"
msgctxt "field:lims.notebook.load_results_file.start,name_21:"
msgid "Name 21"
msgstr "Nombre 21"
msgctxt "field:lims.notebook.load_results_file.start,name_22:"
msgid "Name 22"
msgstr "Nombre 22"
msgctxt "field:lims.notebook.load_results_file.start,name_23:"
msgid "Name 23"
msgstr "Nombre 23"
msgctxt "field:lims.notebook.load_results_file.start,name_24:"
msgid "Name 24"
msgstr "Nombre 24"
msgctxt "field:lims.notebook.load_results_file.start,name_25:"
msgid "Name 25"
msgstr "Nombre 25"
msgctxt "field:lims.notebook.load_results_file.start,name_26:"
msgid "Name 26"
msgstr "Nombre 26"
msgctxt "field:lims.notebook.load_results_file.start,name_27:"
msgid "Name 27"
msgstr "Nombre 27"
msgctxt "field:lims.notebook.load_results_file.start,name_28:"
msgid "Name 28"
msgstr "Nombre 28"
msgctxt "field:lims.notebook.load_results_file.start,name_29:"
msgid "Name 29"
msgstr "Nombre 29"
msgctxt "field:lims.notebook.load_results_file.start,name_30:"
msgid "Name 30"
msgstr "Nombre 30"
msgctxt "field:lims.notebook.load_results_file.start,name_31:"
msgid "Name 31"
msgstr "Nombre 31"
msgctxt "field:lims.notebook.load_results_file.start,name_32:"
msgid "Name 32"
msgstr "Nombre 32"
msgctxt "field:lims.notebook.load_results_file.start,name_33:"
msgid "Name 33"
msgstr "Nombre 33"
msgctxt "field:lims.notebook.load_results_file.start,name_34:"
msgid "Name 34"
msgstr "Nombre 34"
msgctxt "field:lims.notebook.load_results_file.start,name_35:"
msgid "Name 35"
msgstr "Nombre 35"
msgctxt "field:lims.notebook.load_results_file.start,name_36:"
msgid "Name 36"
msgstr "Nombre 36"
msgctxt "field:lims.notebook.load_results_file.start,name_37:"
msgid "Name 37"
msgstr "Nombre 37"
msgctxt "field:lims.notebook.load_results_file.start,name_38:"
msgid "Name 38"
msgstr "Nombre 38"
msgctxt "field:lims.notebook.load_results_file.start,name_39:"
msgid "Name 39"
msgstr "Nombre 39"
msgctxt "field:lims.notebook.load_results_file.start,name_40:"
msgid "Name 40"
msgstr "Nombre 40"
msgctxt "field:lims.notebook.load_results_file.start,name_41:"
msgid "Name 41"
msgstr "Nombre 41"
msgctxt "field:lims.notebook.load_results_file.start,name_42:"
msgid "Name 42"
msgstr "Nombre 42"
msgctxt "field:lims.notebook.load_results_file.start,name_43:"
msgid "Name 43"
msgstr "Nombre 43"
msgctxt "field:lims.notebook.load_results_file.start,name_44:"
msgid "Name 44"
msgstr "Nombre 44"
msgctxt "field:lims.notebook.load_results_file.start,name_45:"
msgid "Name 45"
msgstr "Nombre 45"
msgctxt "field:lims.notebook.load_results_file.start,name_46:"
msgid "Name 46"
msgstr "Nombre 46"
msgctxt "field:lims.notebook.load_results_file.start,name_47:"
msgid "Name 47"
msgstr "Nombre 47"
msgctxt "field:lims.notebook.load_results_file.start,name_48:"
msgid "Name 48"
msgstr "Nombre 48"
msgctxt "field:lims.notebook.load_results_file.start,name_49:"
msgid "Name 49"
msgstr "Nombre 49"
msgctxt "field:lims.notebook.load_results_file.start,name_50:"
msgid "Name 50"
msgstr "Nombre 50"
msgctxt "field:lims.notebook.load_results_file.start,name_51:"
msgid "Name 51"
msgstr "Nombre 51"
msgctxt "field:lims.notebook.load_results_file.start,name_52:"
msgid "Name 52"
msgstr "Nombre 52"
msgctxt "field:lims.notebook.load_results_file.start,name_53:"
msgid "Name 53"
msgstr "Nombre 53"
msgctxt "field:lims.notebook.load_results_file.start,name_54:"
msgid "Name 54"
msgstr "Nombre 54"
msgctxt "field:lims.notebook.load_results_file.start,name_55:"
msgid "Name 55"
msgstr "Nombre 55"
msgctxt "field:lims.notebook.load_results_file.start,name_56:"
msgid "Name 56"
msgstr "Nombre 56"
msgctxt "field:lims.notebook.load_results_file.start,name_57:"
msgid "Name 57"
msgstr "Nombre 57"
msgctxt "field:lims.notebook.load_results_file.start,name_58:"
msgid "Name 58"
msgstr "Nombre 58"
msgctxt "field:lims.notebook.load_results_file.start,name_59:"
msgid "Name 59"
msgstr "Nombre 59"
msgctxt "field:lims.notebook.load_results_file.start,name_60:"
msgid "Name 60"
msgstr "Nombre 60"
msgctxt "field:lims.notebook.load_results_file.start,results_importer:"
msgid "Results importer"
msgstr "Importador de resultados"
@ -331,8 +655,16 @@ msgid "Load Results from File"
msgstr "Carga de resultados desde archivo"
msgctxt "view:lims.notebook.load_results_file.start:"
msgid "Load Results from File"
msgstr "Carga de resultados desde archivo"
msgid "20"
msgstr ""
msgctxt "view:lims.notebook.load_results_file.start:"
msgid "40"
msgstr ""
msgctxt "view:lims.notebook.load_results_file.start:"
msgid "60"
msgstr ""
msgctxt "view:lims.notebook.load_results_file.warning:"
msgid "There are some issues with the imported data"

View File

@ -158,6 +158,86 @@ class NotebookLoadResultsFileStart(ModelView):
name_19 = fields.Char('Name 19', readonly=True)
infile_20 = fields.Binary('File 20', filename='name_20')
name_20 = fields.Char('Name 20', readonly=True)
infile_21 = fields.Binary('File 21', filename='name_21')
name_21 = fields.Char('Name 21', readonly=True)
infile_22 = fields.Binary('File 22', filename='name_22')
name_22 = fields.Char('Name 22', readonly=True)
infile_23 = fields.Binary('File 23', filename='name_23')
name_23 = fields.Char('Name 23', readonly=True)
infile_24 = fields.Binary('File 24', filename='name_24')
name_24 = fields.Char('Name 24', readonly=True)
infile_25 = fields.Binary('File 25', filename='name_25')
name_25 = fields.Char('Name 25', readonly=True)
infile_26 = fields.Binary('File 26', filename='name_26')
name_26 = fields.Char('Name 26', readonly=True)
infile_27 = fields.Binary('File 27', filename='name_27')
name_27 = fields.Char('Name 27', readonly=True)
infile_28 = fields.Binary('File 28', filename='name_28')
name_28 = fields.Char('Name 28', readonly=True)
infile_29 = fields.Binary('File 29', filename='name_29')
name_29 = fields.Char('Name 29', readonly=True)
infile_30 = fields.Binary('File 30', filename='name_30')
name_30 = fields.Char('Name 30', readonly=True)
infile_31 = fields.Binary('File 31', filename='name_31')
name_31 = fields.Char('Name 31', readonly=True)
infile_32 = fields.Binary('File 32', filename='name_32')
name_32 = fields.Char('Name 32', readonly=True)
infile_33 = fields.Binary('File 33', filename='name_33')
name_33 = fields.Char('Name 33', readonly=True)
infile_34 = fields.Binary('File 34', filename='name_34')
name_34 = fields.Char('Name 34', readonly=True)
infile_35 = fields.Binary('File 35', filename='name_35')
name_35 = fields.Char('Name 35', readonly=True)
infile_36 = fields.Binary('File 36', filename='name_36')
name_36 = fields.Char('Name 36', readonly=True)
infile_37 = fields.Binary('File 37', filename='name_37')
name_37 = fields.Char('Name 37', readonly=True)
infile_38 = fields.Binary('File 38', filename='name_38')
name_38 = fields.Char('Name 38', readonly=True)
infile_39 = fields.Binary('File 39', filename='name_39')
name_39 = fields.Char('Name 39', readonly=True)
infile_40 = fields.Binary('File 40', filename='name_40')
name_40 = fields.Char('Name 40', readonly=True)
infile_41 = fields.Binary('File 41', filename='name_41')
name_41 = fields.Char('Name 41', readonly=True)
infile_42 = fields.Binary('File 42', filename='name_42')
name_42 = fields.Char('Name 42', readonly=True)
infile_43 = fields.Binary('File 43', filename='name_43')
name_43 = fields.Char('Name 43', readonly=True)
infile_44 = fields.Binary('File 44', filename='name_44')
name_44 = fields.Char('Name 44', readonly=True)
infile_45 = fields.Binary('File 45', filename='name_45')
name_45 = fields.Char('Name 45', readonly=True)
infile_46 = fields.Binary('File 46', filename='name_46')
name_46 = fields.Char('Name 46', readonly=True)
infile_47 = fields.Binary('File 47', filename='name_47')
name_47 = fields.Char('Name 47', readonly=True)
infile_48 = fields.Binary('File 48', filename='name_48')
name_48 = fields.Char('Name 48', readonly=True)
infile_49 = fields.Binary('File 49', filename='name_49')
name_49 = fields.Char('Name 49', readonly=True)
infile_50 = fields.Binary('File 50', filename='name_50')
name_50 = fields.Char('Name 50', readonly=True)
infile_51 = fields.Binary('File 51', filename='name_51')
name_51 = fields.Char('Name 51', readonly=True)
infile_52 = fields.Binary('File 52', filename='name_52')
name_52 = fields.Char('Name 52', readonly=True)
infile_53 = fields.Binary('File 53', filename='name_53')
name_53 = fields.Char('Name 53', readonly=True)
infile_54 = fields.Binary('File 54', filename='name_54')
name_54 = fields.Char('Name 54', readonly=True)
infile_55 = fields.Binary('File 55', filename='name_55')
name_55 = fields.Char('Name 55', readonly=True)
infile_56 = fields.Binary('File 56', filename='name_56')
name_56 = fields.Char('Name 56', readonly=True)
infile_57 = fields.Binary('File 57', filename='name_57')
name_57 = fields.Char('Name 57', readonly=True)
infile_58 = fields.Binary('File 58', filename='name_58')
name_58 = fields.Char('Name 58', readonly=True)
infile_59 = fields.Binary('File 59', filename='name_59')
name_59 = fields.Char('Name 59', readonly=True)
infile_60 = fields.Binary('File 60', filename='name_60')
name_60 = fields.Char('Name 60', readonly=True)
class NotebookLoadResultsFileEmpty(ModelView):
@ -228,7 +308,7 @@ class NotebookLoadResultsFile(Wizard):
Analysis = pool.get('lims.analysis')
lines = []
for fline in [str(item).zfill(2) for item in range(1, 21)]:
for fline in [str(item).zfill(2) for item in range(1, 61)]:
file_ = getattr(self.start, 'infile_%s' % fline)
if not file_:
continue

View File

@ -1,70 +1,205 @@
<?xml version="1.0"?>
<form>
<label name="results_importer"/>
<field name="results_importer" widget="selection"/>
<newline/>
<group col="3" colspan="2" id="files_10">
<label name="infile_01"/>
<field name="infile_01"/>
<field name="name_01"/>
<label name="infile_02"/>
<field name="infile_02"/>
<field name="name_02"/>
<label name="infile_03"/>
<field name="infile_03"/>
<field name="name_03"/>
<label name="infile_04"/>
<field name="infile_04"/>
<field name="name_04"/>
<label name="infile_05"/>
<field name="infile_05"/>
<field name="name_05"/>
<label name="infile_06"/>
<field name="infile_06"/>
<field name="name_06"/>
<label name="infile_07"/>
<field name="infile_07"/>
<field name="name_07"/>
<label name="infile_08"/>
<field name="infile_08"/>
<field name="name_08"/>
<label name="infile_09"/>
<field name="infile_09"/>
<field name="name_09"/>
<label name="infile_10"/>
<field name="infile_10"/>
<field name="name_10"/>
</group>
<group col="3" colspan="2" id="files_20">
<label name="infile_11"/>
<field name="infile_11"/>
<field name="name_11"/>
<label name="infile_12"/>
<field name="infile_12"/>
<field name="name_12"/>
<label name="infile_13"/>
<field name="infile_13"/>
<field name="name_13"/>
<label name="infile_14"/>
<field name="infile_14"/>
<field name="name_14"/>
<label name="infile_15"/>
<field name="infile_15"/>
<field name="name_15"/>
<label name="infile_16"/>
<field name="infile_16"/>
<field name="name_16"/>
<label name="infile_17"/>
<field name="infile_17"/>
<field name="name_17"/>
<label name="infile_18"/>
<field name="infile_18"/>
<field name="name_18"/>
<label name="infile_19"/>
<field name="infile_19"/>
<field name="name_19"/>
<label name="infile_20"/>
<field name="infile_20"/>
<field name="name_20"/>
</group>
<field name="results_importer" widget="selection" width="600"/>
<notebook height="400">
<page string="20" id="p20">
<group col="3" colspan="2" id="g10">
<label name="infile_01"/>
<field name="infile_01"/>
<field name="name_01"/>
<label name="infile_02"/>
<field name="infile_02"/>
<field name="name_02"/>
<label name="infile_03"/>
<field name="infile_03"/>
<field name="name_03"/>
<label name="infile_04"/>
<field name="infile_04"/>
<field name="name_04"/>
<label name="infile_05"/>
<field name="infile_05"/>
<field name="name_05"/>
<label name="infile_06"/>
<field name="infile_06"/>
<field name="name_06"/>
<label name="infile_07"/>
<field name="infile_07"/>
<field name="name_07"/>
<label name="infile_08"/>
<field name="infile_08"/>
<field name="name_08"/>
<label name="infile_09"/>
<field name="infile_09"/>
<field name="name_09"/>
<label name="infile_10"/>
<field name="infile_10"/>
<field name="name_10"/>
</group>
<group col="3" colspan="2" id="g20">
<label name="infile_11"/>
<field name="infile_11"/>
<field name="name_11"/>
<label name="infile_12"/>
<field name="infile_12"/>
<field name="name_12"/>
<label name="infile_13"/>
<field name="infile_13"/>
<field name="name_13"/>
<label name="infile_14"/>
<field name="infile_14"/>
<field name="name_14"/>
<label name="infile_15"/>
<field name="infile_15"/>
<field name="name_15"/>
<label name="infile_16"/>
<field name="infile_16"/>
<field name="name_16"/>
<label name="infile_17"/>
<field name="infile_17"/>
<field name="name_17"/>
<label name="infile_18"/>
<field name="infile_18"/>
<field name="name_18"/>
<label name="infile_19"/>
<field name="infile_19"/>
<field name="name_19"/>
<label name="infile_20"/>
<field name="infile_20"/>
<field name="name_20"/>
</group>
</page>
<page string="40" id="p40" >
<group col="3" colspan="2" id="g30">
<label name="infile_21"/>
<field name="infile_21"/>
<field name="name_21"/>
<label name="infile_22"/>
<field name="infile_22"/>
<field name="name_22"/>
<label name="infile_23"/>
<field name="infile_23"/>
<field name="name_23"/>
<label name="infile_24"/>
<field name="infile_24"/>
<field name="name_24"/>
<label name="infile_25"/>
<field name="infile_25"/>
<field name="name_25"/>
<label name="infile_26"/>
<field name="infile_26"/>
<field name="name_26"/>
<label name="infile_27"/>
<field name="infile_27"/>
<field name="name_27"/>
<label name="infile_28"/>
<field name="infile_28"/>
<field name="name_28"/>
<label name="infile_29"/>
<field name="infile_29"/>
<field name="name_29"/>
<label name="infile_30"/>
<field name="infile_30"/>
<field name="name_30"/>
</group>
<group col="3" colspan="2" id="g40">
<label name="infile_31"/>
<field name="infile_31"/>
<field name="name_31"/>
<label name="infile_32"/>
<field name="infile_32"/>
<field name="name_32"/>
<label name="infile_33"/>
<field name="infile_33"/>
<field name="name_33"/>
<label name="infile_34"/>
<field name="infile_34"/>
<field name="name_34"/>
<label name="infile_35"/>
<field name="infile_35"/>
<field name="name_35"/>
<label name="infile_36"/>
<field name="infile_36"/>
<field name="name_36"/>
<label name="infile_37"/>
<field name="infile_37"/>
<field name="name_37"/>
<label name="infile_38"/>
<field name="infile_38"/>
<field name="name_38"/>
<label name="infile_39"/>
<field name="infile_39"/>
<field name="name_39"/>
<label name="infile_40"/>
<field name="infile_40"/>
<field name="name_40"/>
</group>
</page>
<page string="60" id="p60" >
<group col="3" colspan="2" id="g50">
<label name="infile_41"/>
<field name="infile_41"/>
<field name="name_41"/>
<label name="infile_42"/>
<field name="infile_42"/>
<field name="name_42"/>
<label name="infile_43"/>
<field name="infile_43"/>
<field name="name_43"/>
<label name="infile_44"/>
<field name="infile_44"/>
<field name="name_44"/>
<label name="infile_45"/>
<field name="infile_45"/>
<field name="name_45"/>
<label name="infile_46"/>
<field name="infile_46"/>
<field name="name_46"/>
<label name="infile_47"/>
<field name="infile_47"/>
<field name="name_47"/>
<label name="infile_48"/>
<field name="infile_48"/>
<field name="name_48"/>
<label name="infile_49"/>
<field name="infile_49"/>
<field name="name_49"/>
<label name="infile_50"/>
<field name="infile_50"/>
<field name="name_50"/>
</group>
<group col="3" colspan="2" id="g60">
<label name="infile_51"/>
<field name="infile_51"/>
<field name="name_51"/>
<label name="infile_52"/>
<field name="infile_52"/>
<field name="name_52"/>
<label name="infile_53"/>
<field name="infile_53"/>
<field name="name_53"/>
<label name="infile_54"/>
<field name="infile_54"/>
<field name="name_54"/>
<label name="infile_55"/>
<field name="infile_55"/>
<field name="name_55"/>
<label name="infile_56"/>
<field name="infile_56"/>
<field name="name_56"/>
<label name="infile_57"/>
<field name="infile_57"/>
<field name="name_57"/>
<label name="infile_58"/>
<field name="infile_58"/>
<field name="name_58"/>
<label name="infile_59"/>
<field name="infile_59"/>
<field name="name_59"/>
<label name="infile_60"/>
<field name="infile_60"/>
<field name="name_60"/>
</group>
</page>
</notebook>
</form>