home · contact · privacy
Add foreign key restraints, expand and fix tests, add deletion and forking.
[misc] / income_progress_bars.py
index 60f710454f5435c60ca6be4af810a19de7526cb2..5d9a887323feb2cc7da85f1e81dae7bc696d83f2 100644 (file)
@@ -170,104 +170,98 @@ class IncomeProgressHandler(PlomHandler):
         return 'income_progress', default_path 
 
     def do_POST(self):
-        self.post_income_update()
+        self.try_do(self.post_income_update)
 
     def post_income_update(self):
         from urllib.parse import parse_qs
-        try:
-            length = int(self.headers['content-length'])
-            postvars = parse_qs(self.rfile.read(length).decode(), keep_blank_values=1)
-            db = IncomeDB()
-            db.workday_minutes_worked_1 = int(postvars['workday_minutes_worked_1'][0])
-            db.workday_minutes_worked_2 = int(postvars['workday_minutes_worked_2'][0])
-            db.workday_minutes_worked_3 = int(postvars['workday_minutes_worked_3'][0])
-            db.workday_hourly_rate_1 = int(postvars['workday_hourly_rate_1'][0])
-            db.workday_hourly_rate_2 = int(postvars['workday_hourly_rate_2'][0])
-            db.workday_hourly_rate_3 = int(postvars['workday_hourly_rate_3'][0])
-            db.year_goal = int(postvars['year_goal'][0])
-            db.workdays_per_month = int(postvars['workdays_per_month'][0])
-            if 'finish' in postvars.keys():
-                day_income = (db.workday_minutes_worked_1 / 60.0) * db.workday_hourly_rate_1
-                day_income += (db.workday_minutes_worked_2 / 60.0) * db.workday_hourly_rate_2
-                day_income += (db.workday_minutes_worked_3 / 60.0) * db.workday_hourly_rate_3
-                db.year_income += day_income
-                db.month_income += day_income
-                db.week_income += day_income
-                db.workday_minutes_worked_1 = 0
-                db.workday_minutes_worked_2 = 0
-                db.workday_minutes_worked_3 = 0
-            db.write_db()
-            homepage = self.apps['income_progress'] if hasattr(self, 'apps') else self.homepage
-            self.redirect(homepage)
-        except PlomException as e:
-            self.fail_400(e) 
+        length = int(self.headers['content-length'])
+        postvars = parse_qs(self.rfile.read(length).decode(), keep_blank_values=1)
+        db = IncomeDB()
+        db.workday_minutes_worked_1 = int(postvars['workday_minutes_worked_1'][0])
+        db.workday_minutes_worked_2 = int(postvars['workday_minutes_worked_2'][0])
+        db.workday_minutes_worked_3 = int(postvars['workday_minutes_worked_3'][0])
+        db.workday_hourly_rate_1 = int(postvars['workday_hourly_rate_1'][0])
+        db.workday_hourly_rate_2 = int(postvars['workday_hourly_rate_2'][0])
+        db.workday_hourly_rate_3 = int(postvars['workday_hourly_rate_3'][0])
+        db.year_goal = int(postvars['year_goal'][0])
+        db.workdays_per_month = int(postvars['workdays_per_month'][0])
+        if 'finish' in postvars.keys():
+            day_income = (db.workday_minutes_worked_1 / 60.0) * db.workday_hourly_rate_1
+            day_income += (db.workday_minutes_worked_2 / 60.0) * db.workday_hourly_rate_2
+            day_income += (db.workday_minutes_worked_3 / 60.0) * db.workday_hourly_rate_3
+            db.year_income += day_income
+            db.month_income += day_income
+            db.week_income += day_income
+            db.workday_minutes_worked_1 = 0
+            db.workday_minutes_worked_2 = 0
+            db.workday_minutes_worked_3 = 0
+        db.write_db()
+        homepage = self.apps['income_progress'] if hasattr(self, 'apps') else self.homepage
+        self.redirect(homepage)
 
     def do_GET(self):
-        self.display_income_progress()
+        self.try_do(self.display_income_progress)
 
     def display_income_progress(self):
         import datetime
         import calendar
