imip-agent

Annotated docs/wiki/Preferences

1025:39efcf72d853
2016-01-29 Paul Boddie Support multiple functions in the scheduling_function preference.
paul@961 1
= Preferences =
paul@961 2
paul@961 3
The correspondence between user preferences (stored in user preference
paul@961 4
directories) and the default settings (stored in `config.py`) is described
paul@961 5
below.
paul@961 6
paul@961 7
|| '''Preference'''        || '''Default Setting''' ||
paul@961 8
|| `LANG`                  || `LANG` ||
paul@961 9
|| `add_method_response`   || `ADD_RESPONSE_DEFAULT` ||
paul@961 10
|| `event_refreshing`      || `REFRESHING_DEFAULT` ||
paul@961 11
|| `freebusy_bundling`     || `BUNDLING_DEFAULT` ||
paul@961 12
|| `freebusy_messages`     || `NOTIFYING_DEFAULT` ||
paul@961 13
|| `freebusy_offers`       || `FREEBUSY_OFFER_DEFAULT` ||
paul@961 14
|| `freebusy_publishing`   || `PUBLISHING_DEFAULT` ||
paul@961 15
|| `freebusy_sharing`      || `SHARING_DEFAULT` ||
paul@961 16
|| `incoming`              || `INCOMING_DEFAULT` ||
paul@961 17
|| `organiser_replacement` || `ORGANISER_REPLACEMENT_DEFAULT` ||
paul@961 18
|| `participating`         || `PARTICIPATING_DEFAULT` ||
paul@961 19
paul@961 20
See the [[../Configuration|configuration guide]] for more information about
paul@961 21
the `config.py` file.
paul@961 22
paul@961 23
== User Preference Settings ==
paul@961 24
paul@961 25
<<TableOfContents(3,3)>>
paul@961 26
paul@961 27
Each of the user preferences or settings are stored in a separate file within
paul@961 28
a dedicated preferences directory for each user, with the filename bearing the
paul@988 29
name of the setting concerned. See the [[../FilesystemUsage|filesystem guide]]
paul@988 30
for more information.
paul@961 31
paul@961 32
=== CN ===
paul@961 33
paul@961 34
 Default:: (none)
paul@961 35
 Alternatives:: (see below)
paul@961 36
paul@961 37
The common name of the user, employed in iCalendar objects and user
paul@961 38
interfaces.
paul@961 39
paul@961 40
=== LANG ===
paul@961 41
paul@961 42
 Default:: `en` (English)
paul@961 43
 Alternatives:: (any recognised and supported locale)
paul@961 44
paul@961 45
The language for messages and user interface text.
paul@961 46
paul@961 47
=== TZID ===
paul@961 48
paul@961 49
 Default:: system timezone (see `/etc/timezone`)
paul@961 50
 Alternatives:: (any recognised Olson time zone identifier)
paul@961 51
paul@961 52
The default time zone/regime for calendars, new events and local times.
paul@961 53
paul@961 54
=== add_method_response ===
paul@961 55
paul@961 56
 Default:: `refresh`
paul@961 57
 Alternatives:: (see below)
paul@961 58
paul@961 59
Indicate how `ADD` methods shall be responded to when received by a recipient:
paul@961 60
paul@961 61
{{{#!table
paul@961 62
`add`     || apply them to events as received
paul@961 63
==
paul@961 64
`ignore`  || ignore attempts to add event occurrences
paul@961 65
==
paul@961 66
`refresh` || respond with a `REFRESH` message to obtain a proper request with
paul@961 67
          .. all event details
paul@961 68
}}}
paul@961 69
paul@961 70
=== event_refreshing ===
paul@961 71
paul@961 72
 Default:: `never`
paul@961 73
 Alternative:: `always`
paul@961 74
paul@961 75
Indicate whether messages requesting a refresh of event details shall be
paul@961 76
handled automatically. If not, such messages will be passed on to the
paul@961 77
recipient for their mail program to handle.
paul@961 78
paul@961 79
=== freebusy_bundling ===
paul@961 80
paul@961 81
 Default:: `never`
