Sync tasks

  • developer

    I just tested calendar-query with Radicale and found that it ignores the comp-filter rules that should make it return only VTODOs or VEVENTs:

    So, I suggest the following to fetch events/todos/journals in the appropriate sync adapters:

    1. Use REPORT calendar-query with the correct comp-filter (for instance, comp-filter name="VTODO" for syncing VTODOs) instead of PROPFIND. Fetch the MIME type of each resource, too.
    2. (Maybe use PROPFIND if the server doesn’t even understand REPORT calendar-query – but I’d really like to go without that.)
    3. Filter the result by MIME type. For instance, when the query was for VTODOs, ignore resources with MIME type text/calendar; component=vevent.

    Now I’m looking for help to test various services and servers for their REPORT calendar-query support and whether they return component values in getcontenttype. Any volunteers?

  • @rfc2822: I could test OwnCloud 7 contacts/tasks/events but I need to know how to do it 🙂

  • Which competency level is required for helping to test this? I also use OwnCloud, but not a self-holsted version, and I’m not sure where to find the calendar-query responses/data.

  • developer

    • Create a calendar with events and TODOs.
    • Create a file called “report-events.xml” and this CalDAV REPORT request body:
    <?xml version="1.0" encoding="utf-8" ?>
    <C:calendar-query xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
                    <C:calendar-data />
                    <C:comp-filter name="VCALENDAR">
                            <C:comp-filter name="VEVENT" />
    • Send the request to your DAV server: curl -u user:password -vX REPORT --data @report-events.xml -H 'Depth: 1' https://path/to/your/calendar. The response should comprise only VEVENTS.
    • Replace the comp-filter VEVENT by VTODO and try again. The response should comprise only VTODOs.
    • See the linked RFC for details about the syntax. You may vary the request to play around with other filters, for instance Partial Retrieval of Events by Time Range.

    What I’d need to know for each server:

    • Does the server support REPORT calendar-query or does it return error messages?
    • Are calendar-query results correctly filtered by component type (VEVENT/VTODO)?
    • Are calendar-query results correctly filtered by time range?

  • Tested with report-events.xml as described above using OwnCloud 7.0.2 installed from source downloaded from Debian Sid with Apache2.4 (2.4.10-5) and php5 (5.6.0+dfsg-1). (Thanks for the details on how to test. I’m happy to do this and had no idea how.)

    • It returns results. There are no error messages.
    • When the comp-filter is VEVENT it only returns VEVENTs.
    • When the comp-filter is VTODO it only returns VTODOs.
    • Both VEVENT and VTODO queries can be done with filters like <C:time-range start="20141012T000000Z" end="20141015T000000Z" />. The results are correctly filtered.

  • Thanks for testing oC 7.0.2 already, @dper . I don’t have a different server, so I’ll pass.

  • Confirmed to work with Baïkal 0.2.7.

    • No errors.
    • When the comp-filter is VEVENT it only returns VEVENTs.
    • When the comp-filter is VTODO it only returns VTODOs.
    • Successfully tested filtering (only) VTODOs by date range.

  • I can’t download the apks from the Mirakel releases page – I just get a directory error. Does anyone by chance have an alternative place I could find the most recent Tasks-compatible Davdroid release? Thanks VERY much.

  • You have just hit the 10 second time slot where we updated the page. It’s working again. Sorry for the inconvinience

  • Hah – yeah that sounds like my luck – thanks for letting me know, and glad to be sure I have literally the bleeding edge copy!

  • If I try to sync it with an open xchange server, the “davdroid” app just closes, in the moment it tries to sync the tasks (contacts and appointments are working).
    How can I support?

    Android 4.4.4
    DavDroid version: 0.6.7-mirakel (2014-11-16)
    Mirakel version: 2.8.1
    open xchange (dav) version: 7.6.1

  • Just some information about calendar-query results on Radicale (not done with
    cURL but with my own testsuite):

    • Filtering by VTODO and VEVENT runs fine on 0.8 and 0.9.
    • <C:filter><C:comp-filter name="VCALENDAR"/></C:filter> doesn’t run under
      Radicale 0.8.
    • Time range queries are completely unsupported in any version, Radicale
      ignores the filter.

  • @rfc2822: i see this is the only open issue on the next milestone - when do you expect to release it ?

  • We’ve already discussed this in more detail internally, however this is more complex than we expected in early days of DAVdroid. The milestones need to be adjusted - they don’t reflect the current plan.

    There also needs to be re-coding some of our core components. But be asured, we will be getting there… Tasks are still a high priority feature that we want to get in. But first we have to introduce a basic settings dialogue which will be the next (bigger) feature for DAVdroid (which is also necessary for future features like tasks).

    I’ve attached an image that illustrates the sync process and the involved components and how they play together. Tasks are also part of it, but since there is no standard storage for tasks it’s hard for DAVdroid to hook in at a certain position.

  • I know it’s easy for me to talk, but I’m sure both the Mirakel devs and dmfs have the same goals, which is why I think it’d be in everybody’s interest to unify both task providers, no?

  • Also, what in iCalendar would you use to represent notes?

  • It’s not just Mirakel and dmfs… In a more general way of thinking it would be the best to have a standardized backend which can be used by different sync apps. It was always our intention to be an app that is compatible with a lot of services. A very nice solution would be a new generalized tasks storage app/proxy which DAVdroid could use to sync data instead of making workarounds for different apps that provide tasks.

    At the moment (we’ve not finished thinking about it!) we’d use VJOURNAL for notes and VTODO for tasks.

  • Thanks for your answer. I think a general-purpose task storage is/was @dmfs’ goal.

  • +1 for me…

  • I’d like to be able to use DAVdroid with Mirakel or something else to sync my org-mode tasks which already work for my calendars and I’m just about to configure it for the contacts, so


Log in to reply

Similar topics