Weblog

published Nov 03, 2021, last modified Nov 04, 2021

Naslagwerken in Plone: publiceren zonder zorgen

published Sep 21, 2011, last modified Sep 22, 2011

Nederlandse Plone gebruikersdag 2011

Jan Murre van Pareto presenteert over naslagwerken in Plone op de Nederlandse Plone gebruikersdag 2011 in De Balie.

Plone is zeer configureerbaar, heeft talloze add-ons en is extreem pluggable. Case study: KNMP. KNMP standaardiseert haar content management op Plone. Het Informatorium Medicamentorum is een boek met duizenden grote pagina's medische informatie. Dat beheren we nu in Plone. Van daar uit gaat het naar de drukker voor het boek. En de export wordt geïndexeerd in SOLR en getoond met een Django applicatie op een mobiele site.

Het oude proces bestond uit papier, plastic bakjes, gekleurde pennen, een AS-400 applicatie en 'sneakernet': mensen die heen en weer lopen met die informatie. Uiteindelijk kwam daar elk jaar een boek uit.

Nu gebruiken ze hiervoor dus Plone als content management systeem. Daarin hebben we custom contenttypes gebouwd, gebruiken rollen, permissies, workflow, check-out/check-in (je wijzigt bijvoorbeeld de homepage en laat anderen de wijziging controleren terwijl de oorspronkelijke versie nog zichtbaar is), een WYSIWYG-editor en full-text search.

Voor de custom contenttypes gebruiken we nog gewoon het Archetypes systeem waar de standaard contenttypes van Plone gebruik van maken. Dexterity zal dat in de toekomst veranderen, maar in 2006 werd al gezegd "Archetypes is fantastic but it must die", maar het bestaat nog steeds en was voor deze website nog de beste keuze.

Voor workflows gebruiken we uiteraard het oude werkpaard DC Workflow. Er verandert weinig aan, het is zeer stabiel en het werkt gewoon altijd. We hebben wat minder vaak gebruikte onderdelen ingezet om te regelen dat je via een workflowtransitie een document aan een ander persoon kan toekennen om te controleren.

We hadden iets andere rollen nodig dan de standaard Plone rollen. Maar in dit geval was het voldoende om simpelweg wat andere vertalingen te maken in plaats van de originele Nederlandse vertalingen.

In een extern systeem zit medische data van de zogenaamde 'G-Standaard'. Dat wordt via een REST web service opgehaald. Dit is zichtbaar binnen Plone. Uiteindelijk wordt dit samen met alle andere informatie beschikbaar gesteld als xml export in een RelaxNG schema.

Voor het tijdperk na Plone 4: je zal waarschijnlijk dexterity gebruiken in plaats van Archetypes. DC Workflow werkt dan nog steeds zonder problemen. Voor Iterate (check-in/check-out) zijn extra pakketten nodig en die hebben nog ruwe kanten. Kijk ook eens naar uwosh.northstar om workflows te configureren.

Unit 4 Consist SalesForce: Plone Customer Portal

published Sep 21, 2011

Nederlandse Plone gebruikersdag 2011

Wieteke den Uijl van Proteon en Pierre Broekarts van Unit 4 Consist presenteren een case study op de Nederlandse Plone gebruikersdag 2011 in De Balie.

Pierre: ik ben relatiemanager bij Unit 4 Consist. We verzorgen salarisadministraties voor miljoenen mensen. Ik laat wat zien van een financiële portal.

We draaien financiële software op de AS400 (I-serie). We ontwikkelen en onderhouden deze software. Elk jaar verandert er wel weer iets in de regelgeving dat je moet verwerken. Het is afgestemd op de Nederlandse wetgeving. Ongeveer 500 grote en middelgrote bedrijven.

We hadden eerst informatie in allerlei verschillende systemen. Een klant kan bijvoorbeeld een e-mail sturen, maar ook bellen. Beide stukken informatie moeten wel op de juiste plek terechtkomen.

Unit 4 Consist gebruikt SalesForce als CRM systeem voor intern gebruik en voor marketing, sales, servicedesk, rapportages.

Er is veel handmatig werk, dus dat is foutgevoelig. De klant heeft geen inzicht in de status van afhandelingen. Dubbele vragen komen voor. Vragen komen niet altijd bij de juiste personen terecht.

We hadden dus wat wensen. Volledige CMS functionaliteit. Automatische invoer in SalesForce.

