Adriano Di Luzio - Davvy - PyconSEI Talk
Transcript of Adriano Di Luzio - Davvy - PyconSEI Talk
![Page 1: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/1.jpg)
DAVVY DJANGO, WEBDAV E
(PESSIMO) STATO DELL'ARTEAdriano Di Luzio
Sabato 18 Aprile 2015 - Firenze - PYCONSEI
![Page 2: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/2.jpg)
ABOUT ME
Software Developer - Unbit, Roma
Studente - Informatica Magistrale @ Sapienza
www.github.com/aldur
www.twitter.com/AdrianoDiLuzio
2
![Page 3: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/3.jpg)
DAVVY: IL SOGNO
3
WebDAV
![Page 4: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/4.jpg)
WEBDAV: WHAT?
• Web Distributed Authoring and Versioning [1]
• Estensione di HTTP
• Il web - medium per lettura e scrittura
4
[1] rfc4918
![Page 5: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/5.jpg)
WEBDAV: WHO?
Apple (OS X & iOS clients)
Google (Android Calendars, Contacts)
E molte altre implementazioni.
5
![Page 6: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/6.jpg)
WEBDAV: HOW?
6
HTTP / WebDAV Request
PROPFIND (XML)
HTTP / WebDAV Response
PROPFIND (XML)
HTTP / WebDAV Request
MKCOL
…
![Page 7: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/7.jpg)
HAI DETTO XML?<D:prop xmlns:D='DAV:'><author xml:lang='en' xmlns:x='http://example.com/ns' xmlns='http://example.com/ns' xmlns:h='http://www.w3.org/1999/xhtml'> <x:name>Jane Doe</x:name> <x:uri added="2005-‐11-‐26" type="email" >mailto:[email protected]</x:uri> <x:uri added="2005-‐11-‐27" type="web" >http://www.example.com</x:uri> <x:notes> Jane has been working way <h:em>too</h:em> long on the long-‐awaited revision of <RFC2518>. </x:notes> </author> </D:prop>
7
![Page 8: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/8.jpg)
XML & HTTP: RICHIESTA
PROPFIND /container/ HTTP/1.1 Host: www.example.com Content-‐Type: application/xml; charset="utf-‐8" Content-‐Length: xxxx
<?xml version="1.0" encoding="utf-‐8" ?> <propfind xmlns="DAV:"> <propname/> </propfind>
8
![Page 9: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/9.jpg)
XML & HTTP: RISPOSTAHTTP/1.1 207 Multi-‐Status Content-‐Type: application/xml; charset="utf-‐8" Content-‐Length: xxxx
<?xml version="1.0" encoding="utf-‐8" ?> <multistatus xmlns="DAV:"> <response> <href>http://www.example.com/container/</href> <propstat> <prop xmlns:R="http://ns.example.com/boxschema/"> <R:author/> <creationdate/> <displayname/> <resourcetype/> </prop> <status>HTTP/1.1 200 OK</status> </propstat> </response> <!-‐-‐ ... -‐-‐> </multistatus>
9
![Page 10: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/10.jpg)
Template
DJANGO & DAVVYArchitettura e paradigmi
10
Model
View
![Page 11: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/11.jpg)
DJANGO & DAVVYArchitettura e paradigmi
10
Model
View
![Page 12: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/12.jpg)
Storage
DJANGO & DAVVYArchitettura e paradigmi
10
Model
View
![Page 13: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/13.jpg)
Storage
DJANGO & DAVVYArchitettura e paradigmi
10
Model
View
Properties
XML → WebDAVModel → XML
ResourcesCollections
![Page 14: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/14.jpg)
DAVVY: DETTAGLI
• Python 2 / Python 3.
• Estendibile a piacimento (Class-View based)
• Condivisione / protezione delle risorse.
11
![Page 15: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/15.jpg)
DAVVY: SET-UP
# settings.py DAVVY_STORAGE_PATH = '/var/www/davvy'
12
# urls.py from davvy.base import WebDAV from davvy.addressbook import CardDAV from davvy.calendar import CalDAV
urlpatterns = patterns('', url(r'^principals/(\w+)/(.*)', WebDAV.as_view(root='storage')), url(r'^storage/(\w+)/(.*)', WebDAV.as_view(root='storage')), url(r'^addressbook/(\w+)/(.*)', CardDAV.as_view(root='addressbook001')), url(r'^calendars/(\w+)/(.*)', CalDAV.as_view(root='calendars')),
url(r'^admin/', include(admin.site.urls)), )
![Page 16: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/16.jpg)
DAVVY: CUSTOMDAV
13
class CustomDAV(WebDAV): def __init__(self, **kwargs): self.http_method_names = WebDAV.http_method_names + \ ['custom'] super(CalDAV, self).__init__(**kwargs) def propfind(self, request, user, resource_name): return super(CalDAV, self).propfind(
request, user, resource_name, shared=True)
def put(self, request, user, resource_name): return super(CalDAV, self).put(request, user, resource_name)
# […]
def custom(self, request, user, resource_name): # A custom HTTP/WebDAV method! pass
![Page 17: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/17.jpg)
LO STATO DELL’ARTEL’INCUBO: I CLIENT
14
OS X Calendar Mozilla Thunderbird
![Page 18: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/18.jpg)
OS X CALENDAR
• Homesets Autodiscovery
• Richieste volanti (PROPFIND /)
• .well-known/{caldav, carddav}
15
![Page 19: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/19.jpg)
MOZILLA THUNDERBIRD
1. Nessun supporto out-of-the-box.
2. Lightning Calendar Extension.
3. Nessun supporto i’ll-build-the-box.
16
![Page 20: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/20.jpg)
I CLIENT: ROUND II
17
OS X ContactsMozilla Thunderbird
+ SOGo
![Page 21: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/21.jpg)
I CLIENT: ROUND III
18
OS X Finder Transmit
![Page 22: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/22.jpg)
SENZA FINE!19
![Page 25: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/25.jpg)
CONCLUSIONI
• Abbiamo imparato molto…
• …soprattutto a stare lontani da WebDAV!
• Nonostante questo, Davvy funziona!
• Almeno fino al prossimo giro di client.
22
![Page 26: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/26.jpg)
GRAZIE PER L’ATTENZIONE. DOMANDE?
23
https://github.com/unbit/davvy/
![Page 27: Adriano Di Luzio - Davvy - PyconSEI Talk](https://reader031.fdocument.pub/reader031/viewer/2022021506/58cff7ff1a28abfc0a8b52bf/html5/thumbnails/27.jpg)
CREDITI RISORSE GRAFICHE
• http://www.kameleon.pics/
• http://icons8.com/
24