| dav_make_calendar |
function |
py |
infra |
1.0.0 |
impure |
def dav_make_calendar(base_url: str, username: str, password: str, calendar_home: str, slug: str, display_name: str = "", color: str = "", description: str = "", *, timeout_s: float = 20.0, verify_tls: bool = True) -> dict |
Crea una nueva coleccion de calendario CalDAV (una agenda nueva) bajo el calendar-home de un principal via MKCALENDAR, fijando el displayname en el cuerpo, y opcionalmente fija color (Apple calendar-color) y descripcion (CalDAV calendar-description) con un PROPPATCH posterior. La coleccion se crea en <calendar_home><slug>/. El slug se sanea a [a-z0-9_-] (minusculas, espacios->guion); si queda vacio devuelve error de validacion. Idempotente: 201 Created es exito; 405/301 (ya existe) devuelve {status:'ok', existed:True}. Escapa display_name/description para XML. Construye Authorization: Basic base64(user:pass) a mano. Maneja errores sin lanzar (salvo validacion de args). Solo stdlib (urllib, base64, re, ssl, xml.sax.saxutils). Probado contra Xandikos. |
| dav |
| caldav |
| calendar |
| mkcalendar |
| proppatch |
| create |
| collection |
| color |
| http |
| infra |
|
|
|
|
false |
|
| base64 |
| re |
| ssl |
| urllib.error |
| urllib.request |
| xml.sax.saxutils |
|
|
|
| name |
desc |
| username |
usuario para HTTP Basic auth (p.ej. 'enmanuel'). |
|
| name |
desc |
| password |
contrasena para HTTP Basic auth. Resolver desde pass con pass_get_secret, nunca hardcodear. |
|
| name |
desc |
| calendar_home |
ruta del calendar-home del principal con barra final (p.ej. '/enmanuel/calendars/'). La nueva coleccion cuelga de el. |
|
| name |
desc |
| slug |
segmento de path de la coleccion en la URL (p.ej. 'trabajo'); se sanea a [a-z0-9_-]. La coleccion se crea en <calendar_home><slug>/. Si queda vacio tras sanear, devuelve error de validacion. |
|
| name |
desc |
| display_name |
nombre visible de la coleccion (DAV:displayname). Si vacio, usa el slug saneado. |
|
| name |
desc |
| color |
color de la coleccion como hex '#rrggbb' (propiedad calendar-color de Apple, http://apple.com/ns/ical/). Opcional; '' lo omite. |
|
| name |
desc |
| description |
descripcion de la coleccion (calendar-description de CalDAV). Opcional; '' lo omite. |
|
| name |
desc |
| timeout_s |
timeout de cada peticion HTTP en segundos. Default 20.0. |
|
| name |
desc |
| verify_tls |
si True (default) verifica el certificado TLS. No desactivar salvo entorno de prueba. |
|
|
dict. En exito: {status:'ok', http_status:int, href:str} y, si la coleccion ya existia, ademas existed:True. En error (sin lanzar): {status:'error', http_status:int|None, href:str, error:str}. href es la ruta de la coleccion (calendar_home + slug saneado + '/'). |
true |
| test_sanitize_slug_minusculas |
| test_sanitize_slug_espacios_a_guion |
| test_sanitize_slug_elimina_caracteres_raros |
| test_sanitize_slug_colapsa_guiones_y_recorta |
| test_sanitize_slug_vacio |
| test_join_url_compone_la_coleccion |
| test_mkcalendar_xml_incluye_displayname |
| test_mkcalendar_xml_escapa_displayname |
| test_proppatch_xml_color_y_descripcion |
| test_proppatch_xml_solo_color |
| test_proppatch_xml_escapa_descripcion |
|
python/functions/infra/dav_make_calendar_test.py |
python/functions/infra/dav_make_calendar.py |