Nieuwe situatie in gebruik:

Hier gebruiken we dus Plone voor met daarin een koppeling met SalesForce. Hier was het bijvoorbeeld makkelijker om te regelen dat mensen software kunnen downloaden, in plaats van dat je een tape in de AS400 machine moet stoppen. En natuurlijk stellen we veel meer informatie beschikbaar. Onze klanten weten nu waar ze alles moeten zoeken, namelijk op dit ene systeem.

Implementatie binnen Plone is met de volgende pakketten gedaan:

Informatie binnen Plone wordt ieder kwartier ververst vanuit Salesforce.

Maarten Kling: De toekomst van Plone

published Sep 21, 2011

Nederlandse Plone gebruikersdag 2011.

Op de Nederlandse Plone gebruikersdag 2011 in De Balie praat Maarten Kling van Four Digits over "Plone Next", de toekomst van Plone. In welke versie dit precies gaat komen staat nog niet vast.

Plone 4.1 is de meest recente versie. Van Plone 4.2 is een tweede alpha versie beschikbaar met:

  • Betere weergave zoekresultaten.
  • Nieuwe collecties (verzamelingen) die op een eenvoudigere manier te beheren zijn.
  • "Unified content listing"; allerlei weergaven binnen Plone geven een lijst met content weer en dat gebeurt nu op een universele manier, die het makkelijker maakt voor ontwikkelaars.

Plannen voor Plone 4.3 zijn:

  • Een nieuw Event type.
  • Wordt standaard waarschijnlijk met Dexterity geleverd, een nieuw framework voor contenttypes.
  • Ondersteuning voor Python 2.7.
  • Auteurmanagement: Pietje gaat weg bij de organisatie en Jantje neemt zijn content en rechten over, of delen daarvan.
  • ARIA, toegankelijkheidsondersteuning in HTML.

En dan Plone Next, of dat nu Plone 5 gaat heten of iets anders.

Gebruikers willen een handigere interface. Je wil links of rechts of in het midden content kunnen aanpassen. Of je wil dit als webmaster kunnen maar niet dat andere gebruikers dat kunnen.

Onwikkelaars: het wordt sneller, Dexterity erbij, minder code en meer tests, theming wordt makkelijker.

Een belangrijk onderdeel hiervan is Deco. Als webmaster kan je veel stukjes van de pagina bewerken.

Een ander stuk is CMS UI (plone.app.cmsui). Dit toont een balk aan de bovenkant waar je knoppen hebt voor bijvoorbeeld het bewerken van de pagina, workflow, de 'Delen' tab, toevoegen van content, enzovoorts. Het deel van de pagina onder de balk wordt dan getoond zonder dat die knoppen in de content worden getoond. De pagina wordt dus zeg maar meer getoond zoals een niet-ingelogde gebruiker de website zou zien.

Het werkt nu al. Wij (Four Digits) gebruiken het al op onze site. Maar het moet nog beter, er missen nog wat zaken. Deze week is de Living Statues Sprint, waarin we met diverse ontwikkelaars hieraan gaan werken.

Suggestie zaal: laat de CMS UI balk 'floaten', zodat je niet naar boven hoeft te scrollen bij een lange pagina (misschien gebeurt dit al; ja, zo te zien wel).

Met de vormgeving moet je er wel rekening mee houden dat een stukje html (bijvoorbeeld een Twitter 'tile') overal op de pagina terecht kan komen; vertrouw er dus niet teveel op dat alles bijvoorbeeld binnen een id 'content' komt te staan.

Armin Ronacher: Keynote: State of webdev in Python

published May 20, 2011

Summary of keynote at the PyGrunn conference.

Armin Ronacher gives the keynote "State of webdev in Python", at the PyGrunn conference in Groningen, The Netherlands. Organized by Paylogic and Goldmund Wyldebeast & Wunderliebe.

I am founding member of the Pocoo Team, doing Jinja2, Crossroads, Werkzeug, etc. Python 3 is kind of the elephant in the room that no one is talking about. So Python in 2011 has the big Python 2 versus 3 debate. 'Unladen Swallow' is resting, Python 3.2 was released, the packaging infrastructure is being worked on, including distutils2.

