SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
Ich

   Zope und Plone-
    Entwickler
   9 Jahre
   ”Power-Entwickler”
              Kotti #PloneKonf   1
Plones Stärken

   Warum verwende ich
    Plone?



             Kotti #PloneKonf   2
Plones Stärken

   PHP
   Java
   .NET

             Kotti #PloneKonf   3
Plones Stärken

   Enterprise
     Beans
     SOAP

     ...




              Kotti #PloneKonf   4
Plones Stärken

   Enterprise
     Anzüge
     Krawatten

     Pants




              Kotti #PloneKonf   5
Plones Stärken

   Python!!1
     fun
     produktiv




                  Kotti #PloneKonf   6
Plones Stärken

   Python!!1
     einfach
     lesbar

     expressiv




                  Kotti #PloneKonf   7
Plones Stärken

   Plone bricht Versprechen
     WTF?
     Plone??!




                 Kotti #PloneKonf   8
Plones Stärken

   Plone bricht Versprechen
     einfach
     lesbar

     expressiv

     Love hurts

               Kotti #PloneKonf   9
Plones Stärken

   Community!!
     Anzüge
     Krawatten

     PANTS




              Kotti #PloneKonf   10
Plones Stärken

   Community!!
     international
     freundschaftlich

     professionell




               Kotti #PloneKonf   11
Plones Stärken

   Flexibilität
   Erweiterbarkeit
       Plone sagt ja wo andere
        geht nicht sagen

                   Kotti #PloneKonf   12
Plones Stärken

   Anpassen through the
    web
     sehr interessant für Bastler
      und Communities
     uninteressant für mich


               Kotti #PloneKonf   13
Plones Stärken

   Plone Core hat viele
    Features out of the box



              Kotti #PloneKonf   14
Plones Stärken

   viele freie Add-Ons
       nur ein kleiner Teil gut
        programmiert und
        gewartet

                  Kotti #PloneKonf   15
Plones Stärken

   Plones Killer-Features
     Object File System (OFS)
     Rechte, Rollen, Gruppen

     Workflows




              Kotti #PloneKonf   16
Plones Stärken

   Object
    File
    System


             Kotti #PloneKonf   17
Plones Stärken

   Rechte
   Rollen
   Gruppen

              Kotti #PloneKonf   18
Plones Stärken

   Workflows




             Kotti #PloneKonf   19
Plones Schwächen

   Core hat zu viele
    Features out of the box



              Kotti #PloneKonf   20
Plones Schwächen

   verschiedene
    konkurrierende
    Technologien
   [more than] only one way
    to do it
             Kotti #PloneKonf   21
Plones Schwächen

   Code kompliziert
     zu eifriges Adaptieren
      neuer Technologien
     Zope 3 und Component

      Architecture
              Kotti #PloneKonf   22
Plones Schwächen




            Kotti #PloneKonf   23
Plones Schwächen




            Kotti #PloneKonf   24
Plones Schwächen




            Kotti #PloneKonf   25
Pyramid




          Kotti #PloneKonf   26
Pyramid

   Stärken gegenüber Zope
     Pythonic
     fits your brain

     Kleiner Kern

     Ausgezeichnete Doku

              Kotti #PloneKonf   27
Pyramid




          Kotti #PloneKonf   28
Pyramid




                             SEXY



          Kotti #PloneKonf          29
Pyramid

   Basis für allerlei
    Anwendungen
       nicht nur CMS
   gut für komplexe
    Anwendungen
                 Kotti #PloneKonf   30
Pyramid

   Zope-Wurzeln
   vgl. Plone Killer-Features
     OFS (eigtl Traversal)
     Rechte, Rollen, Gruppen

     Workflows
              Kotti #PloneKonf   31
Pyramid

   Pyramid hat viele weitere
    Komponenten die ein
    CMS braucht


              Kotti #PloneKonf   32
Pyramid

   solider Erweiterungs-
    Mechanismus
   pyramid.includes =
     pyramid_debugtoolbar
     pyramid_tm

              Kotti #PloneKonf   33
Pyramid

   Internationalisierung:
    pyramid.i18n



              Kotti #PloneKonf   34
Pyramid

   Templates und
    Customization:
    Chameleon (ZPT)
    pyramid.asset

           Kotti #PloneKonf   35
