home · contact · privacy
Add "add new Booking" button.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 13 Mar 2025 10:11:27 +0000 (11:11 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 13 Mar 2025 10:11:27 +0000 (11:11 +0100)
src/run.py
src/templates/_macros.tmpl

index 92a136f925438ee4fa51666fe8b6feaf85de6373..825d4a75a3e2a0d19966e5ddbd25802cc7c3d4ce 100755 (executable)
@@ -456,13 +456,16 @@ class Handler(PlomHttpHandler):
 
     def post_ledger_action(self) -> Path:
         """Based on trigger postvar call .server.(move|copy)_booking."""
-        keys_prefixed = self.postvars.keys_prefixed(PREFIX_LEDGER)
-        action, id_str, dir_ = keys_prefixed[0].split('_', maxsplit=3)[1:]
-        id_ = int(id_str)
-        if action == 'move':
-            id_ = self.server.move_booking(id_, dir_ == 'up')
-            return Path(self.path).joinpath(f'#{id_}')
-        id_ = self.server.copy_booking(id_, dir_ == 'to_end')
+        if 'add_booking' in self.postvars.as_dict:
+            id_ = self.server.add_empty_booking()
+        else:
+            keys_prefixed = self.postvars.keys_prefixed(PREFIX_LEDGER)
+            action, id_str, dir_ = keys_prefixed[0].split('_', maxsplit=3)[1:]
+            id_ = int(id_str)
+            if action == 'move':
+                id_ = self.server.move_booking(id_, dir_ == 'up')
+                return Path(self.path).joinpath(f'#{id_}')
+            id_ = self.server.copy_booking(id_, dir_ == 'to_end')
         return Path(EDIT_STRUCT).joinpath(f'{id_}')
 
     def do_GET(self) -> None:
@@ -718,6 +721,15 @@ class Server(PlomHttpServer):
         self._recalc_dat_lines()
         return new_booking.id_
 
+    def add_empty_booking(self) -> int:
+        """Add new Booking to end of ledger."""
+        booking = Booking(len(self.bookings),
+                          [DatLine(f'{dt_date.today().isoformat()} ?')])
+        self.bookings += [booking]
+        booking.recalc_prev_next(self.bookings)
+        self._recalc_dat_lines()
+        return booking.id_
+
     def copy_booking(self, id_: int, to_end: bool) -> int:
         """Add copy of Booking of id_ to_end of ledger, or after copied."""
         copied = self.bookings[id_]
index f6495aa4b9c4d94238c7738faf3810f603d26827..fe783f7c953b4beef14f7a8484513a49261e7ce2 100644 (file)
@@ -93,6 +93,7 @@ table.ledger tr > td:first-child { background-color: white; }
   {% endif %}
 {% endfor %}
 </table>
+<input type="submit" name="add_booking" value="add Booking" />
 </form>
 {% endmacro %}