SlideShare a Scribd company logo
1 of 27
Download to read offline
DAVVY

DJANGO,WEBDAV E

(PESSIMO) STATO DELL'ARTE
Adriano Di Luzio
Sabato 18 Aprile 2015 - Firenze - PYCONSEI
ABOUT ME
Software Developer - Unbit, Roma
Studente - Informatica Magistrale @ Sapienza
www.github.com/aldur
www.twitter.com/AdrianoDiLuzio
2
DAVVY: IL SOGNO
3
WebDAV
WEBDAV:WHAT?
• Web Distributed Authoring and Versioning [1]
• Estensione di HTTP
• Il web - medium per lettura e scrittura
4
[1] rfc4918
WEBDAV:WHO?
Apple (OS X & iOS clients)
Google (Android Calendars, Contacts)
E molte altre implementazioni.
5
WEBDAV: HOW?
6
HTTP / WebDAV Request
PROPFIND (XML)
HTTP / WebDAV Response
PROPFIND (XML)
HTTP / WebDAV Request
MKCOL
…
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:jane.doe@example.com</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	
  &lt;RFC2518&gt;.	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  </x:notes>	
  
	
  	
  	
  	
  	
  	
  	
  </author>	
  
	
  	
  	
  	
  	
  </D:prop>
7
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
XML & HTTP: RISPOSTA
HTTP/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
Template
DJANGO & DAVVY
Architettura e paradigmi
10
Model
View
DJANGO & DAVVY
Architettura e paradigmi
10
Model
View
Storage
DJANGO & DAVVY
Architettura e paradigmi
10
Model
View
Storage
DJANGO & DAVVY
Architettura e paradigmi
10
Model
View
Properties
XML → WebDAV
Model → XML
Resources
Collections
DAVVY: DETTAGLI
• Python 2 / Python 3.
• Estendibile a piacimento (Class-View based)
• Condivisione / protezione delle risorse.
11
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)),	
  
)
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	
  
LO STATO DELL’ARTE
L’INCUBO: I CLIENT
14
OS X Calendar MozillaThunderbird
OS X CALENDAR
• Homesets Autodiscovery
• Richieste volanti (PROPFIND /)
• .well-known/{caldav, carddav}
15
MOZILLATHUNDERBIRD
1. Nessun supporto out-of-the-box.
2. Lightning Calendar Extension.
3. Nessun supporto i’ll-build-the-box.
16
I CLIENT: ROUND II
17
OS X Contacts
MozillaThunderbird

+

SOGo
I CLIENT: ROUND III
18
OS X Finder Transmit
SENZA FINE!
19
E NON SIAMO GLI UNICI!
sabre/dav
20
owncloudradicale
milton
L’ALTERNATIVA
https://github.com/unbit/spockfs
21
CONCLUSIONI
• Abbiamo imparato molto…
• …soprattutto a stare lontani da WebDAV!
• Nonostante questo, Davvy funziona!
• Almeno fino al prossimo giro di client.
22
GRAZIE PER L’ATTENZIONE.

DOMANDE?
23
https://github.com/unbit/davvy/
CREDITI RISORSE GRAFICHE
• http://www.kameleon.pics/
• http://icons8.com/
24

More Related Content

What's hot

Php basic for vit university
Php basic for vit universityPhp basic for vit university
Php basic for vit universityMandakini Kumari
 
PHP BASIC PRESENTATION
PHP BASIC PRESENTATIONPHP BASIC PRESENTATION
PHP BASIC PRESENTATIONkrutitrivedi
 
PHP file
PHP  filePHP  file
PHP filetumetr1
 
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...webhostingguy
 
Mengembalikan data yang terhapus atau rusak pada hardisk menggunakan ubuntu
Mengembalikan data yang terhapus atau rusak pada hardisk menggunakan ubuntuMengembalikan data yang terhapus atau rusak pada hardisk menggunakan ubuntu
Mengembalikan data yang terhapus atau rusak pada hardisk menggunakan ubuntuAlferizhy Chalter
 
Rits Brown Bag - PHP & PHPMyAdmin
Rits Brown Bag - PHP & PHPMyAdminRits Brown Bag - PHP & PHPMyAdmin
Rits Brown Bag - PHP & PHPMyAdminRight IT Services
 
Php File Operations
Php File OperationsPhp File Operations
Php File Operationsmussawir20
 
The A to Z of developing for the web
The A to Z of developing for the webThe A to Z of developing for the web
The A to Z of developing for the webMatt Wood
 