Pyramid

   Rechte, ACLs, Gruppen:
    pyramid.security



             Kotti #PloneKonf   36
Pyramid

   keine Anwendung
   kein CRUD
   keine Datenbank
   unopinionated
             Kotti #PloneKonf   37
Pyramid

   Ich will mein CMS mit
    Pyramid machen!
   WHAT DO?


              Kotti #PloneKonf   38
Pyramid

   für unser CMS fehlt noch
     Verdrahtung
     Konfiguration




               Kotti #PloneKonf   39
Pyramid

   für unser CMS fehlt noch
     Persistenz
     OFS

     User Interface

     Formulare

               Kotti #PloneKonf   40
Pyramid

   für unser CMS fehlt noch
     Benutzer /
      Benutzerverwaltung
     Control Panel

     Schnittstelle für Add-Ons


               Kotti #PloneKonf   41
Kotti
   genau diese Dinge liefert




              Kotti #PloneKonf   42
Kotti ♥ Pyramid

   schließt die Lücke zw.
    Pyramid und CMS
   ist Framework und out of
    the box CMS, wie Plone

              Kotti #PloneKonf   43
Kotti ♥ Pyramid
   nutzt bestehende
    Pyramid-Mechanismen
    voll aus
   und Komponenten aus
    Pyramid- und Python-
    Community
              Kotti #PloneKonf   44
Kotti ♥ Pyramid

   wenig neue Konzepte
   Pyramid-Entwickler
    sollen möglichst
    Bekanntes vorfinden
   erbt Pyramids Stärken
              Kotti #PloneKonf   45
Kotti ♥ SQLAlchemy

   Kottis Datenbank
     verwendet SQL
      Datenbank
     nicht ZODB

     SQLAlchemy


             Kotti #PloneKonf   46
Kotti ♥ SQLAlchemy

   Kottis Datenbank
     keine großen
      Abstraktionen
     SQLAlchemy API

     abgesehen von Nodes


             Kotti #PloneKonf   47
Kotti ♥ Twitter Bootstrap

   Default Oberfläche
    benützt Bootstrap
     CSS, JavaScript
     Responsive Design

     dokumentiert, getestet


               Kotti #PloneKonf   48
Kotti ♥ Twitter Bootstrap



                                  CRAZY
                     j
                                  SEXY



               Kotti #PloneKonf       49
Kotti ♥ Colander und Deform

   Default Formulare
    basieren auf Deform
     Schemas
     Validierung

     Widgets


               Kotti #PloneKonf   50
Kotti ♥ Beaker

   Kotti verwendet Beaker
    für das Sessioning
     Daten die vorübergehend
      gespeichert werden
     konfigurierbar


                 Kotti #PloneKonf   51
Kotti ♥ plone.i18n

   Plone??!
   Ja, plone.dott!



               Kotti #PloneKonf   52
Kotti ♥ repoze.workflow

   leicht zu integrieren
   nicht out of the box dabei



               Kotti #PloneKonf   53
Kotti ♥ YOU

   Kotti konfiguriert alle
    diese Komponenten
   damit du es nicht
    machen mußt
   Batteries included
               Kotti #PloneKonf   54
Kotti ♥ YOU




              Kotti #PloneKonf   55
Kottis Design

   möglichst einfach
   kein Big Design
   konzentriert sich auf:
     (kleinen) Core
     Erweiterbarkeit

                Kotti #PloneKonf   56
Kottis Nodes API

   root = get_root()
   dict-like
       root['hey'] = Document(...)
       root['hey'].title = u'Ho'
       del root['hey']
       root.values() # usw.
                   Kotti #PloneKonf   57
Kottis Nodes API

   Reihenfolge (ordered)
       child = root.children.pop(1)
       root.children.insert(0,child)
   alle Content-Typen
    (Dokumente, Files, …)
    sind Nodes     Kotti #PloneKonf     58
Kottis Benutzerdatenbank API

   P = get_principals()
   P['daniel'] = {
        'name': 'daniel',
        'title': 'Daniele',
        'password': 'woops',
        }

              Kotti #PloneKonf   59
Kottis Schnittstellen für Add-Ons

   kotti.includes
   kotti.populators
   kotti.available_types
   kotti.asset_overrides


              Kotti #PloneKonf      60
