本文整理汇总了Python中GTG.tools.dates.Date类的典型用法代码示例。如果您正苦于以下问题:Python Date类的具体用法?Python Date怎么用?Python Date使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Date类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, ze_id, requester, newtask=False):
TreeNode.__init__(self, ze_id)
# the id of this task in the project should be set
# tid is a string ! (we have to choose a type and stick to it)
assert(isinstance(ze_id, str) or isinstance(ze_id, str))
self.tid = str(ze_id)
self.set_uuid(uuid.uuid4())
self.remote_ids = {}
self.content = ""
self.title = _("My new task")
# available status are: Active - Done - Dismiss - Note
self.status = self.STA_ACTIVE
self.closed_date = Date.no_date()
self.due_date = Date.no_date()
self.start_date = Date.no_date()
self.can_be_deleted = newtask
# tags
self.tags = []
self.req = requester
self.__main_treeview = requester.get_main_view()
# If we don't have a newtask, we will have to load it.
self.loaded = newtask
# Should not be necessary with the new backends
# if self.loaded:
# self.req._task_loaded(self.tid)
self.attributes = {}
self._modified_update()
示例2: test_parse_fuzzy_dates_str
def test_parse_fuzzy_dates_str(self):
""" Print fuzzy dates in localized version """
self.assertEqual(str(Date.parse("now")), _("now"))
self.assertEqual(str(Date.parse("soon")), _("soon"))
self.assertEqual(str(Date.parse("later")), _("someday"))
self.assertEqual(str(Date.parse("someday")), _("someday"))
self.assertEqual(str(Date.parse("")), "")
示例3: test_parse_fuzzy_dates
def test_parse_fuzzy_dates(self):
""" Parse fuzzy dates like now, soon, later, someday """
self.assertEqual(Date.parse("now"), Date.now())
self.assertEqual(Date.parse("soon"), Date.soon())
self.assertEqual(Date.parse("later"), Date.someday())
self.assertEqual(Date.parse("someday"), Date.someday())
self.assertEqual(Date.parse(""), Date.no_date())
示例4: test_parse_local_fuzzy_dates
def test_parse_local_fuzzy_dates(self):
""" Parse fuzzy dates in their localized version """
self.assertEqual(Date.parse(_("now")), Date.now())
self.assertEqual(Date.parse(_("soon")), Date.soon())
self.assertEqual(Date.parse(_("later")), Date.someday())
self.assertEqual(Date.parse(_("someday")), Date.someday())
self.assertEqual(Date.parse(""), Date.no_date())
示例5: set_due_date
def set_due_date(self, new_duedate):
"""Defines the task's due date."""
def __get_defined_parent_list(task):
"""Recursively fetch a list of parents that have a defined due date
which is not fuzzy"""
parent_list = []
for par_id in task.parents:
par = self.req.get_task(par_id)
if par.get_due_date().is_fuzzy():
parent_list += __get_defined_parent_list(par)
else:
parent_list.append(par)
return parent_list
def __get_defined_child_list(task):
"""Recursively fetch a list of children that have a defined
due date which is not fuzzy"""
child_list = []
for child_id in task.children:
child = self.req.get_task(child_id)
if child.get_due_date().is_fuzzy():
child_list += __get_defined_child_list(child)
else:
child_list.append(child)
return child_list
old_due_date = self.due_date
new_duedate_obj = Date(new_duedate) # caching the conversion
self.due_date = new_duedate_obj
# If the new date is fuzzy or undefined, we don't update related tasks
if not new_duedate_obj.is_fuzzy():
# if the task's start date happens later than the
# new due date, we update it (except for fuzzy dates)
if not self.get_start_date().is_fuzzy() and \
self.get_start_date() > new_duedate_obj:
self.set_start_date(new_duedate)
# if some ancestors' due dates happen before the task's new
# due date, we update them (except for fuzzy dates)
for par in __get_defined_parent_list(self):
if par.get_due_date() < new_duedate_obj:
par.set_due_date(new_duedate)
# we must apply the constraints to the defined & non-fuzzy children
# as well
for sub in __get_defined_child_list(self):
sub_duedate = sub.get_due_date()
# if the child's due date happens later than the task's: we
# update it to the task's new due date
if sub_duedate > new_duedate_obj:
sub.set_due_date(new_duedate)
# if the child's start date happens later than
# the task's new due date, we update it
# (except for fuzzy start dates)
sub_startdate = sub.get_start_date()
if not sub_startdate.is_fuzzy() and \
sub_startdate > new_duedate_obj:
sub.set_start_date(new_duedate)
# If the date changed, we notify the change for the children since the
# constraints might have changed
if old_due_date != new_duedate_obj:
self.recursive_sync()
示例6: date_changed
def date_changed(self, widget, data):
try:
if data == GTGCalendar.DATE_KIND_ENDON:
if Date.parse(widget.get_text()):
if Date.parse(self.startdate_widget.get_text()).__gt__(
Date.parse(widget.get_text())):
valid = False
else:
valid = True
else:
Date.parse(widget.get_text())
valid = True
except ValueError:
valid = False
if valid:
# If the date is valid, we write with default color in the widget
# "none" will set the default color.
widget.override_color(Gtk.StateType.NORMAL, None)
widget.override_background_color(Gtk.StateType.NORMAL, None)
else:
#We should write in red in the entry if the date is not valid
text_color = Gdk.RGBA()
text_color.parse("#F00")
widget.override_color(Gtk.StateType.NORMAL, text_color)
bg_color = Gdk.RGBA()
bg_color.parse("#F88")
widget.override_background_color(Gtk.StateType.NORMAL, bg_color)
示例7: test_parse_dates
def test_parse_dates(self):
""" Parse common numeric date """
self.assertEqual(str(Date.parse("1985-03-29")), "1985-03-29")
self.assertEqual(str(Date.parse("19850329")), "1985-03-29")
self.assertEqual(str(Date.parse("1985/03/29")), "1985-03-29")
today = date.today()
parse_string = "%02d%02d" % (today.month, today.day)
self.assertEqual(Date.parse(parse_string), today)
示例8: __date_comp
def __date_comp(self, task1, task2, para, order):
'''This is a quite complex method to sort tasks by date,
handling fuzzy date and complex situation.
Return -1 if nid1 is before nid2, return 1 otherwise
'''
if task1 and task2:
if para == 'start':
t1 = task1.get_start_date()
t2 = task2.get_start_date()
elif para == 'due':
t1 = task1.get_urgent_date()
t2 = task2.get_urgent_date()
if t1 == Date.no_date():
t1 = task1.get_due_date_constraint()
if t2 == Date.no_date():
t2 = task2.get_due_date_constraint()
elif para == 'closed':
t1 = task1.get_closed_date()
t2 = task2.get_closed_date()
else:
raise ValueError(
'invalid date comparison parameter: %s') % para
sort = (t2 > t1) - (t2 < t1)
else:
sort = 0
# local function
def reverse_if_descending(s):
"""Make a cmpare result relative to the top instead of following
user-specified sort direction"""
if order == Gtk.SortType.ASCENDING:
return s
else:
return -1 * s
if sort == 0:
# Group tasks with the same tag together for visual cleanness
t1_tags = task1.get_tags_name()
t1_tags.sort()
t2_tags = task2.get_tags_name()
t2_tags.sort()
cmp_tags = (t1_tags > t2_tags) - (t1_tags < t2_tags)
sort = reverse_if_descending(cmp_tags)
if sort == 0:
# Break ties by sorting by title
t1_title = task1.get_title()
t2_title = task2.get_title()
t1_title = locale.strxfrm(t1_title)
t2_title = locale.strxfrm(t2_title)
cmp_title = (t1_title > t2_title) - (t1_title < t2_title)
sort = reverse_if_descending(cmp_title)
return sort
示例9: set_complex_title
def set_complex_title(self, text, tags=[]):
if tags:
assert(isinstance(tags[0], str))
due_date = Date.no_date()
defer_date = Date.no_date()
if text:
# Get tags in the title
for match in extract_tags_from_text(text):
tags.append(match)
# Get attributes
regexp = r'([\s]*)([\w-]+):\s*([^\s]+)'
matches = re.findall(regexp, text, re.UNICODE)
for spaces, attribute, args in matches:
valid_attribute = True
if attribute.lower() in ["tags", _("tags"), "tag", _("tag")]:
for tag in args.split(","):
if not tag.strip() == "@" and not tag.strip() == "":
if not tag.startswith("@"):
tag = "@" + tag
tags.append(tag)
elif attribute.lower() in ["defer", _("defer"), "start",
_("start")]:
try:
defer_date = Date.parse(args)
except ValueError:
valid_attribute = False
elif attribute.lower() == "due" or \
attribute.lower() == _("due"):
try:
due_date = Date.parse(args)
except:
valid_attribute = False
else:
# attribute is unknown
valid_attribute = False
if valid_attribute:
# remove valid attribute from the task title
text = \
text.replace("%s%s:%s" % (spaces, attribute, args), "")
for t in tags:
self.add_tag(t)
if text != "":
self.set_title(text.strip())
self.set_to_keep()
self.set_due_date(due_date)
self.set_start_date(defer_date)
示例10: bgcolor
def bgcolor(self, node, standard_color):
color = self.get_node_bgcolor(node)
def __get_active_child_list(node):
""" This function recursively fetches a list
of all the children of a task which are active
(i.e - the subtasks which are not marked as 'Done' or 'Dismissed'
"""
child_list = []
for child_id in node.children:
child = node.req.get_task(child_id)
child_list += __get_active_child_list(child)
if child.get_status() in [child.STA_ACTIVE]:
child_list.append(child_id)
return child_list
child_list = __get_active_child_list(node)
daysleft = None
for child_id in child_list:
child = self.req.get_task(child_id)
if child.get_due_date() == Date.no_date():
continue
daysleft_of_child = child.get_due_date().days_left()
if daysleft is None:
daysleft = daysleft_of_child
color = self.get_node_bgcolor(child)
elif daysleft_of_child < daysleft:
daysleft = daysleft_of_child
color = self.get_node_bgcolor(child)
return color
示例11: date_changed
def date_changed(self, widget, data):
try:
Date.parse(widget.get_text())
valid = True
except ValueError:
valid = False
if valid:
# If the date is valid, we write with default color in the widget
# "none" will set the default color.
widget.modify_text(gtk.STATE_NORMAL, None)
widget.modify_base(gtk.STATE_NORMAL, None)
else:
# We should write in red in the entry if the date is not valid
widget.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse("#F00"))
widget.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#F88"))
示例12: task_from_xml
def task_from_xml(task, xmlnode):
# print "********************************"
# print xmlnode.toprettyxml()
task.set_uuid(xmlnode.getAttribute("uuid"))
task.set_title(read_node(xmlnode, "title"))
status = xmlnode.getAttribute("status")
donedate = Date.parse(read_node(xmlnode, "donedate"))
task.set_status(status, donedate=donedate)
duedate = Date(read_node(xmlnode, "duedate"))
task.set_due_date(duedate)
startdate = Date(read_node(xmlnode, "startdate"))
task.set_start_date(startdate)
modified = read_node(xmlnode, "modified")
if modified != "":
modified = datetime.strptime(modified, "%Y-%m-%dT%H:%M:%S")
task.set_modified(modified)
tags = xmlnode.getAttribute("tags").replace(" ", "")
tags = (tag for tag in tags.split(",") if tag.strip() != "")
for tag in tags:
# FIXME why unescape????
task.tag_added(saxutils.unescape(tag))
# FIXME why we need to convert that through an XML?
content = read_node(xmlnode, "content")
if content != "":
content = "<content>%s</content>" % content
content = minidom.parseString(content).firstChild.toxml()
task.set_text(content)
for subtask in xmlnode.getElementsByTagName("subtask"):
task.add_child(get_text(subtask))
for attr in xmlnode.getElementsByTagName("attribute"):
if len(attr.childNodes) > 0:
value = get_text(attr)
else:
value = ""
key = attr.getAttribute("key")
namespace = attr.getAttribute("namespace")
task.set_attribute(key, value, namespace=namespace)
# FIXME do we need remote task ids? I don't think so
# FIXME if so => rework them into a more usable structure!!!
# (like attributes)
# REMOTE TASK IDS
remote_ids_list = xmlnode.getElementsByTagName("task-remote-ids")
for remote_id in remote_ids_list:
if remote_id.childNodes:
node = remote_id.childNodes[0]
backend_id = node.firstChild.nodeValue
remote_task_id = node.childNodes[1].firstChild.nodeValue
task.add_remote_id(backend_id, remote_task_id)
return task
示例13: workview
def workview(self, task, parameters=None):
wv = (self.active(task) and
self.is_started(task) and
self.is_workable(task) and
self.no_disabled_tag(task) and
task.get_due_date() != Date.someday())
return wv
示例14: __init__
def __init__(self):
super(GTGCalendar, self).__init__()
self.__builder = Gtk.Builder()
self.__builder.add_from_file(GnomeConfig.CALENDAR_UI_FILE)
self.__date_kind = None
self.__date = Date.no_date()
self.__init_gtk__()
示例15: task_duedate_column
def task_duedate_column(self, node):
# We show the most constraining due date for task with no due dates.
if node.get_due_date() == Date.no_date():
return node.get_due_date_constraint().to_readable_string()
else:
# Other tasks show their due date (which *can* be fuzzy)
return node.get_due_date().to_readable_string()