~fabrixxm/confy-dev

Fix division by zero for events with zero duration v4 APPLIED

Evangelos Ribeiro Tzaras: 1
 Fix division by zero for events with zero duration

 2 files changed, 14 insertions(+), 2 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~fabrixxm/confy-dev/patches/23296/mbox | git am -3
Learn more about email & git

[PATCH v4] Fix division by zero for events with zero duration Export this patch

When a event has duration zero because the start and end times are identical,
ZeroDivisionError's are raised:

```
Traceback (most recent call last):
  File "/home/fortysixandtwo/install/lib/python3.9/site-packages/confy/widgets.py", line 130, in _on_draw
    prc = min(max(pos/dur, 0.0), 1.0)
ZeroDivisionError: float division by zero
```

This patch ensures that prc is either 0 if the event is in the future
or 1, if it's in the past.

Closes #18
---
 src/pages.py   | 8 +++++++-
 src/widgets.py | 8 +++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/pages.py b/src/pages.py
index 5e6c09f..2162a93 100644
--- a/src/pages.py
+++ b/src/pages.py
@@ -507,7 +507,13 @@ class EventDetailPage(BasePage):

        dur = (obj.end.timestamp() - obj.start.timestamp())
        pos = (now.timestamp() - obj.start.timestamp())
        prc = min(max(pos/dur, 0.0), 1.0)
        if dur > 0:
            prc = min(max(pos/dur, 0.0), 1.0)
        else:
            # not a valid event duration
            # set prc to 0 if the event is in the future or 1 if in the past
            prc = int(pos >= 0)

        x = w * prc

        cr.set_source_rgb(0, 0, 0)
diff --git a/src/widgets.py b/src/widgets.py
index 528244d..2bd900b 100644
--- a/src/widgets.py
+++ b/src/widgets.py
@@ -127,7 +127,13 @@ class EventActionRow(Handy.ActionRow):

        dur = (obj.end.timestamp() - obj.start.timestamp())
        pos = (now.timestamp() - obj.start.timestamp())
        prc = min(max(pos/dur, 0.0), 1.0)
        if dur > 0:
            prc = min(max(pos/dur, 0.0), 1.0)
        else:
            # not a valid event duration
            # set prc to 0 if the event is in the future or 1 if in the past
            prc = int(pos >= 0)

        y = h * prc

        cr.set_source_rgb(0, 0, 0)
-- 
2.30.2
Merged!
Thank you!