Kottis Templates

   Master-Templates
   Unterschied zwischen
     Öffentliche Oberfläche
     Redakteurs-Oberfläche



              Kotti #PloneKonf   61
Kottis Templates

   leicht austauschbar
     z.B. nur öffentliche
      Oberfläche
     oder nur Dokument-

      Template
               Kotti #PloneKonf   62
Kottis Templates

   Kotti Slots (Viewlets)
       def render_hello(context, request):
            return u'Hello, World!'

        from kotti.views.slots import *
        register(
          RenderLeftSlot, None, render_hello)




                      Kotti #PloneKonf          63
Kottis Zukunft




                 Kotti #PloneKonf   64
Kottis Vergangenheit

   existiert seit > 1 Jahr
   ich verwende es
     ein großes Projekt
     ein kleines Projekt

     andere Projekte, Websites

               Kotti #PloneKonf   65
Kottis Vergangenheit

   Add-Ons
     kotti_calendar
     kotti_twitter

     kotti_contactform

     kotti_analytics

               Kotti #PloneKonf   66
Kottis Gegenwart

   Sprint!
     WYSIWYG Hochladen von
      Dateien und Bildern
     kotti_blog


     kotti_whatever


              Kotti #PloneKonf   67
Ciao
   github.com/Pylons/Kotti
   kottidemo.danielnouri.org
   #kotti auf Freenode
   @dnouri
   daniel.nouri@gmail.com
              Kotti #PloneKonf   68

Weitere ähnliche Inhalte

Andere mochten auch

A1 leçon 11 (à-de, quand-durée, 70-100)
A1 leçon 11 (à-de, quand-durée, 70-100)A1 leçon 11 (à-de, quand-durée, 70-100)
A1 leçon 11 (à-de, quand-durée, 70-100)Francois Jacob
 
2 0 liitérature ancienne (1)
2 0 liitérature ancienne (1)2 0 liitérature ancienne (1)
2 0 liitérature ancienne (1)LITTPOL
 
Dossier de production groupe 132 sophia antipolis
Dossier de production groupe 132   sophia antipolisDossier de production groupe 132   sophia antipolis
Dossier de production groupe 132 sophia antipolisMARIASAYARH
 
Maitrise de la demande énergétique en France : quel avenir pour son financem...
Maitrise de la demande énergétique en France : quel  avenir pour son financem...Maitrise de la demande énergétique en France : quel  avenir pour son financem...
Maitrise de la demande énergétique en France : quel avenir pour son financem...Monimmeuble.com
 
Vortrag Ostbayrischer Tourismustag2008 Waldhoer
Vortrag Ostbayrischer Tourismustag2008 WaldhoerVortrag Ostbayrischer Tourismustag2008 Waldhoer
Vortrag Ostbayrischer Tourismustag2008 WaldhoerKlemens Waldhör
 
eCommerce Recht 2011 aktuell
eCommerce Recht 2011 aktuelleCommerce Recht 2011 aktuell
eCommerce Recht 2011 aktuelleCommerce Lounge
 
Supermarché communautaire
Supermarché communautaireSupermarché communautaire
Supermarché communautaireSimon Vogliolo
 
MAVAM Argentina 2a Edicion - v. Español - 09/2011
MAVAM Argentina 2a Edicion - v. Español - 09/2011MAVAM Argentina 2a Edicion - v. Español - 09/2011
MAVAM Argentina 2a Edicion - v. Español - 09/201124x7 COMUNICAÇÃO
 
MAVAM Mexico 2nd Edition - July 2011
MAVAM Mexico 2nd Edition - July 2011MAVAM Mexico 2nd Edition - July 2011
MAVAM Mexico 2nd Edition - July 201124x7 COMUNICAÇÃO
 
Fortalecimiento a mipes sena antioquia final
Fortalecimiento a mipes sena antioquia finalFortalecimiento a mipes sena antioquia final
Fortalecimiento a mipes sena antioquia finaljuanitavelez
 
Les Français, la transition énergétique et les économies d’énergie
Les Français, la transition énergétique  et les économies d’énergieLes Français, la transition énergétique  et les économies d’énergie
Les Français, la transition énergétique et les économies d’énergieMonimmeuble.com
 

Andere mochten auch (20)

A1 leçon 11 (à-de, quand-durée, 70-100)
A1 leçon 11 (à-de, quand-durée, 70-100)A1 leçon 11 (à-de, quand-durée, 70-100)
A1 leçon 11 (à-de, quand-durée, 70-100)
 
