home · contact · privacy
Add script to unify all accounting servers into one.
[misc] / income_progress_bars.py
index 553627d3788f2f44a0be3fa605453e021f79ac27..60f710454f5435c60ca6be4af810a19de7526cb2 100644 (file)
@@ -1,7 +1,7 @@
 import os
 import json
 import jinja2
-from plomlib import PlomDB, PlomException, run_server, run_server, PlomServer
+from plomlib import PlomDB, PlomException, run_server, PlomHandler 
 
 server_port = 8083
 db_path = '/home/plom/org/income.json'
@@ -84,7 +84,7 @@ table {
 <td class="progressbar surplusbar"><div class="diff_goal">{{p.diff_goal}}</div><div class="progressbar surplus" style="width: {{p.success_income_bonus}}px" ></div></td></tr>
 {% endfor %}</table>
 
-<form action="/" method="POST">
+<form action="{{homepage}}" method="POST">
 <table>
 <tr><th>hourly rate</th><th>worked today</th></tr>
 <tr><td class="input_container"><input type="number" min="1" class="rate" name="workday_hourly_rate_1" value="{{workday_hourly_rate_1}}"/>€</td><td><input type="number" min="0" class="minutes" name="workday_minutes_worked_1" value="{{workday_minutes_worked_1}}" step="5" /> minutes</td>
@@ -161,9 +161,18 @@ class ProgressBar:
                 self.success = success_income / time_progress
 
 
-class IncomeServer(PlomServer):
+class IncomeProgressHandler(PlomHandler):
+    
+    def app_init(self, handler):
+        default_path = '/income_progress'
+        handler.add_route('GET', default_path, self.display_income_progress) 
+        handler.add_route('POST', default_path, self.post_income_update) 
+        return 'income_progress', default_path 
 
     def do_POST(self):
+        self.post_income_update()
+
+    def post_income_update(self):
         from urllib.parse import parse_qs
         try:
             length = int(self.headers['content-length'])
@@ -188,11 +197,15 @@ class IncomeServer(PlomServer):
                 db.workday_minutes_worked_2 = 0
                 db.workday_minutes_worked_3 = 0
             db.write_db()
-            self.redirect()
+            homepage = self.apps['income_progress'] if hasattr(self, 'apps') else self.homepage
+            self.redirect(homepage)
         except PlomException as e:
             self.fail_400(e) 
 
     def do_GET(self):
+        self.display_income_progress()
+
+    def display_income_progress(self):
         import datetime
         import calendar
         try:
@@ -235,7 +248,9 @@ class IncomeServer(PlomServer):
                              ProgressBar("month", month_plus, month_goal, progress_time_month),
                              ProgressBar("week", week_plus, week_goal, progress_time_week),
                              ProgressBar("workday", day_income, workday_goal)]
+            homepage = self.apps['income_progress'] if hasattr(self, 'apps') else self.homepage
             page = jinja2.Template(tmpl).render(
+                    homepage = homepage,
                     progress_bars = progress_bars,
                     workday_hourly_rate_1 = db.workday_hourly_rate_1,
                     workday_minutes_worked_1 = db.workday_minutes_worked_1,
@@ -256,4 +271,4 @@ class IncomeServer(PlomServer):
 
 
 if __name__ == "__main__":       
-    run_server(server_port, IncomeServer)
+    run_server(server_port, IncomeProgressHandler)