-        try:
-            db = IncomeDB()
-            today = datetime.datetime.now()
-            update_db = False
-            if today.year != db.timestamp_year:
-                db.timestamp_year = today.year
-                db.timestamp_month = today.month
-                db.year_income = 0
-                db.month_income = 0
-                update_db = True
-            if today.month != db.timestamp_month:
-                db.timestamp_month = today.month
-                db.month_income = 0
-                update_db = True
-            if today.isocalendar()[1] != db.timestamp_week:
-                db.timestamp_week = today.isocalendar()[1]
-                db.week_income = 0
-                update_db = True
-            if update_db:
-                print("Resetting timestamp")
-                db.write_db()
-            day_of_year = today.toordinal() - datetime.date(today.year, 1, 1).toordinal() + 1
-            year_length = 365 + calendar.isleap(today.year)
-            workday_goal = db.year_goal / 12 / db.workdays_per_month
-            workdays_per_week = (db.workdays_per_month * 12) / (year_length / 7)
-            month_goal = db.year_goal / 12
-            week_goal = db.year_goal / (year_length / 7)
-            day_income = (db.workday_minutes_worked_1 / 60.0) * db.workday_hourly_rate_1
-            day_income += (db.workday_minutes_worked_2 / 60.0) * db.workday_hourly_rate_2
-            day_income += (db.workday_minutes_worked_3 / 60.0) * db.workday_hourly_rate_3
-            year_plus = db.year_income + day_income
-            month_plus = db.month_income + day_income
-            week_plus = db.week_income + day_income
-            progress_time_year = day_of_year / year_length
-            progress_time_month = today.day / calendar.monthrange(today.year, today.month)[1]
-            progress_time_week = today.weekday() / 7
-            progress_bars = [ProgressBar("year", year_plus, db.year_goal, progress_time_year),
-                             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,
-                    workday_hourly_rate_2 = db.workday_hourly_rate_2,
-                    workday_minutes_worked_2 = db.workday_minutes_worked_2,
-                    workday_hourly_rate_3 = db.workday_hourly_rate_3,
-                    workday_minutes_worked_3 = db.workday_minutes_worked_3,
-                    year_goal = db.year_goal,
-                    month_goal = month_goal,
-                    week_goal = week_goal,
-                    workdays_per_month = db.workdays_per_month,
-                    workday_goal = workday_goal,
-                    workdays_per_week = workdays_per_week,
-                    )
-            self.send_HTML(page)
-        except PlomException as e:
-            self.fail_400(e) 
+        db = IncomeDB()
+        today = datetime.datetime.now()
+        update_db = False
+        if today.year != db.timestamp_year:
+            db.timestamp_year = today.year
+            db.timestamp_month = today.month
+            db.year_income = 0
+            db.month_income = 0
+            update_db = True
+        if today.month != db.timestamp_month:
+            db.timestamp_month = today.month
+            db.month_income = 0
+            update_db = True
+        if today.isocalendar()[1] != db.timestamp_week:
+            db.timestamp_week = today.isocalendar()[1]
+            db.week_income = 0
+            update_db = True
+        if update_db:
+            print("Resetting timestamp")
+            db.write_db()
+        day_of_year = today.toordinal() - datetime.date(today.year, 1, 1).toordinal() + 1
+        year_length = 365 + calendar.isleap(today.year)
+        workday_goal = db.year_goal / 12 / db.workdays_per_month
+        workdays_per_week = (db.workdays_per_month * 12) / (year_length / 7)
+        month_goal = db.year_goal / 12
+        week_goal = db.year_goal / (year_length / 7)
+        day_income = (db.workday_minutes_worked_1 / 60.0) * db.workday_hourly_rate_1
+        day_income += (db.workday_minutes_worked_2 / 60.0) * db.workday_hourly_rate_2
+        day_income += (db.workday_minutes_worked_3 / 60.0) * db.workday_hourly_rate_3
+        year_plus = db.year_income + day_income
+        month_plus = db.month_income + day_income
+        week_plus = db.week_income + day_income
+        progress_time_year = day_of_year / year_length
+        progress_time_month = today.day / calendar.monthrange(today.year, today.month)[1]
+        progress_time_week = today.weekday() / 7
+        progress_bars = [ProgressBar("year", year_plus, db.year_goal, progress_time_year),
+                         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,
+                workday_hourly_rate_2 = db.workday_hourly_rate_2,
+                workday_minutes_worked_2 = db.workday_minutes_worked_2,
+                workday_hourly_rate_3 = db.workday_hourly_rate_3,
+                workday_minutes_worked_3 = db.workday_minutes_worked_3,
+                year_goal = db.year_goal,
+                month_goal = month_goal,
+                week_goal = week_goal,
+                workdays_per_month = db.workdays_per_month,
+                workday_goal = workday_goal,
+                workdays_per_week = workdays_per_week,
+                )
+        self.send_HTML(page)
 
 
 if __name__ == "__main__":