我正在构建一个 edifact 翻译器/编辑器。为了显示现有的翻译,我有以下控制器:
import shutil
import sys
import fileinput
def edit_datafile():
#inlees gedeelte van een bestaand datatype
file = open('/home/wouter/DESADVCB.pcf', 'r')
datas = []
data = {}
row = {}
j = 1
for line in file:
meg = line.strip().split(':', 3)
if line.startswith('#'):
c = 1
unmark = line.strip().split('#')
datas.append('#')
datas.append(unmark[1])
data[j,c] = datas
datas=[]
j = j+1
else:
if '.' in meg[0]:
t = meg[0].split('.')
if '+' in t[0]:
a = t[0].split('+')
datas.append(a[0])
datas.append(a[1])
else:
datas.append(t[0])
datas.append(t[1])
try:
t[2]
datas.append(t[2])
except IndexError, e:
datas.append('')
else:
if '+' in meg[0]:
a = meg[0].split('+')
datas.append(a[0])
datas.append(a[1])
else:
datas.append(meg[0])
datas.append('')
datas.append('')
datas.append('')
datas.append(meg[1])
datas.append(meg[2])
try:
meg[3]
if ':' in line:
reg = meg[3].strip().split(':')
c = 1
for teg in reg:
seg = teg.split('=')
if '.' in seg[0]:
t = seg[0].split('.')
datas.append(t[0])
datas.append(t[1])
try:
t[2]
datas.append(t[2])
except IndexError, a:
datas.append('')
try:
t[3]
datas.append(t[3])
except IndexError, a:
datas.append('')
s= seg[1].split('.', 3)
datas.append(s[0])
datas.append(s[1])
datas.append(s[2])
datas.append(s[3])
data[j,c]=datas
c = c+1
else:
datas.append(seg[0])
datas.append('')
datas.append('')
datas.append('')
s= seg[1].split('.', 3)
datas.append(s[0])
datas.append(s[1])
datas.append(s[2])
datas.append(s[3])
data[j,c]=datas
c= c+1
datas=[]
j = j+1
else:
seg = meg[3].strip().split('=')
if '.' in seg[0]:
t = seg[0].split('.')
datas.append(t[0])
datas.append(t[1])
try:
t[2]
datas.append(t[2])
except IndexError, a:
datas.append('')
try:
t[3]
datas.append(t[3])
except IndexError, a:
datas.append('')
else:
datas.append(seg[0])
datas.append('')
datas.append('')
datas.append('')
s= seg[1].split('.', 3)
datas.append(s[0])
datas.append(s[1])
datas.append(s[2])
datas.append(s[3])
data[j] = datas
datas=[]
j = j+1
except IndexError, a:
c = 1
datas.append('')
datas.append('')
datas.append('')
datas.append('')
datas.append('')
datas.append('')
datas.append('')
datas.append('')
data[j,c] = datas
datas=[]
j = j+1
# form om regels toe te voegen
form_ar = FORM(
TABLE(THEAD(
TR(
TH('Nieuw:'),
TH('Toevoegen:'),
TH('Nummer:')
)),
TBODY(TR(
TD(SELECT('rij','remark', value='rij',_name='t')),
TD(SELECT('voor', 'na', value='na',_name='w')),
TD(SELECT([(key,'.',skey) for (key,skey) in sorted(data.iterkeys())],_name='p')),
TD(INPUT(_type="submit", _name="make", _value="Maak"))
))))
form_er = FORM(
TABLE(
THEAD(TR(
TH('Line'),
TH('Name'),
TH('Qualifier'),
TH('Field'),
TH('Subfield'),
TH('Match'),
TH('Set'),
TH('Field'),
TH('Subfield'),
TH('Position'),
TH('Length'),
TH('Position'),
TH('Lenght'),
TH('Type'),
TH('Name')
)),
TBODY([TR(
TD(key,'.',skey),
TD(INPUT(_name='N',_value=data[key,skey][0],_style='width:30px')),
TD(INPUT(_name='Q',_value=data[key,skey][1]), _colspan=13,_style='width:450px'), rowid=data[key,skey]
)
if data[key,skey][0]=='#' else
TR(
TD(key,'.',skey),
TD(INPUT(_name='N',_value=data[key,skey][0], _style='width:30px')),
TD(INPUT(_name='Q',_value=data[key,skey][1], _style='width:30px')),
TD(INPUT(_name='IF',_value=data[key,skey][2], _style='width:30px')),
TD(INPUT(_name='IS',_value=data[key,skey][3], _style='width:30px')),
TD(INPUT(_name='IM',_value=data[key,skey][4], _style='width:30px')),
TD(INPUT(_name='IT',_value=data[key,skey][5], _style='width:30px')),
TD(INPUT(_name='OF',_value=data[key,skey][6], _style='width:30px')),
TD(INPUT(_name='OS',_value=data[key,skey][7], _style='width:30px')),
TD(INPUT(_name='IP',_value=data[key,skey][8], _style='width:30px')),
TD(INPUT(_name='IL',_value=data[key,skey][9], _style='width:30px')),
TD(INPUT(_name='OP',_value=data[key,skey][10], _style='width:30px')),
TD(INPUT(_name='OL',_value=data[key,skey][11], _style='width:30px')),
TD(INPUT(_name='OT',_value=data[key,skey][12], _style='width:10px')),
TD(INPUT(_name='ON',_value=data[key,skey][13])), rowid=data[key,skey]
)
if skey==1 else
TR(
TD(key,'.',skey),
TD(_maxlength='3',_size='3'),
TD(_colspan=5),
TD(INPUT(_name='OF',_value=data[key,skey][0], _style='width:30px')),
TD(INPUT(_name='OS',_value=data[key,skey][1], _style='width:30px')),
TD(INPUT(_name='IP',_value=data[key,skey][2], _style='width:30px')),
TD(INPUT(_name='IL',_value=data[key,skey][3], _style='width:30px')),
TD(INPUT(_name='OP',_value=data[key,skey][4], _style='width:30px')),
TD(INPUT(_name='OL',_value=data[key,skey][5], _style='width:30px')),
TD(INPUT(_name='OT',_value=data[key,skey][6], _style='width:10px')),
TD(INPUT(_name='ON',_value=data[key,skey][7])), rowid=data[key,skey]
) for (key,skey) in sorted(data.iterkeys())]),_id="example",_class="display"),
INPUT(_type="submit", _name="save", _value="Save Page")
)
return dict(data=data,form_ar=form_ar, form_er=form_er, f=f)
文件是这样的:
BGM+351::1:2=1.8.0.doorlopend nummer CobanaFruchtring
#remark test
DTM+191:::1.3=316.8.D.aankomstdatum (verwacht)
NAD+SU:::2=46.8.0.Lieferantennummer:4.1=54.9..Lieferantenname
NAD+BY:::2=63.8.0.ontvangernummer:4.1=71.9..ontvangernaam
TDT+20:::8.4=299.17..bootnaam
CPS::2
LIN::3
PIA+5:::3.1=80.34..Hoofdsoort/Varieteit:4.1=216.17..EAN-code:5.1=182.17..Verpakking
PIA+1:::2.1=114.17..Marke:3.1=29.17..Ursprungland ISO-code:4.1=250.8..Size:5.1=148.17..Qualitaetsbezeichnung
MEA+AAA.2.1:::3.2=423.8.3.nettogewicht per collo
MEA+AAB.2.1:::3.2=439.8.3.brutogewicht per collo
MEA+AAJ.2.1:::3.2=258.4.0.vpp
QTY+21:::1.2=455.8.0.verwachte colli
FTX+PAL:::4.1=182.17..Palettenart
RFF+ON:::1.2.1.7=233.6.0.Partie-Nummer:1.2.8.3=239.3..Partie-pos
RRF+ZZZ:::1.2.1.8=471.8.2.SBX partijnummer:1.2.16.4=479.4..SBX varieteitscode:1.2.20.4=483.4..SBX merkcode:1.2.28.4=487.4..SBX categoriecode:1.2.32.4=490.1..SBX verpakkingscode
LOC+18:::2.4=324.17..Ankunfthafen
PCI+IEN:::2=262.11..Containernummer
我希望能够在表单中添加行,而无需在所需位置提交。我已经查看了 powertable、datatables 和 jQuery 来实现这一点,但我似乎找不到合适的解决方案。
有人能帮我吗?