145 |
i = page.data.index(old) |
i = page.data.index(old) |
146 |
page.data = page.data[:i] + new + page.data[i+1:] |
page.data = page.data[:i] + new + page.data[i+1:] |
147 |
page = page.prev |
page = page.prev |
148 |
except ValueError: |
except ValueError, msg: |
149 |
page = page.prev |
page = page.prev |
150 |
|
|
151 |
def add_detail(self, detail): |
def add_detail(self, detail): |
162 |
x = getattr(d, n, None) |
x = getattr(d, n, None) |
163 |
if x: |
if x: |
164 |
self.replace(x, x.render()) |
self.replace(x, x.render()) |
165 |
|
if d.footer: |
166 |
|
self.extend(d.footer.render()) |
167 |
|
|
168 |
def render(self): |
def render(self): |
169 |
post = self.post() |
post = self.post() |
267 |
self.set_extrema() |
self.set_extrema() |
268 |
|
|
269 |
def render(self): |
def render(self): |
270 |
|
while self.details: |
271 |
|
self.close_detail() |
272 |
render = [] |
render = [] |
273 |
pageno = 1 |
pageno = 1 |
274 |
compute.set_numpages(len(self.pages)) |
compute.set_numpages(len(self.pages)) |
279 |
return render |
return render |
280 |
|
|
281 |
def __str__(self): |
def __str__(self): |
|
|
|
282 |
# la impresión ocurre al completar. Entonces lo que hay que hacer es |
# la impresión ocurre al completar. Entonces lo que hay que hacer es |
283 |
# cerrar todos los detalles que queden abiertos (menos el último, para |
# cerrar todos los detalles que queden abiertos (menos el último, para |
284 |
# que salga después el page_footer) |
# que salga después el page_footer) |
|
while len(self.details) > 1: |
|
|
self.close_detail() |
|
285 |
|
|
286 |
s = "\n".join(["\n".join(self.render())]) |
s = "\n".join(["\n".join(self.render())]) |
287 |
return s |
return s |