本文整理汇总了Python中pycalendar.datetime.PyCalendarDateTime.parseText方法的典型用法代码示例。如果您正苦于以下问题:Python PyCalendarDateTime.parseText方法的具体用法?Python PyCalendarDateTime.parseText怎么用?Python PyCalendarDateTime.parseText使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pycalendar.datetime.PyCalendarDateTime
的用法示例。
在下文中一共展示了PyCalendarDateTime.parseText方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: doIt
# 需要导入模块: from pycalendar.datetime import PyCalendarDateTime [as 别名]
# 或者: from pycalendar.datetime.PyCalendarDateTime import parseText [as 别名]
def doIt(self, txn):
uid = raw_input("Owner UID/Name: ")
start = raw_input("Start Time (UTC YYYYMMDDTHHMMSSZ or YYYYMMDD): ")
if len(start) == 8:
start += "T000000Z"
end = raw_input("End Time (UTC YYYYMMDDTHHMMSSZ or YYYYMMDD): ")
if len(end) == 8:
end += "T000000Z"
try:
start = PyCalendarDateTime.parseText(start)
except ValueError:
print("Invalid start value")
returnValue(None)
try:
end = PyCalendarDateTime.parseText(end)
except ValueError:
print("Invalid end value")
returnValue(None)
timerange = caldavxml.TimeRange(start=start.getText(), end=end.getText())
home = yield txn.calendarHomeWithUID(uid)
if home is None:
print("Could not find calendar home")
returnValue(None)
yield self.eventsForEachCalendar(home, uid, timerange)
示例2: doPOSTExpand
# 需要导入模块: from pycalendar.datetime import PyCalendarDateTime [as 别名]
# 或者: from pycalendar.datetime.PyCalendarDateTime import parseText [as 别名]
def doPOSTExpand(self, request):
"""
Expand a timezone within specified start/end dates.
"""
tzid = request.args.get("tzid", ())
if len(tzid) != 1:
raise HTTPError(ErrorResponse(
responsecode.BAD_REQUEST,
(calendarserver_namespace, "valid-timezone"),
"Invalid tzid query parameter",
))
tzid = tzid[0]
try:
tzdata = readTZ(tzid)
except TimezoneException:
raise HTTPError(ErrorResponse(
responsecode.NOT_FOUND,
(calendarserver_namespace, "timezone-available"),
"Timezone not found",
))
try:
start = request.args.get("start", ())
if len(start) != 1:
raise ValueError()
start = PyCalendarDateTime.parseText(start[0])
except ValueError:
raise HTTPError(ErrorResponse(
responsecode.BAD_REQUEST,
(calendarserver_namespace, "valid-start-date"),
"Invalid start query parameter",
))
try:
end = request.args.get("end", ())
if len(end) != 1:
raise ValueError()
end = PyCalendarDateTime.parseText(end[0])
if end <= start:
raise ValueError()
except ValueError:
raise HTTPError(ErrorResponse(
responsecode.BAD_REQUEST,
(calendarserver_namespace, "valid-end-date"),
"Invalid end query parameter",
))
# Now do the expansion (but use a cache to avoid re-calculating TZs)
observances = self.cache.get((tzid, start, end), None)
if observances is None:
observances = tzexpand(tzdata, start, end)
self.cache[(tzid, start, end)] = observances
# Turn into XML
result = customxml.TZData(
*[customxml.Observance(customxml.Onset(onset), customxml.UTCOffset(utc_offset)) for onset, utc_offset in observances]
)
return XMLResponse(responsecode.OK, result)
示例3: __init__
# 需要导入模块: from pycalendar.datetime import PyCalendarDateTime [as 别名]
# 或者: from pycalendar.datetime.PyCalendarDateTime import parseText [as 别名]
def __init__(self, *children, **attributes):
super(CalDAVTimeRangeElement, self).__init__(*children, **attributes)
# One of start or end must be present
if "start" not in attributes and "end" not in attributes:
raise ValueError("One of 'start' or 'end' must be present in CALDAV:time-range")
self.start = PyCalendarDateTime.parseText(attributes["start"]) if "start" in attributes else None
self.end = PyCalendarDateTime.parseText(attributes["end"]) if "end" in attributes else None
示例4: __init__
# 需要导入模块: from pycalendar.datetime import PyCalendarDateTime [as 别名]
# 或者: from pycalendar.datetime.PyCalendarDateTime import parseText [as 别名]
def __init__(self, xml_element):
super(TimeRange, self).__init__(xml_element)
# One of start or end must be present
if "start" not in xml_element.attributes and "end" not in xml_element.attributes:
raise ValueError("One of 'start' or 'end' must be present in CALDAV:time-range")
self.start = PyCalendarDateTime.parseText(xml_element.attributes["start"]) if "start" in xml_element.attributes else None
self.end = PyCalendarDateTime.parseText(xml_element.attributes["end"]) if "end" in xml_element.attributes else None
self.tzinfo = None
示例5: doList
# 需要导入模块: from pycalendar.datetime import PyCalendarDateTime [as 别名]
# 或者: from pycalendar.datetime.PyCalendarDateTime import parseText [as 别名]
def doList(self, request):
"""
Return a list of all timezones known to the server.
"""
changedsince = request.args.get("changedsince", ())
if len(changedsince) > 1:
raise HTTPError(JSONResponse(
responsecode.BAD_REQUEST,
{
"error": "invalid-changedsince",
"description": "Invalid changedsince query parameter",
},
))
if len(changedsince) == 1:
# Validate a date-time stamp
changedsince = changedsince[0]
try:
dt = PyCalendarDateTime.parseText(changedsince)
except ValueError:
raise HTTPError(JSONResponse(
responsecode.BAD_REQUEST,
{
"error": "invalid-changedsince",
"description": "Invalid changedsince query parameter",
},
))
if not dt.utc():
raise HTTPError(JSONResponse(
responsecode.BAD_REQUEST,
"Invalid changedsince query parameter value",
))
timezones = []
for tz in self.timezones.listTimezones(changedsince):
timezones.append({
"tzid": tz.tzid,
"last-modified": tz.dtstamp,
"aliases": tz.aliases,
})
result = {
"dtstamp": self.timezones.dtstamp,
"timezones": timezones,
}
return JSONResponse(responsecode.OK, result)
示例6: doExpand
# 需要导入模块: from pycalendar.datetime import PyCalendarDateTime [as 别名]
# 或者: from pycalendar.datetime.PyCalendarDateTime import parseText [as 别名]
def doExpand(self, request):
"""
Expand a timezone within specified start/end dates.
"""
tzids = request.args.get("tzid", ())
if len(tzids) != 1:
raise HTTPError(JSONResponse(
responsecode.BAD_REQUEST,
{
"error": "invalid-tzid",
"description": "Invalid tzid query parameter",
},
))
try:
start = request.args.get("start", ())
if len(start) > 1:
raise ValueError()
elif len(start) == 1:
start = PyCalendarDateTime.parseText(start[0])
else:
start = PyCalendarDateTime.getToday()
start.setDay(1)
start.setMonth(1)
except ValueError:
raise HTTPError(JSONResponse(
responsecode.BAD_REQUEST,
{
"error": "invalid-start",
"description": "Invalid start query parameter",
}
))
try:
end = request.args.get("end", ())
if len(end) > 1:
raise ValueError()
elif len(end) == 1:
end = PyCalendarDateTime.parseText(end[0])
else:
end = PyCalendarDateTime.getToday()
end.setDay(1)
end.setMonth(1)
end.offsetYear(10)
if end <= start:
raise ValueError()
except ValueError:
raise HTTPError(JSONResponse(
responsecode.BAD_REQUEST,
{
"error": "invalid-end",
"description": "Invalid end query parameter",
}
))
tzid = tzids[0]
tzdata = self.timezones.getTimezone(tzid)
if tzdata is None:
raise HTTPError(JSONResponse(
responsecode.NOT_FOUND,
{
"error": "missing-tzid",
"description": "Tzid could not be found",
}
))
# Now do the expansion (but use a cache to avoid re-calculating TZs)
observances = self.expandcache.get((tzid, start, end), None)
if observances is None:
observances = tzexpandlocal(tzdata, start, end)
self.expandcache[(tzid, start, end)] = observances
# Turn into JSON
result = {
"dtstamp": self.timezones.dtstamp,
"observances": [
{
"name": name,
"onset": onset.getXMLText(),
"utc-offset-from": utc_offset_from,
"utc-offset-to": utc_offset_to,
} for onset, utc_offset_from, utc_offset_to, name in observances
],
}
return JSONResponse(responsecode.OK, result)
示例7: _processFBURL
# 需要导入模块: from pycalendar.datetime import PyCalendarDateTime [as 别名]
# 或者: from pycalendar.datetime.PyCalendarDateTime import parseText [as 别名]
def _processFBURL(self, request):
#
# Check authentication and access controls
#
yield self.authorize(request, (davxml.Read(),))
# Extract query parameters from the URL
args = ('start', 'end', 'duration', 'token', 'format', 'user',)
for arg in args:
setattr(self, arg, request.args.get(arg, [None])[0])
# Some things we do not handle
if self.token or self.user:
raise HTTPError(ErrorResponse(
responsecode.NOT_ACCEPTABLE,
(calendarserver_namespace, "supported-query-parameter"),
"Invalid query parameter",
))
# Check format
if self.format:
self.format = self.format.split(";")[0]
if self.format not in ("text/calendar", "text/plain"):
raise HTTPError(ErrorResponse(
responsecode.NOT_ACCEPTABLE,
(calendarserver_namespace, "supported-format"),
"Invalid return format requested",
))
else:
self.format = "text/calendar"
# Start/end/duration must be valid iCalendar DATE-TIME UTC or DURATION values
try:
if self.start:
self.start = PyCalendarDateTime.parseText(self.start)
if not self.start.utc():
raise ValueError()
if self.end:
self.end = PyCalendarDateTime.parseText(self.end)
if not self.end.utc():
raise ValueError()
if self.duration:
self.duration = PyCalendarDuration.parseText(self.duration)
except ValueError:
raise HTTPError(ErrorResponse(
responsecode.BAD_REQUEST,
(calendarserver_namespace, "valid-query-parameters"),
"Invalid query parameters",
))
# Sanity check start/end/duration
# End and duration cannot both be present
if self.end and self.duration:
raise HTTPError(ErrorResponse(
responsecode.NOT_ACCEPTABLE,
(calendarserver_namespace, "valid-query-parameters"),
"Invalid query parameters",
))
# Duration must be positive
if self.duration and self.duration.getTotalSeconds() < 0:
raise HTTPError(ErrorResponse(
responsecode.BAD_REQUEST,
(calendarserver_namespace, "valid-query-parameters"),
"Invalid query parameters",
))
# Now fill in the missing pieces
if self.start is None:
self.start = PyCalendarDateTime.getNowUTC()
self.start.setHHMMSS(0, 0, 0)
if self.duration:
self.end = self.start + self.duration
if self.end is None:
self.end = self.start + PyCalendarDuration(days=config.FreeBusyURL.TimePeriod)
# End > start
if self.end <= self.start:
raise HTTPError(ErrorResponse(
responsecode.BAD_REQUEST,
(calendarserver_namespace, "valid-query-parameters"),
"Invalid query parameters",
))
# TODO: We should probably verify that the actual time-range is within sensible bounds (e.g. not too far in the past or future and not too long)
# Now lookup the principal details for the targeted user
principal = self.parent.principalForRecord()
# Pick the first mailto cu address or the first other type
cuaddr = None
for item in principal.calendarUserAddresses():
if cuaddr is None:
cuaddr = item
if item.startswith("mailto"):
cuaddr = item
break
# Get inbox details
#.........这里部分代码省略.........