paul@961 82
 Alternative:: `always`
paul@961 83
paul@961 84
Indicate whether to bundle free/busy details with other payloads such as
paul@961 85
event and free/busy objects. The `freebusy_sharing` setting must be
paul@961 86
configured for bundling to operate.
paul@961 87
paul@961 88
=== freebusy_messages ===
paul@961 89
paul@961 90
 Default:: `none`
paul@961 91
 Alternative:: `notify`
paul@961 92
paul@961 93
Indicate whether recipients are notified about received free/busy payloads.
paul@961 94
paul@961 95
=== freebusy_offers ===
paul@961 96
paul@961 97
 Default:: (none)
paul@961 98
 Alternative:: (see below)
paul@961 99
paul@961 100
Define the period for which free/busy offers are extended by participants
paul@961 101
supporting this setting when counter-proposals are made during event
paul@961 102
scheduling.
paul@961 103
paul@961 104
This setting requires a value indicating a duration as described in the
paul@961 105
iCalendar format specification:
paul@961 106
paul@961 107
http://tools.ietf.org/html/rfc5545#section-3.3.6
paul@961 108
paul@961 109
For example:
paul@961 110
paul@961 111
|| `PT10M`  || extend scheduling offers for 10 minutes ||
paul@961 112
|| `PT600S` || extend scheduling offers for 600 seconds (10 minutes) ||
paul@961 113
|| `PT1D`   || extend offers for 1 day ||
paul@961 114
paul@961 115
=== freebusy_publishing ===
paul@961 116
paul@961 117
 Default:: `no`
paul@961 118
 Alternative:: `publish`
paul@961 119
paul@961 120
Indicate whether to publish free/busy details as Web resources. The
paul@961 121
`freebusy_sharing` setting must be configured for publishing to operate.
paul@961 122
paul@961 123
=== freebusy_sharing ===
paul@961 124
paul@961 125
 Default:: `no`
paul@961 126
 Alternative:: `share`
paul@961 127
paul@961 128
Share free/busy details generally:
paul@961 129
paul@961 130
  * bundling in e-mail messages if bundling is configured
paul@961 131
  * responding to free/busy requests via e-mail
paul@961 132
  * publishing as Web resources if a static Web resource is configured and if
paul@961 133
  publishing is configured
paul@961 134
paul@961 135
=== incoming ===
paul@961 136
paul@961 137
 Default:: `summary-wraps-message`
paul@961 138
 Alternatives:: (see below)
paul@961 139
paul@961 140
Define how incoming event messages are delivered to recipients:
paul@961 141
paul@961 142
{{{#!table
paul@961 143
`message-only`
paul@961 144
|| deliver only the incoming message as it was received
paul@961 145
==
paul@961 146
`message-then-summary`
paul@961 147
|| deliver the message first followed by a summary message
paul@961 148
==
paul@961 149
`summary-then-message`
paul@961 150
|| deliver a summary first followed by the message
paul@961 151
==
paul@961 152
`summary-only`
paul@961 153
|| deliver only a summary of the message
paul@961 154
==
paul@961 155
`summary-wraps-message`
paul@961 156
|| deliver a summary that includes the original message as an attachment
paul@961 157
}}}
paul@961 158
paul@961 159
=== organiser_replacement ===
paul@961 160
paul@961 161
 Default:: `attendee`
paul@961 162
 Alternatives:: (see below)
paul@961 163
paul@961 164
Indicate whether the organiser of an event can be replaced and the nature of
paul@961 165
any replacement:
paul@961 166
paul@961 167
{{{#!table
paul@961 168
`any` || any identity, regardless of whether it is already present or even
paul@961 169
      .. previously unknown, may become the organiser
paul@961 170
==
paul@961 171
`attendee` || any new organiser must be a previously-recognised attendee
paul@961 172
==
paul@961 173
`never` || forbid the replacement of an event's organiser
paul@961 174
}}}
paul@961 175
paul@961 176
=== participating ===
paul@961 177
paul@961 178
 Default:: `participate`
paul@961 179
 Alternative:: `no`
