mirror of
https://github.com/dkmstr/openuds.git
synced 2025-01-03 01:17:56 +03:00
Fixed another calendar issue
This commit is contained in:
parent
dc640fd400
commit
afa7cb8f39
@ -46,8 +46,7 @@ import six
|
||||
import bitarray
|
||||
import logging
|
||||
|
||||
__updated__ = '2017-11-06'
|
||||
|
||||
__updated__ = '2017-12-12'
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -113,7 +112,6 @@ class CalendarChecker(object):
|
||||
|
||||
return data
|
||||
|
||||
|
||||
def _updateEvents(self, checkFrom, startEvent=True):
|
||||
|
||||
next_event = None
|
||||
@ -162,7 +160,7 @@ class CalendarChecker(object):
|
||||
Returns next event for this interval
|
||||
Returns a list of two elements. First is datetime of event begining, second is timedelta of duration
|
||||
'''
|
||||
logger.debug('Obtainint nextEvent')
|
||||
logger.debug('Obtaining nextEvent')
|
||||
if checkFrom is None:
|
||||
checkFrom = getSqlDatetime()
|
||||
|
||||
@ -183,6 +181,5 @@ class CalendarChecker(object):
|
||||
|
||||
return next_event
|
||||
|
||||
|
||||
def debug(self):
|
||||
return "Calendar checker for {}".format(self.calendar)
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
__updated__ = '2017-11-06'
|
||||
__updated__ = '2017-12-12'
|
||||
|
||||
from django.db import models
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
@ -116,6 +116,8 @@ class CalendarRule(UUIDModel):
|
||||
if self.interval == 0: # Fix 0 intervals
|
||||
self.interval = 1
|
||||
|
||||
end = datetime.datetime.combine(self.end if self.end is not None else datetime.datetime.max.date(), datetime.datetime.max.time());
|
||||
|
||||
if self.frequency == WEEKDAYS:
|
||||
dw = []
|
||||
l = self.interval
|
||||
@ -123,11 +125,16 @@ class CalendarRule(UUIDModel):
|
||||
if l & 1 == 1:
|
||||
dw.append(weekdays[i])
|
||||
l >>= 1
|
||||
return rules.rrule(rules.DAILY, byweekday=dw, dtstart=self.start)
|
||||
return rules.rrule(rules.DAILY, byweekday=dw, dtstart=self.start, until=end)
|
||||
else:
|
||||
return rules.rrule(frq_to_rrl[self.frequency], interval=self.interval, dtstart=self.start)
|
||||
return rules.rrule(frq_to_rrl[self.frequency], interval=self.interval, dtstart=self.start, until=end)
|
||||
|
||||
def as_rrule_end(self):
|
||||
if self.interval == 0: # Fix 0 intervals
|
||||
self.interval = 1
|
||||
|
||||
end = datetime.datetime.combine(self.end if self.end is not None else datetime.datetime.max.date(), datetime.datetime.max.time());
|
||||
|
||||
if self.frequency == WEEKDAYS:
|
||||
dw = []
|
||||
l = self.interval
|
||||
@ -135,9 +142,9 @@ class CalendarRule(UUIDModel):
|
||||
if l & 1 == 1:
|
||||
dw.append(weekdays[i])
|
||||
l >>= 1
|
||||
return rules.rrule(rules.DAILY, byweekday=dw, dtstart=self.start + datetime.timedelta(minutes=self.duration_as_minutes))
|
||||
return rules.rrule(rules.DAILY, byweekday=dw, dtstart=self.start + datetime.timedelta(minutes=self.duration_as_minutes), until=end)
|
||||
else:
|
||||
return rules.rrule(frq_to_rrl[self.frequency], interval=self.interval, dtstart=self.start + datetime.timedelta(minutes=self.duration_as_minutes))
|
||||
return rules.rrule(frq_to_rrl[self.frequency], interval=self.interval, dtstart=self.start + datetime.timedelta(minutes=self.duration_as_minutes), until=end)
|
||||
|
||||
@property
|
||||
def frequency_as_minutes(self):
|
||||
|
Loading…
Reference in New Issue
Block a user