20110818 ======== About Mixins ------------ Renamed the `Sendable` mixin to `Mailable`, and changed its label from "Send email" to "Create email". Because it doesn't actually send a Mail, just creates it in the database. Since this mixin depends on `lino.modlib.mails`, I moved it from `lino.mixins.sendable` to `lino.modlib.mails.models`. The package `lino.mixins` should be only for "general" mixins. Continued with CalDAV --------------------- Continued to work on :srcref:`docs/tickets/47`. :class:`lino_xl.lib.cal.Event` needs a new field `uid`. Excerpt from RFC 5545: The `uid` of an event is REQUIRED and MUST NOT occur more than once. The "UID" itself MUST be a globally unique identifier. The generator of the identifier MUST guarantee that the identifier is unique. There are several algorithms that can be used to accomplish this. A good method to assure uniqueness is to put the domain name or a domain literal IP address of the host on which the identifier was created on the right-hand side of an "@", and on the left-hand side, put a combination of the current calendar date and time of day (i.e., formatted in as a DATE-TIME value) along with some other currently unique (perhaps sequential) identifier available on the system (for example, a process id number). Using a DATE-TIME value on the left-hand side and a domain name or domain literal on the right-hand side makes it possible to guarantee uniqueness since no two hosts should be using the same domain name or IP address at the same time. Though other algorithms will work, it is RECOMMENDED that the right-hand side contain some domain identifier (either of the host itself or otherwise) such that the generator of the message identifier can guarantee the uniqueness of the left-hand side within the scope of that domain. Google has UIDs like `680h46e2vng9h936b1a53fmdk0@google.com`. New local Lino configuration class attribute :attr:`lino.Lino.uid`: a universal identifier for this Lino site. This is needed for synchronization with CalDAV server; calendar components created by Lino will get a UID ``"%s@%s" (self.pk,settings.LINO.ui)``. *When* should synchronization *from* the remote calendar *into* our database happen? Only upon request (either manually or as a cron job)? Or another daemon that automatically pulls changes every minute?