PyPy has become really fast. PyPy is Python written in Python. PyPy trunk is on average 3.7 times faster than the standard CPython, see http://speed.pypy.com. There is only experimental support for the Python C API. Different garbage collection behavior, no reference counting. So a few things will break, depending on what you are using it for. Django, ctypes, pyglet, twisted, all work.

All language development is now happening on Python 3. It adds unicode to the whole stack. The language is cleaned up. It does break backwards compatibility. Most code does not run on both 2 and 3, but a few packages do (lxml, at least at some point). It introduces unicode in exceptions and source compilation as well as identifiers (although I urge you not to try that). Greatly improved I/O API for unicode. Some new language constructs. Implementation was cleaned up a lot.

New constructs: extended iterable unpacking (a, *b = some_iterable), keyword-only arguments, nonlocal, function parameter and return value annotations (use them e.g. for documentation purposes).

print is now a function. Improved syntax for catching and raising exceptions. Ellipsis (...) syntax element.

Some different behaviours. More powerful metaclasses. List comprehensions are closer to generators now. Lesson: don't rely on undocumented 'features'.

Classic classes are gone. Imports are absolute by default.

Python 2.6 and 2.7 make it possible to write code that you can run through the 2to3 program to turn it into Python 3 code. You can use abstract base classes to check for certain implementations (not: is this a dict, but: is this dict-like).

Do you want beauty of code? Use Python 3. Do you want raw speed? Use PyPy.

Numeric libraries work great on Python 3 and benefit from improvements in the language.

Predictions:

  • Most people will write their code against 2.7 with the intention of supporting PyPy.
  • Libraries that require the C API will become less common.
  • We will see libraries that support targeting both Python 2.7 and 3.x.

Now the second part of this talk: Python and the Web.

WSGI has a new specification for Python 3. Some work is done to port implementations to Python 3. It just works; not really an issue anymore.

New developments: Improvements to PyPy support for database adapters. Improvements in template compilation in e.g. Django to take advantage of PyPy's behaviour. Some libraries are being ported over to Python 3.

Python 3 can work. You can start porting libraries over. Issues will only be resolved if you actually try to port. Higher level code is usually easier to port; low level libraries are trickier. Porting is easier if you drop support for 2.6. For porting, see http://bit.ly/python3-now.

WSGI works well in practice on Python 3. Pylons and BFG are now Pyramid, which is a nice introduction into the Zope world. There is less and less framework specific code out there; it is easier to share code.

At the low level, Werkzeug and WebOb may merge at some point; they are much alike.

Frameworks are good. In new frameworks we can explore new paradigms and concepts. It is surprisingly easy to switch frameworks or parts of them. Frameworks themselves are even merging.

I think PyPy will gain more traction in the python web world. It may eventually become more popular than CPython. Supporting Python 3 in PyPy should be easier than Python 2.

Things like 0MQ (Zero MQ) may help to have parts of your code in Python 2 and part in Python 3.

Jobert Abma: The Ten Commandments of Security

published May 20, 2011

Summary of talk at the PyGrunn conference.

Jobert Abma, ethical hacker at Online24, talks about the ten commandments of security, at the PyGrunn conference in Groningen, The Netherlands. Organized by Paylogic and Goldmund Wyldebeast & Wunderliebe.

I will discuss ten things you need to think of to get a secure application.

1. Your application is not the only attack vector. There can be weak passwords in other parts of the stack or server. Social engineering can become an issue.

2. Conduct risk assessments to identify risks. Then you start controlling them. You can score a risk on Confidentiality, Integrity, Availability.

3. Only trust your own code. And double check. The platform you are developing on can have security problems.

4. 'Security by design' solves major issues. Application logic is an important part. Centralize validation.

5. Always be aware of technical issues, like CSRF, XSS.

6. Time (mis)management. You don't always get time from your manager to solve security issues, even when you are aware of it.

7. Keep track of design documents and documentation. Is the design secure? Does it still match the current functionality?

8. Process designing is one of the most important processes securing an application. If a checkout process in a web shop is not designed well so that 10,000 euros each day end up on someone else's bank account, that is a problem.

9 Security can clash with usability. 'This email is not in our database' is potentially interesting knowledge for an attacker.

10. Information is power. Encryption on the server side and on the transport layer. If your database gets hacked, does that give the attacker information he can use, like passwords and credit card numbers?

One more thing: handle input as being dangerous. It will save your ass more than once.

Summary: Security is not just a bunch of tricks. It is a process.