FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

new: TimegridUnits · robquant/python-webuntis@596b6b5 · GitHub

Commit 596b6b5

Browse files
committed
new: TimegridUnits
1 parent 2f9964a commit 596b6b5

3 files changed

Lines changed: 68 additions & 8 deletions

File tree

‎tests/test_objects.py‎

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
class ResultTests(WebUntisTestCase):
88
Result = webuntis.objects.Result
9+
910
def test_initialization(self):
1011
r = self.Result(data={'id': 123}, session=object())
1112
self.assert_strict_equal(r.id, int(r), 123)
@@ -89,12 +90,12 @@ class CustomListResult(self.Result):
8990
x = list(r.filter(id=1))
9091
self.assert_strict_equal(x, [results[1]])
9192

92-
x = list(r.filter(id=set([1,2])))
93+
x = list(r.filter(id=set([1, 2])))
9394
self.assert_strict_equal(x, [results[1], results[2]])
9495

9596
self.assert_strict_equal(
96-
list(r.filter(id=set([1,2])).filter(one='eins')),
97-
list(r.filter(one='eins', id=set([1,2]))),
97+
list(r.filter(id=set([1, 2])).filter(one='eins')),
98+
list(r.filter(one='eins', id=set([1, 2]))),
9899
[results[1]]
99100
)
100101

@@ -111,6 +112,7 @@ def test_basics(self):
111112
self.assert_strict_equal(x.name, u'ZIMMER')
112113
self.assert_strict_equal(x.long_name, u'Das Zimmer')
113114

115+
114116
class HolidayTests(WebUntisTestCase):
115117
def test_basics(self):
116118
x = webuntis.objects.HolidayObject(
@@ -146,6 +148,7 @@ def test_basics(self):
146148

147149
class PeriodTests(WebUntisTestCase):
148150
Obj = webuntis.objects.PeriodObject
151+
149152
def test_dates(self):
150153
x = self.Obj(
151154
data={
@@ -181,7 +184,7 @@ def test_type(self):
181184
self.assert_strict_equal(x.type, u'ls')
182185

183186
for type in (u'ls', u'oh', u'sb', u'bs', u'ex'):
184-
x = self.Obj(data={u'lstype':type}, session=object())
187+
x = self.Obj(data={u'lstype': type}, session=object())
185188
self.assert_strict_equal(x.type, type)
186189

187190
x = self.Obj(data={u'type': u'hoompaloompa'}, session=object())
@@ -219,7 +222,6 @@ class parent(object):
219222
assert x.end.strftime('%Y-%m-%d') == '2012-09-01'
220223
assert x.name == u'Holidayz'
221224

222-
223225
def test_list(self):
224226
class StubSession(object):
225227
def _request(s, method):
@@ -251,7 +253,7 @@ def test_basics(self):
251253
session=object()
252254
)
253255

254-
self.assert_strict_equal(x.name, u'Math')
256+
self.assert_strict_equal(x.name, u'Math')
255257
self.assert_strict_equal(x.long_name, u'Mathematics')
256258

257259

@@ -270,6 +272,7 @@ def test_basics(self):
270272
self.assert_strict_equal(x.long_name, x.surname, u'Gans')
271273
self.assert_strict_equal(x.name, u'Hans Gans')
272274

275+
273276
class TimeStampTests(WebUntisTestCase):
274277
def test_basics(self):
275278
x = webuntis.objects.TimeStampObject(
@@ -283,5 +286,18 @@ def test_basics(self):
283286
self.assertEqual(x.date.time().hour, exp.time().hour)
284287
self.assertEqual(x.date.time().minute, exp.time().minute)
285288
self.assertEqual(x.date.time().second, exp.time().second)
286-
287-
289+
290+
291+
class TimegridTests(WebUntisTestCase):
292+
def test_basics(self):
293+
x = webuntis.objects.TimegridObject(
294+
data=[{'day': 2, 'timeUnits': [{'startTime': 710, 'name': '0', 'endTime': 800},
295+
{'startTime': 800, 'name': '1', 'endTime': 850},
296+
{'startTime': 850, 'name': '2', 'endTime': 940}]}],
297+
session = object())
298+
299+
self.assertEqual(x[0].day, 2)
300+
self.assertEqual(x[0].dayname, "monday")
301+
self.assertEqual(x[0].timeUnits[0].name, "0")
302+
self.assertEqual(x[0].timeUnits[1].start, datetime.time(8, 0))
303+
self.assertEqual(x[0].timeUnits[2].end, datetime.time(9, 40))

‎webuntis/objects.py‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,3 +631,42 @@ class SubstitutionList(ListResult):
631631
'''A list of substitutions in form of :py:class:`SubstitutionObject` instances.'''
632632
_itemclass = SubstitutionObject
633633

634+
635+
class TimeUnitObject(Result):
636+
@lazyproperty
637+
def name(self):
638+
'''Name of Timeunit'''
639+
return self._data[u'name']
640+
641+
@lazyproperty
642+
def start(self):
643+
return datetime_utils.parse_time(
644+
self._data[u'startTime']
645+
).time()
646+
647+
@lazyproperty
648+
def end(self):
649+
return datetime_utils.parse_time(
650+
self._data[u'endTime']
651+
).time()
652+
653+
class TimegridDayObject(Result):
654+
@lazyproperty
655+
def day(self):
656+
return self._data[u'day']
657+
658+
@lazyproperty
659+
def dayname(self):
660+
names = { 1:"sunday", 2:"monday", 3:"tuesday", 4:"wednesday", 5:"thursday", 6: "friday", 7:"saturday" }
661+
return names[self._data[u'day']]
662+
663+
@lazyproperty
664+
def timeUnits(self):
665+
return [
666+
TimeUnitObject(parent=self, data=data)
667+
for data in self._data[u'timeUnits']
668+
]
669+
670+
class TimegridObject(ListResult):
671+
_itemclass = TimegridDayObject
672+

‎webuntis/session.py‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,11 @@ def substitutions(self, start, end, departmentId=0):
309309
return objects.SubstitutionList, 'getSubstitutions', parameters
310310

311311

312+
@result_wrapper
313+
def TimegridUnits(self):
314+
return objects.TimegridObject, 'getTimegridUnits', {}
315+
316+
312317
class Session(JSONRPCSession, ResultWrapperMixin):
313318
'''The origin of everything you want to do with the WebUntis API. Can be
314319
used as a context-manager to provide automatic log-out.

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL