X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=ledger.py;fp=ledger.py;h=817def60ea1f2f29feeb4a4436496b1f1d2158ad;hb=4aa69f1601319ceeef640a4c56f9d2b1eb25cd6b;hp=6653af6e8e7f341cb80901f0aed83d9466c8c968;hpb=e58262d6913522cf57d5317fbf0398e2d56b29a0;p=misc diff --git a/ledger.py b/ledger.py index 6653af6..817def6 100755 --- a/ledger.py +++ b/ledger.py @@ -350,21 +350,28 @@ class LedgerDB(PlomDB): return self.real_lines[start:end] def write_db(self, text, mode='w'): + if text[-1] != '\n': + text += '\n' self.write_text_to_db(text) def insert_at_date(self, lines, date): - start_at = len(self.real_lines) - for b in self.bookings: - if b.date_string >= date: - start_at = b.start_line - break - elif b.date_string > date: - break - if start_at == len(self.real_lines): - lines = [''] + lines + print("DEBUG insert_at_date") + start_at = 0 + if len(self.bookings) > 0: + if date >= self.bookings[-1].date_string: + start_at = len(self.real_lines) + lines = [''] + lines + else: + for b in self.bookings: + if b.date_string == date: + start_at = b.start_line + elif b.date_string > date: + start_at = b.start_line + break return self.write_lines_in_total_lines_at(self.real_lines, start_at, lines) def update(self, start, end, lines, date): + print("DEBUG update") total_lines = self.real_lines[:start] + self.real_lines[end:] n_original_lines = end - start start_at = len(total_lines) @@ -607,15 +614,12 @@ class LedgerDB(PlomDB): start = end = 0 desc = head_comment = '' if len(bookings) == 0: - for i in range(1, 8): - booking_lines += [{'i': i, 'acc': '', 'amt': '', 'curr': '€', 'comment': ''}] date=today else: booking = bookings[0] desc = booking.description date = today if copy else booking.date_string head_comment=comments[0] - last_line = len(comments) for i in range(1, len(comments)): account = amount = currency = '' if i < len(booking.lines) and booking.lines[i] != '': @@ -629,6 +633,8 @@ class LedgerDB(PlomDB): 'curr': currency if currency else '€', 'comment': comments[i], 'comm_cols': len(comments[i])}] + for i in range(len(comments), len(comments) + 8): + booking_lines += [{'i': i, 'acc': '', 'amt': '', 'curr': '€', 'comment': ''}] content += tmpl.render( action=action, date=date, @@ -657,12 +663,12 @@ class LedgerDB(PlomDB): next_booking = b break start_at = next_booking.start_line + len(next_booking.lines) - (end - start) + 1 - self.make_move(start, end, start_at) + self.make_move(start, end, start_at-1) return redir_nth def make_move(self, start, end, start_at): lines = self.get_lines(start, end) - total_lines = self.real_lines[:start] + self.real_lines[end:] + total_lines = self.real_lines[:start-1] + self.real_lines[end:] # +1 because we reduce the original position's two empty border lines to in-between line self.write_lines_in_total_lines_at(total_lines, start_at, lines) def booking_lines_from_postvars(self, postvars): @@ -733,7 +739,6 @@ class LedgerHandler(PlomHandler): parsed_url = urlparse(self.path) length = int(self.headers['content-length']) postvars = parse_qs(self.rfile.read(length).decode(), keep_blank_values=1) - print("DEBUG", postvars['start'], postvars['end']) start = int(postvars['start'][0]) end = int(postvars['end'][0]) db = LedgerDB(prefix)