Exemple #1
0
def createVTodoFromTask(task):
    """Create a VTodo object from a yokadi task
    @param task: yokadi task (db.Task object)
    @return: ical VTODO (icalendar.Calendar.Todo object)"""
    vTodo = icalendar.Todo()
    vTodo["uid"] = TASK_UID % task.id
    vTodo["related-to"] = PROJECT_UID % task.project.id

    # Add standard attribute
    for yokadiAttribute, icalAttribute in list(YOKADI_ICAL_ATT_MAPPING.items()):
        attr = getattr(task, yokadiAttribute)
        if attr:
            if yokadiAttribute == "urgency":
                attr = icalutils.yokadiUrgencyToIcalPriority(attr)
            if yokadiAttribute == "title":
                attr += " (%s)" % task.id
            vTodo.add(icalAttribute, attr)

    # Add categories from keywords
    categories = []
    if task.taskKeywords:
        for name, value in list(task.getKeywordDict().items()):
            if value:
                categories.append("%s=%s" % (name, value))
            else:
                categories.append(name)
    vTodo.add("categories", categories)

    return vTodo
Exemple #2
0
def createVTodoFromTask(task):
    """Create a VTodo object from a yokadi task
    @param task: yokadi task (db.Task object)
    @return: ical VTODO (icalendar.Calendar.Todo object)"""
    vTodo = icalendar.Todo()
    vTodo["uid"] = TASK_UID % task.id
    vTodo["related-to"] = PROJECT_UID % task.project.id

    # Add standard attribute
    for yokadiAttribute, icalAttribute in YOKADI_ICAL_ATT_MAPPING.items():
        attr = getattr(task, yokadiAttribute)
        if attr:
            if yokadiAttribute == "urgency":
                attr = icalutils.yokadiUrgencyToIcalPriority(attr)
            if yokadiAttribute == "title":
                attr += " (%s)" % task.id
            vTodo.add(icalAttribute, attr)

    # Add categories from keywords
    categories = []
    if task.keywords:
        for name, value in task.getKeywordDict().items():
            if value:
                categories.append("%s=%s" % (name, value))
            else:
                categories.append(name)
    vTodo.add("categories", categories)

    return vTodo
Exemple #3
0
def updateTaskFromVTodo(task, vTodo):
    """Update a yokadi task with an ical VTODO object
    @param task: yokadi task (db.Task object)
    @param vTodo: ical VTODO (icalendar.Calendar.Todo object)"""
    for yokadiAttribute, icalAttribute in list(
            YOKADI_ICAL_ATT_MAPPING.items()):
        attr = vTodo.get(icalAttribute)
        if attr:
            # Convert ical type (vDates, vInt..) to sql alchemy understandable type (datetime, int...)
            attr = icalutils.convertIcalType(attr)
            if yokadiAttribute == "title":
                # Remove (id)
                attr = re.sub("\s?\(%s\)" % task.id, "", attr)
            if yokadiAttribute == "doneDate":
                # A done date defined indicate that task is done
                task.status = "done"
                # BUG: Done date is UTC, we must compute local time for yokadi
            if yokadiAttribute == "urgency":
                if attr == icalutils.yokadiUrgencyToIcalPriority(task.urgency):
                    # Priority does not change - don't update it
                    continue
                else:
                    # Priority has changed, we need to update urgency
                    attr = icalutils.icalPriorityToYokadiUrgency(int(attr))

            # Update attribute
            setattr(task, yokadiAttribute, attr)

    # Update keywords from categories
    if vTodo.get("categories"):
        if isinstance(vTodo.get("categories"), (list)):
            categories = vTodo.get("categories")
        else:
            categories = vTodo.get("categories").split(",")

        keywords = ["@%s" % k for k in categories]
        garbage, keywordFilters = parseutils.extractKeywords(
            " ".join(keywords))
        newKwDict = parseutils.keywordFiltersToDict(keywordFilters)
        if garbage:
            print("Got garbage while parsing categories: %s" % garbage)
        dbutils.createMissingKeywords(list(newKwDict.keys()),
                                      interactive=False)
        task.setKeywordDict(newKwDict)
Exemple #4
0
def updateTaskFromVTodo(task, vTodo):
    """Update a yokadi task with an ical VTODO object
    @param task: yokadi task (db.Task object)
    @param vTodo: ical VTODO (icalendar.Calendar.Todo object)"""

    for yokadiAttribute, icalAttribute in YOKADI_ICAL_ATT_MAPPING.items():
        attr = vTodo.get(icalAttribute)
        if attr:
            # Convert ical type (vDates, vInt..) to sqlobjectunderstandable type (datetime, int...)
            attr = icalutils.convertIcalType(attr)
            if yokadiAttribute == "title":
                # Remove (id)
                attr = re.sub("\s?\(%s\)" % task.id, "", attr)
            if yokadiAttribute == "doneDate":
                # A done date defined indicate that task is done
                task.status = "done"
                # BUG: Done date is UTC, we must compute local time for yokadi
            if yokadiAttribute == "urgency":
                if attr == icalutils.yokadiUrgencyToIcalPriority(task.urgency):
                    # Priority does not change - don't update it
                    continue
                else:
                    # Priority has changed, we need to update urgency
                    attr = icalutils.icalPriorityToYokadiUrgency(int(attr))

            # Update attribute
            setattr(task, yokadiAttribute, attr)

    # Update keywords from categories
    if vTodo.get("categories"):
        if isinstance(vTodo.get("categories"), (list)):
            categories = vTodo.get("categories")
        else:
            categories = vTodo.get("categories").split(",")

        keywords = ["@%s" % k for k in categories]
        garbage, keywordFilters = parseutils.extractKeywords(" ".join(keywords))
        newKwDict = parseutils.keywordFiltersToDict(keywordFilters)
        if garbage:
            print "Got garbage while parsing categories: %s" % garbage
        dbutils.createMissingKeywords(newKwDict.keys(), interactive=False)
        task.setKeywordDict(newKwDict)