paul@961 180
paul@961 181
Indicate whether a recipient participates in the calendar system. Note that
paul@961 182
participation by default occurs because the handler programs will be defined
paul@961 183
in the mail system for recipients fulfilling certain criteria; other
paul@961 184
recipients will be handled in other ways. Thus, initial non-participation must
paul@961 185
be defined by initialising this setting to "no" for all eligible users, if
paul@961 186
this is the general policy on initial calendar system participation.
paul@961 187
paul@961 188
=== permitted_times ===
paul@961 189
paul@961 190
 Default:: (none)
paul@961 191
 Alternatives:: (see below)
paul@961 192
paul@961 193
Define the time values at which events can be scheduled. In its simplest form,
paul@961 194
this indicates the resolution of a calendar for a participant supporting this
paul@961 195
setting, with the given minute values being those allowed for the start and
paul@961 196
end of an event. This setting requires a value of one of the following forms:
paul@961 197
paul@961 198
{{{
paul@961 199
<minute values>
paul@961 200
<hour values>:<minute values>
paul@961 201
<hour values>:<minute values>:<second values>
paul@961 202
}}}
paul@961 203
paul@961 204
Each list of values is a comma-separated collection of permissible values for
paul@961 205
the unit of time being constrained. Any unspecified list is taken to permit
paul@961 206
all normally permissible values for that unit of time. For example:
paul@961 207
paul@961 208
{{{#!table
paul@961 209
`0,15,30,45`          || every 15 minutes from the start of each hour
paul@961 210
==
paul@961 211
`10,12,14,16:0,20,40` || every 20 minutes from 10:00 until 16:40 inclusive
paul@961 212
==
paul@961 213
`12::0,30`            ||  every 30 seconds from the start of each minute
paul@961 214
                      .. during the period from 12:00:00 until 12:59:30
paul@961 215
                      .. inclusive
paul@961 216
}}}
paul@961 217
paul@961 218
The purpose of this setting is not necessarily to impose availability
paul@961 219
constraints but instead to impose a "grid" to which event start and end points
paul@961 220
shall be "locked".
paul@961 221
paul@961 222
The values are interpreted in the local time of the participant. Thus, a time
paul@961 223
represented in UTC may have apparently inappropriate hour (and for some zones)
paul@961 224
minute values that correspond to permitted values in this participant's own
paul@961 225
time zone.
paul@961 226
paul@961 227
=== scheduling_function ===
paul@961 228
paul@961 229
 Default:: `schedule_in_freebusy`
paul@961 230
 Alternatives:: (see below)
paul@961 231
paul@1025 232
Indicates the scheduling functions used by resources to find an appropriate
paul@1025 233
period for an event, with each function to be applied to a scheduling request
paul@1025 234
appearing on a separate line.
paul@1025 235
paul@1025 236
The imiptools.handlers.scheduling module contains the built-in scheduling
paul@1025 237
functions which include the following:
paul@961 238
paul@961 239
{{{#!table
paul@961 240
`schedule_in_freebusy` || accept an invitation if the event periods are free
paul@961 241
                       .. according to the free/busy records for the resource;
paul@961 242
                       .. decline otherwise
paul@961 243
==
paul@961 244
`schedule_corrected_in_freebusy` || correct periods in an event according to
paul@961 245
                                 .. the permitted_times setting (see above),
paul@961 246
                       .. then attempt to schedule the event according to the
paul@961 247
                       .. free/busy records for the resource
paul@961 248
==
paul@961 249
`schedule_next_available_in_freebusy` || correct periods in an event according
paul@961 250
                                      .. to the permitted_times setting (see
paul@961 251
                       .. above), if configured, and attempt to schedule the
paul@961 252
                       .. event according to the free/busy records for the
paul@961 253
                       .. resource and for any attendees for whom records are
paul@961 254
                       .. available, seeking the next available free period for
paul@961 255
                       .. each period that conflicts with an existing event
paul@961 256
}}}
paul@961 257
paul@961 258
The scheduling mechanism can be extended by implementing additional scheduling
paul@961 259
functions or by extending the handler framework directly.