2 0 liitérature ancienne (1)
2 0 liitérature ancienne (1)2 0 liitérature ancienne (1)
2 0 liitérature ancienne (1)
 
Fem panellets 2
Fem panellets 2Fem panellets 2
Fem panellets 2
 
Dossier de production groupe 132 sophia antipolis
Dossier de production groupe 132   sophia antipolisDossier de production groupe 132   sophia antipolis
Dossier de production groupe 132 sophia antipolis
 
PR und Social Media
PR und Social MediaPR und Social Media
PR und Social Media
 
Maitrise de la demande énergétique en France : quel avenir pour son financem...
Maitrise de la demande énergétique en France : quel  avenir pour son financem...Maitrise de la demande énergétique en France : quel  avenir pour son financem...
Maitrise de la demande énergétique en France : quel avenir pour son financem...
 
Editorialista de the guardian resalta cambios en ecuador
Editorialista de the guardian resalta cambios en ecuadorEditorialista de the guardian resalta cambios en ecuador
Editorialista de the guardian resalta cambios en ecuador
 
Vortrag Ostbayrischer Tourismustag2008 Waldhoer
Vortrag Ostbayrischer Tourismustag2008 WaldhoerVortrag Ostbayrischer Tourismustag2008 Waldhoer
Vortrag Ostbayrischer Tourismustag2008 Waldhoer
 
Abipbox
AbipboxAbipbox
Abipbox
 
Java 2 d
Java 2 dJava 2 d
Java 2 d
 
eCommerce Recht 2011 aktuell
eCommerce Recht 2011 aktuelleCommerce Recht 2011 aktuell
eCommerce Recht 2011 aktuell
 
Supermarché communautaire
Supermarché communautaireSupermarché communautaire
Supermarché communautaire
 
Antech
AntechAntech
Antech
 
MAVAM Argentina 2a Edicion - v. Español - 09/2011
MAVAM Argentina 2a Edicion - v. Español - 09/2011MAVAM Argentina 2a Edicion - v. Español - 09/2011
MAVAM Argentina 2a Edicion - v. Español - 09/2011
 
MAVAM Mexico 2nd Edition - July 2011
MAVAM Mexico 2nd Edition - July 2011MAVAM Mexico 2nd Edition - July 2011
MAVAM Mexico 2nd Edition - July 2011
 
Fortalecimiento a mipes sena antioquia final
Fortalecimiento a mipes sena antioquia finalFortalecimiento a mipes sena antioquia final
Fortalecimiento a mipes sena antioquia final
 
Medicina del Treball i IT
Medicina del Treball i ITMedicina del Treball i IT
Medicina del Treball i IT
 
Plan de traitement partagé
Plan de traitement partagéPlan de traitement partagé
Plan de traitement partagé
 
Les Français, la transition énergétique et les économies d’énergie
Les Français, la transition énergétique  et les économies d’énergieLes Français, la transition énergétique  et les économies d’énergie
Les Français, la transition énergétique et les économies d’énergie
 