eZ Publish Cluster Unleashed
eZ Publish Cluster UnleashedeZ Publish Cluster Unleashed
eZ Publish Cluster UnleashedBertrand Dunogier
 
Laporan setting dns
Laporan setting dnsLaporan setting dns
Laporan setting dnsSeptian Adi
 
Apache2 BootCamp : Using Apache to Serve Static Content
Apache2 BootCamp : Using Apache to Serve Static ContentApache2 BootCamp : Using Apache to Serve Static Content
Apache2 BootCamp : Using Apache to Serve Static ContentWildan Maulana
 
Reactをproductionに導入して変わったこと
Reactをproductionに導入して変わったことReactをproductionに導入して変わったこと
Reactをproductionに導入して変わったことHaruhiko Kobayashi
 
いろいろ
いろいろいろいろ
いろいろtekezo
 

What's hot (20)

Php basic for vit university
Php basic for vit universityPhp basic for vit university
Php basic for vit university
 
PHP BASIC PRESENTATION
PHP BASIC PRESENTATIONPHP BASIC PRESENTATION
PHP BASIC PRESENTATION
 
PHP file
PHP  filePHP  file
PHP file
 
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
 
File Upload
File UploadFile Upload
File Upload
 
Php basics
Php basicsPhp basics
Php basics
 
Uploading a file with php
Uploading a file with phpUploading a file with php
Uploading a file with php
 
Mengembalikan data yang terhapus atau rusak pada hardisk menggunakan ubuntu
Mengembalikan data yang terhapus atau rusak pada hardisk menggunakan ubuntuMengembalikan data yang terhapus atau rusak pada hardisk menggunakan ubuntu
Mengembalikan data yang terhapus atau rusak pada hardisk menggunakan ubuntu
 
Rits Brown Bag - PHP & PHPMyAdmin
Rits Brown Bag - PHP & PHPMyAdminRits Brown Bag - PHP & PHPMyAdmin
Rits Brown Bag - PHP & PHPMyAdmin
 
Php File Operations
Php File OperationsPhp File Operations
Php File Operations
 
REST API Laravel
REST API LaravelREST API Laravel
REST API Laravel
 
Php File Upload
Php File UploadPhp File Upload
Php File Upload
 
The A to Z of developing for the web
The A to Z of developing for the webThe A to Z of developing for the web
The A to Z of developing for the web
 
eZ Publish Cluster Unleashed
eZ Publish Cluster UnleashedeZ Publish Cluster Unleashed
eZ Publish Cluster Unleashed
 
ZH爱丽丝梦游仙境
ZH爱丽丝梦游仙境ZH爱丽丝梦游仙境
ZH爱丽丝梦游仙境
 
JSOP in 60 seconds
JSOP in 60 secondsJSOP in 60 seconds
JSOP in 60 seconds
 
Laporan setting dns
Laporan setting dnsLaporan setting dns
Laporan setting dns
 
Apache2 BootCamp : Using Apache to Serve Static Content
Apache2 BootCamp : Using Apache to Serve Static ContentApache2 BootCamp : Using Apache to Serve Static Content
Apache2 BootCamp : Using Apache to Serve Static Content
 
Reactをproductionに導入して変わったこと
Reactをproductionに導入して変わったことReactをproductionに導入して変わったこと
Reactをproductionに導入して変わったこと
 
いろいろ
いろいろいろいろ
いろいろ
 

Viewers also liked

Bracelets & Bangles by Kunwar Danish (Dan)
Bracelets & Bangles by Kunwar Danish (Dan)Bracelets & Bangles by Kunwar Danish (Dan)
Bracelets & Bangles by Kunwar Danish (Dan)Kunwar Danish (Dan)
 
Valdez multimedia project_11
Valdez multimedia project_11Valdez multimedia project_11
Valdez multimedia project_11mellie1218
 
Guillermo_Rodriguez-Portfolio-2015
Guillermo_Rodriguez-Portfolio-2015Guillermo_Rodriguez-Portfolio-2015
Guillermo_Rodriguez-Portfolio-2015GUILLERMO RODRIGUEZ
 
How Much E-Waste Do We Produce Globally?
How Much E-Waste Do We Produce Globally?How Much E-Waste Do We Produce Globally?
How Much E-Waste Do We Produce Globally?Phil Gibbs
 
Immanuel Leduaba cv Latest
Immanuel Leduaba cv LatestImmanuel Leduaba cv Latest
Immanuel Leduaba cv LatestImmanuel Leduaba
 
