вот этот файл импортируется. в нем я не понимаю вооще как функция save определена. Правильно или нет и
# -*- coding: utf-8 -*-
import os, csv
import rashoddir
def save(rashodDir):
def write(otdel):
for s in otdel.otdels:
writer.writerow((s.name, otdel.name))
write(s)
writer = csv.writer(open(os.path.join(os.curdir, 'otdel.csv'), 'wb'), delimiter=';')
writer.writerow((rashodDir.otdel.name, None))
write(rashodDir.otdel)
def find(c, otdel):
if otdel.collaborators:
return otdel.name
else:
for s in otdel.otdels:
r = find(c, s)
if r:
return r
writer = csv.writer(open(os.path.join(os.curdir, 'mts.csv'), 'wb'), delimiter=';')
for r in rashodDir:
writer.writerow((r.rashod.sum, r.collaborator.code, r.collaborator.family, r.collaborator.name, r.collaborator.patronym, find(r.collaborator, rashodDir.otdel), r.rashod.type.name))
def load():
otdel = {}
for rec in csv.reader(open(os.path.join(os.curdir, 'otdel.csv'), 'rb'), delimiter=';'):
otdel[rec[0]] = rashoddir.Otdel(rec[0])
if rec[1]:
otdel[rec[1]].addOtdel(otdel[rec[0]])
else:
rashodDir = rashoddir.RashodDir(rashoddir.Rashods(rashoddir.RashodTypes()), otdel[rec[0]])
rashods, rashodTypes, collaborators = {}, {}, {}
for rec in csv.reader(open(os.path.join(os.curdir, 'mts.csv'), 'rb'), delimiter=';'):
if rec[6] not in rashodTypes:
rashodTypes[rec[6]] = rashoddir.RashodType(rec[6])
rashodDir.rashods.rashodTypes.add(rashodTypes[rec[6]])
if rec[0] not in rashods:
rashods[rec[0]] = rashoddir.Rashod(rec[0], rashodTypes[rec[6]])
rashodDir.rashods.add(rashods[rec[0]])
key = int(rec[1])
if key not in collaborators:
collaborators[key] = rashoddir.Collaborator(key, rec[2], rec[3], rec[4])
otdel[rec[5]].add(collaborators[key]) #вот здесь ошибка обычно
rashodDir.add(rashoddir.RashodRecord(rashods[rec[0]], collaborators[key]))
return rashodDir
if __name__ == '__main__':
rashodDir = load()
for s in rashodDir.otdel.iterOtdel():
if s.name == 'пресс-секретарь':
for r in rashodDir:
if r.collaborator in s and r.collaborator.family.find('ан') >= 0:
print r.rashod.sum, "%s %s. %s."% \
(r.collaborator.family, r.collaborator.name[:2], r.collaborator.patronym[:2])
break
for s in rashodDir.otdel.iterOtdel():
if s.name == 'руководство':
for r in rashodDir:
if r.collaborator in s and r.collaborator.family.find('ск') >= 0:
print r.rashod.sum, "%s %s. %s."% \
(r.collaborator.family, r.collaborator.name[:2], r.collaborator.patronym[:2])
break
save(rashodDir)