Skip to content

Commit

Permalink
Merge pull request #14 from actlaboratory/cat/duration
Browse files Browse the repository at this point in the history
Resolves #7 時間表記のバリデーションをdomainに持って来る
  • Loading branch information
yncat authored Jan 12, 2024
2 parents 58e61af + dd953bc commit 7d37c24
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 16 deletions.
6 changes: 5 additions & 1 deletion domain/duration.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,8 @@ def normalizeToFullPositionStr(positionStr):
if m3 is not None:
return millisecondsToPositionStr(int(m3.group(1)) * 1000 * 60 * 60 + int(m3.group(2)) * 1000 * 60 + int(m3.group(3)) * 1000)
# end if
return positionStr
m4 = re.match(r"^(\d+):(\d+):(\d+)\.(\d{1,3})$", positionStr)
if m4 is not None:
return positionStr
#end if
raise ValueError("Invalid position string: %s" % positionStr)
2 changes: 2 additions & 0 deletions test/domain_test/testDuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,5 @@ def test_normalizeToFullPositionStr(self):
self.assertEqual(domain.normalizeToFullPositionStr("01:00:00"), "01:00:00.000")
self.assertEqual(domain.normalizeToFullPositionStr("01:01:01"), "01:01:01.000")
self.assertEqual(domain.normalizeToFullPositionStr("00:00:00.000"), "00:00:00.000")
self.assertRaises(ValueError, domain.normalizeToFullPositionStr, "00:00:13.4444")
self.assertRaises(ValueError, domain.normalizeToFullPositionStr, "aaaa")
20 changes: 5 additions & 15 deletions views/steps/durationInput.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,7 @@
from logging import getLogger
from views.baseDialog import *
import simpleDialog

validPatterns = [
re.compile(r"^\d{1,2}$"),
re.compile(r"^\d{1,2}:\d{1,2}$"),
re.compile(r"^\d{1,2}:\d{1,2}:\d{1,2}$"),
re.compile(r"^\d{1,2}:\d{1,2}:\d{1,2}:\d{1,3}$"),
]
import domain

class DurationInputDialog(BaseDialog):
def __init__(self, parent=None, defaultValue=""):
Expand Down Expand Up @@ -48,12 +42,8 @@ def GetData(self):

def validate(self):
val = self.edit.GetValue()
found = False
for pattern in validPatterns:
if pattern.match(val):
found = True
break
if found:
try:
domain.normalizeToFullPositionStr(val)
return True
# end パターンマッチ
simpleDialog.errorDialog(_("入力された内容を時間として読み取れませんでした。"), self.wnd)
except ValueError:
simpleDialog.errorDialog(_("入力された内容を時間として読み取れませんでした。"), self.wnd)

0 comments on commit 7d37c24

Please sign in to comment.