Atelier competence-imprime
Atelier competence-imprimeAtelier competence-imprime
Atelier competence-imprime
 

Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

  • 1. Ich  Zope und Plone- Entwickler  9 Jahre  ”Power-Entwickler” Kotti #PloneKonf 1
  • 2. Plones Stärken  Warum verwende ich Plone? Kotti #PloneKonf 2
  • 3. Plones Stärken  PHP  Java  .NET Kotti #PloneKonf 3
  • 4. Plones Stärken  Enterprise  Beans  SOAP  ... Kotti #PloneKonf 4
  • 5. Plones Stärken  Enterprise  Anzüge  Krawatten  Pants Kotti #PloneKonf 5
  • 6. Plones Stärken  Python!!1  fun  produktiv Kotti #PloneKonf 6
  • 7. Plones Stärken  Python!!1  einfach  lesbar  expressiv Kotti #PloneKonf 7
  • 8. Plones Stärken  Plone bricht Versprechen  WTF?  Plone??! Kotti #PloneKonf 8
  • 9. Plones Stärken  Plone bricht Versprechen  einfach  lesbar  expressiv  Love hurts Kotti #PloneKonf 9
  • 10. Plones Stärken  Community!!  Anzüge  Krawatten  PANTS Kotti #PloneKonf 10
  • 11. Plones Stärken  Community!!  international  freundschaftlich  professionell Kotti #PloneKonf 11
  • 12. Plones Stärken  Flexibilität  Erweiterbarkeit  Plone sagt ja wo andere geht nicht sagen Kotti #PloneKonf 12
  • 13. Plones Stärken  Anpassen through the web  sehr interessant für Bastler und Communities  uninteressant für mich Kotti #PloneKonf 13
  • 14. Plones Stärken  Plone Core hat viele Features out of the box Kotti #PloneKonf 14
  • 15. Plones Stärken  viele freie Add-Ons  nur ein kleiner Teil gut programmiert und gewartet Kotti #PloneKonf 15
  • 16. Plones Stärken  Plones Killer-Features  Object File System (OFS)  Rechte, Rollen, Gruppen  Workflows Kotti #PloneKonf 16
  • 17. Plones Stärken  Object File System Kotti #PloneKonf 17
  • 18. Plones Stärken  Rechte  Rollen  Gruppen Kotti #PloneKonf 18
  • 19. Plones Stärken  Workflows Kotti #PloneKonf 19
  • 20. Plones Schwächen  Core hat zu viele Features out of the box Kotti #PloneKonf 20
  • 21. Plones Schwächen  verschiedene konkurrierende Technologien  [more than] only one way to do it Kotti #PloneKonf 21
  • 22. Plones Schwächen  Code kompliziert  zu eifriges Adaptieren neuer Technologien  Zope 3 und Component Architecture Kotti #PloneKonf 22
  • 23. Plones Schwächen Kotti #PloneKonf 23
  • 24. Plones Schwächen Kotti #PloneKonf 24
  • 25. Plones Schwächen Kotti #PloneKonf 25
  • 26. Pyramid Kotti #PloneKonf 26
  • 27. Pyramid  Stärken gegenüber Zope  Pythonic  fits your brain  Kleiner Kern  Ausgezeichnete Doku Kotti #PloneKonf 27
  • 28. Pyramid Kotti #PloneKonf 28
  • 29. Pyramid SEXY Kotti #PloneKonf 29
  • 30. Pyramid  Basis für allerlei Anwendungen  nicht nur CMS  gut für komplexe Anwendungen Kotti #PloneKonf 30
  • 31. Pyramid  Zope-Wurzeln  vgl. Plone Killer-Features  OFS (eigtl Traversal)  Rechte, Rollen, Gruppen  Workflows Kotti #PloneKonf 31
  • 32. Pyramid  Pyramid hat viele weitere Komponenten die ein CMS braucht Kotti #PloneKonf 32
  • 33. Pyramid  solider Erweiterungs- Mechanismus  pyramid.includes =  pyramid_debugtoolbar  pyramid_tm Kotti #PloneKonf 33
  • 34. Pyramid  Internationalisierung: pyramid.i18n Kotti #PloneKonf 34
  • 35. Pyramid  Templates und Customization: Chameleon (ZPT) pyramid.asset Kotti #PloneKonf 35
  • 36. Pyramid  Rechte, ACLs, Gruppen: pyramid.security Kotti #PloneKonf 36
  • 37. Pyramid  keine Anwendung  kein CRUD  keine Datenbank  unopinionated Kotti #PloneKonf 37
  • 38. Pyramid  Ich will mein CMS mit Pyramid machen!  WHAT DO? Kotti #PloneKonf 38
  • 39. Pyramid  für unser CMS fehlt noch  Verdrahtung  Konfiguration Kotti #PloneKonf 39
  • 40. Pyramid  für unser CMS fehlt noch  Persistenz  OFS  User Interface  Formulare Kotti #PloneKonf 40
  • 41. Pyramid  für unser CMS fehlt noch  Benutzer / Benutzerverwaltung  Control Panel  Schnittstelle für Add-Ons Kotti #PloneKonf 41
  • 42. Kotti  genau diese Dinge liefert Kotti #PloneKonf 42
  • 43. Kotti ♥ Pyramid  schließt die Lücke zw. Pyramid und CMS  ist Framework und out of the box CMS, wie Plone Kotti #PloneKonf 43
  • 44. Kotti ♥ Pyramid  nutzt bestehende Pyramid-Mechanismen voll aus  und Komponenten aus Pyramid- und Python- Community Kotti #PloneKonf 44
  • 45. Kotti ♥ Pyramid  wenig neue Konzepte  Pyramid-Entwickler sollen möglichst Bekanntes vorfinden  erbt Pyramids Stärken Kotti #PloneKonf 45
  • 46. Kotti ♥ SQLAlchemy  Kottis Datenbank  verwendet SQL Datenbank  nicht ZODB  SQLAlchemy Kotti #PloneKonf 46
  • 47. Kotti ♥ SQLAlchemy  Kottis Datenbank  keine großen Abstraktionen  SQLAlchemy API  abgesehen von Nodes Kotti #PloneKonf 47
  • 48. Kotti ♥ Twitter Bootstrap  Default Oberfläche benützt Bootstrap  CSS, JavaScript  Responsive Design  dokumentiert, getestet Kotti #PloneKonf 48
  • 49. Kotti ♥ Twitter Bootstrap CRAZY j SEXY Kotti #PloneKonf 49
  • 50. Kotti ♥ Colander und Deform  Default Formulare basieren auf Deform  Schemas  Validierung  Widgets Kotti #PloneKonf 50
  • 51. Kotti ♥ Beaker  Kotti verwendet Beaker für das Sessioning  Daten die vorübergehend gespeichert werden  konfigurierbar Kotti #PloneKonf 51
  • 52. Kotti ♥ plone.i18n  Plone??!  Ja, plone.dott! Kotti #PloneKonf 52
  • 53. Kotti ♥ repoze.workflow  leicht zu integrieren  nicht out of the box dabei Kotti #PloneKonf 53
  • 54. Kotti ♥ YOU  Kotti konfiguriert alle diese Komponenten  damit du es nicht machen mußt  Batteries included Kotti #PloneKonf 54
  • 55. Kotti ♥ YOU Kotti #PloneKonf 55
  • 56. Kottis Design  möglichst einfach  kein Big Design  konzentriert sich auf:  (kleinen) Core  Erweiterbarkeit Kotti #PloneKonf 56
  • 57. Kottis Nodes API  root = get_root()  dict-like  root['hey'] = Document(...)  root['hey'].title = u'Ho'  del root['hey']  root.values() # usw. Kotti #PloneKonf 57
  • 58. Kottis Nodes API  Reihenfolge (ordered)  child = root.children.pop(1)  root.children.insert(0,child)  alle Content-Typen (Dokumente, Files, …) sind Nodes Kotti #PloneKonf 58
  • 59. Kottis Benutzerdatenbank API  P = get_principals()  P['daniel'] = {     'name': 'daniel',     'title': 'Daniele',     'password': 'woops',     } Kotti #PloneKonf 59
  • 60. Kottis Schnittstellen für Add-Ons  kotti.includes  kotti.populators  kotti.available_types  kotti.asset_overrides Kotti #PloneKonf 60
  • 61. Kottis Templates  Master-Templates  Unterschied zwischen  Öffentliche Oberfläche  Redakteurs-Oberfläche Kotti #PloneKonf 61
  • 62. Kottis Templates  leicht austauschbar  z.B. nur öffentliche Oberfläche  oder nur Dokument- Template Kotti #PloneKonf 62
  • 63. Kottis Templates  Kotti Slots (Viewlets)  def render_hello(context, request):     return u'Hello, World!' from kotti.views.slots import * register(   RenderLeftSlot, None, render_hello) Kotti #PloneKonf 63
  • 64. Kottis Zukunft Kotti #PloneKonf 64
  • 65. Kottis Vergangenheit  existiert seit > 1 Jahr  ich verwende es  ein großes Projekt  ein kleines Projekt  andere Projekte, Websites Kotti #PloneKonf 65
  • 66. Kottis Vergangenheit  Add-Ons  kotti_calendar  kotti_twitter  kotti_contactform  kotti_analytics Kotti #PloneKonf 66
  • 67. Kottis Gegenwart  Sprint!  WYSIWYG Hochladen von Dateien und Bildern  kotti_blog  kotti_whatever Kotti #PloneKonf 67
  • 68. Ciao  github.com/Pylons/Kotti  kottidemo.danielnouri.org  #kotti auf Freenode  @dnouri  daniel.nouri@gmail.com Kotti #PloneKonf 68