Oportunidades para el empleo y el emprendimiento verde
Oportunidades para el empleo y el emprendimiento verdeOportunidades para el empleo y el emprendimiento verde
Oportunidades para el empleo y el emprendimiento verdeMiriam Navarro Díaz
 
Smart phone based robotic control for surveillance applications
Smart phone based robotic control for surveillance applicationsSmart phone based robotic control for surveillance applications
Smart phone based robotic control for surveillance applicationseSAT Journals
 
Diadeem roodstaart powerpoint
Diadeem roodstaart powerpointDiadeem roodstaart powerpoint
Diadeem roodstaart powerpointArie Yuri Bakker
 
นิทรรศการพระสิทธิธาดา
นิทรรศการพระสิทธิธาดา นิทรรศการพระสิทธิธาดา
นิทรรศการพระสิทธิธาดา Rom Thanuthep
 

Viewers also liked (13)

Bracelets & Bangles by Kunwar Danish (Dan)
Bracelets & Bangles by Kunwar Danish (Dan)Bracelets & Bangles by Kunwar Danish (Dan)
Bracelets & Bangles by Kunwar Danish (Dan)
 
Valdez multimedia project_11
Valdez multimedia project_11Valdez multimedia project_11
Valdez multimedia project_11
 
CMHF powerpoint
CMHF powerpointCMHF powerpoint
CMHF powerpoint
 
Guillermo_Rodriguez-Portfolio-2015
Guillermo_Rodriguez-Portfolio-2015Guillermo_Rodriguez-Portfolio-2015
Guillermo_Rodriguez-Portfolio-2015
 
How Much E-Waste Do We Produce Globally?
How Much E-Waste Do We Produce Globally?How Much E-Waste Do We Produce Globally?
How Much E-Waste Do We Produce Globally?
 
Resume new
Resume newResume new
Resume new
 
Immanuel Leduaba cv Latest
Immanuel Leduaba cv LatestImmanuel Leduaba cv Latest
Immanuel Leduaba cv Latest
 
Oportunidades para el empleo y el emprendimiento verde
Oportunidades para el empleo y el emprendimiento verdeOportunidades para el empleo y el emprendimiento verde
Oportunidades para el empleo y el emprendimiento verde
 
Smart phone based robotic control for surveillance applications
Smart phone based robotic control for surveillance applicationsSmart phone based robotic control for surveillance applications
Smart phone based robotic control for surveillance applications
 
Diadeem roodstaart powerpoint
Diadeem roodstaart powerpointDiadeem roodstaart powerpoint
Diadeem roodstaart powerpoint
 
Catálogo Nectar Sunglasses
Catálogo Nectar SunglassesCatálogo Nectar Sunglasses
Catálogo Nectar Sunglasses
 
นิทรรศการพระสิทธิธาดา
นิทรรศการพระสิทธิธาดา นิทรรศการพระสิทธิธาดา
นิทรรศการพระสิทธิธาดา
 
Dps crime
Dps crimeDps crime
Dps crime
 

Similar to Adriano Di Luzio - Davvy - PyconSEI Talk

Using and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middlewareUsing and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middlewareAlona Mekhovova
 
03 form-data
03 form-data03 form-data
03 form-datasnopteck
 
An Introduction to Tornado
An Introduction to TornadoAn Introduction to Tornado
An Introduction to TornadoGavin Roy
 
atomPub, ruby y la api de 11870
atomPub, ruby y la api de 11870atomPub, ruby y la api de 11870
atomPub, ruby y la api de 11870David Calavera
 
Using the new WordPress REST API
Using the new WordPress REST APIUsing the new WordPress REST API
Using the new WordPress REST APICaldera Labs
 
Rest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.jsRest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.jsCarol McDonald
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortalJennifer Bourey
 
GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009marpierc
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.pptWalaSidhom1
 
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...King Foo
 
SWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meetingSWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meetingSWORD Project
 
Rapid API development examples for Impress Application Server / Node.js (jsfw...
Rapid API development examples for Impress Application Server / Node.js (jsfw...Rapid API development examples for Impress Application Server / Node.js (jsfw...
Rapid API development examples for Impress Application Server / Node.js (jsfw...Timur Shemsedinov
 

Similar to Adriano Di Luzio - Davvy - PyconSEI Talk (20)

Using and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middlewareUsing and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middleware
 
03 form-data
03 form-data03 form-data
03 form-data
 
Android networking-2
Android networking-2Android networking-2
Android networking-2
 
An Introduction to Tornado
An Introduction to TornadoAn Introduction to Tornado
An Introduction to Tornado
 
atomPub, ruby y la api de 11870
atomPub, ruby y la api de 11870atomPub, ruby y la api de 11870
atomPub, ruby y la api de 11870
 
Using the new WordPress REST API
Using the new WordPress REST APIUsing the new WordPress REST API
Using the new WordPress REST API
 
URL Design
URL DesignURL Design
URL Design
 
Web-Performance
Web-PerformanceWeb-Performance
Web-Performance
 
Rest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.jsRest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.js
 
Rest
RestRest
Rest
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009
 
Web Services
Web ServicesWeb Services
Web Services
 
HTTP2
HTTP2HTTP2
HTTP2
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.ppt
 
Red5 - PHUG Workshops
Red5 - PHUG WorkshopsRed5 - PHUG Workshops
Red5 - PHUG Workshops
 
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
 
SWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meetingSWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meeting
 
Rapid API development examples for Impress Application Server / Node.js (jsfw...
Rapid API development examples for Impress Application Server / Node.js (jsfw...Rapid API development examples for Impress Application Server / Node.js (jsfw...
Rapid API development examples for Impress Application Server / Node.js (jsfw...
 
Google app engine by example
Google app engine by exampleGoogle app engine by example
Google app engine by example
 

Recently uploaded

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburgmasabamasaba
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 

Recently uploaded (20)

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 

Adriano Di Luzio - Davvy - PyconSEI Talk

  • 1. DAVVY
 DJANGO,WEBDAV E
 (PESSIMO) STATO DELL'ARTE Adriano Di Luzio Sabato 18 Aprile 2015 - Firenze - PYCONSEI
  • 2. ABOUT ME Software Developer - Unbit, Roma Studente - Informatica Magistrale @ Sapienza www.github.com/aldur www.twitter.com/AdrianoDiLuzio 2
  • 4. WEBDAV:WHAT? • Web Distributed Authoring and Versioning [1] • Estensione di HTTP • Il web - medium per lettura e scrittura 4 [1] rfc4918
  • 5. WEBDAV:WHO? Apple (OS X & iOS clients) Google (Android Calendars, Contacts) E molte altre implementazioni. 5
  • 6. WEBDAV: HOW? 6 HTTP / WebDAV Request PROPFIND (XML) HTTP / WebDAV Response PROPFIND (XML) HTTP / WebDAV Request MKCOL …
  • 7. 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:jane.doe@example.com</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  &lt;RFC2518&gt;.                    </x:notes>                </author>            </D:prop> 7
  • 8. 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
  • 9. XML & HTTP: RISPOSTA HTTP/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
  • 10. Template DJANGO & DAVVY Architettura e paradigmi 10 Model View
  • 11. DJANGO & DAVVY Architettura e paradigmi 10 Model View
  • 12. Storage DJANGO & DAVVY Architettura e paradigmi 10 Model View
  • 13. Storage DJANGO & DAVVY Architettura e paradigmi 10 Model View Properties XML → WebDAV Model → XML Resources Collections
  • 14. DAVVY: DETTAGLI • Python 2 / Python 3. • Estendibile a piacimento (Class-View based) • Condivisione / protezione delle risorse. 11
  • 15. 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)),   )
  • 16. 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  
  • 17. LO STATO DELL’ARTE L’INCUBO: I CLIENT 14 OS X Calendar MozillaThunderbird
  • 18. OS X CALENDAR • Homesets Autodiscovery • Richieste volanti (PROPFIND /) • .well-known/{caldav, carddav} 15
  • 19. MOZILLATHUNDERBIRD 1. Nessun supporto out-of-the-box. 2. Lightning Calendar Extension. 3. Nessun supporto i’ll-build-the-box. 16
  • 20. I CLIENT: ROUND II 17 OS X Contacts MozillaThunderbird
 +
 SOGo
  • 21. I CLIENT: ROUND III 18 OS X Finder Transmit
  • 23. E NON SIAMO GLI UNICI! sabre/dav 20 owncloudradicale milton
  • 25. CONCLUSIONI • Abbiamo imparato molto… • …soprattutto a stare lontani da WebDAV! • Nonostante questo, Davvy funziona! • Almeno fino al prossimo giro di client. 22
  • 27. CREDITI RISORSE GRAFICHE • http://www.kameleon.pics/ • http://icons8.com/ 24