[1509 total ]
Jon Stahl: Introducing HCN.org

We launched our biggest Plone-powered website ever last night: High Country News. We’re still recovering from the final push, but we’ll offer a detailed technical writeup soon.

In the meantime, check out how elegant and powerful a ... [More] Plone-powered newspaper website can be. Send design-related love notes to HCN’s technical director Ryan Foster. [Less]

Alex Clark: zc.buildout recipe tip: hexagonit.recipe.download FTW! (For the win)

If you are zc.buildout happy like I am, occasionally you will come across an archive that does not place nice with the plone.recipe.productdistros recipe (which is often used to install "old style" add-on products). The hexagonit.recipe.download recipe can help.

Tres Seaver: Avoiding Temptation: Notes on using 'unittest' effectively

Notes on getting the most mileage out of tests written with the Python unittest module

Christian Scholz: TOPFtäglich #29, 24.7.2008: Ein Plone-Workshop auf der FrOSCon

COM.lounge is proud to sponsor a Plone Workshop at the FrOSCon conference near Bonn on 23./24.8.2008. It will be two days, held by Jean-Paul Ladage of Zest Software and will cost you only EUR 30,- plus EUR 5,- FrOSCon entrance. The workshop language ... [More] will be english. If you want to know more about it and sign up for it, go to this page: Registration
.

In dieser Folge geht es um den von meiner Firma COM.lounge unterstützten Plone Workshop auf der FrOSCon der in Sankt Augustin bei Bonn am 23./24.8.2008 stattfinden wird. Der Workshop wird beide Tage stattfinden und unten im Video erfahrt ihr mehr über die Inhalte. Die Teilnahmegebühr beläuft ich auf EUR 30,- plus EUR 5,- für den Eintritt zur FrOSCon. Auf dieser Seite gibt es weitere Informationen und hier ist die Registrierung.

(Link zum Video)Technorati Tags: topftäglich, plone, workshop, dzug, zest, comlounge, froscon [Less]

Plone.org: Plone Tune-Up Rally - Help Make Plone Even Better!

The first of a new series of developer events aimed at advancing Plone.

Martin Aspeli: Changes to the Plone portlets infrastructure

A list of things we may want to do to simplify the portlets infrastructure and make it more useful.

Lukasz Lakomy: Buildiing TextIndexNG2 binaries for Python 2.4 on Windows

Instruction how to compile binary libraries used by TextIndexNG2 on Windows with Python 2.4 to use in Zope 2.9 or later. Or you can just download them here.

Lennart Regebro: Introspector mini-sprint report.

This monday and tuesday Plone GSoC student Martin Lundwall and Zope GSoC student Uli Fouquet together with yours truly and Martijn Faassen worked on their respective GSoC projects at a mini-sprint here in Paris, located at Pilot Systems. Day 1 ... [More] consisted most of discussing what to do next and how to refactor zope.introspector, which is the module that is common for both projects. During day 2 we did much of the refactoring, and the result was that towards the end of the day we started to see some primitive GUI parts to access the introspector code in zope.introspector.

Basically, the idea is that with zope.introspector you call IInfos(object).infos() to get hold of a sequence of IInfo objects, that contain information on the object. What infos you get depends on what the object is, so you will get an ModuleInfo for a Module and a ObjectInfo for an Object, for example. You’ll also get ViewInfo objects if you object has views, and you will get RegistrationInfo objects if your object is registered in the component registry. A second module, zope.introspectorui will hold views for all the information objects in zope.introspector (possibly these modules will be merged, we haven’t made up our mind yet). It will be easy to extend this with new information modules, they are just adapters.

zope.introspector and zope.introspectorui both run under Zope2, Zope3 and Grok, and grokui.introspector will contain the Grok views to browser and search for objects. On the Zope2 side, plone.introspector will do the same (despite the name it’s so far a pure Zope2 project and doesn’t need Plone at all, but we couldn’t come up with a better name, as zope.instropector is already taken).

The sprint was not only a success for introspection, we now have a good path forward for the UI of the introspectors, it’s also a success for Grok and grokcore.view, as zope.introspectorui defines view with grokcore.view, and this works just fine under Zope2!

The path forward now is to finish the infrastructure and views. Then what’s needed is more information adapters, and writing them is easy, so others can do that!

Thanks to Martin, Martijn and Uli for a couple of fun and productive days. Thanks to Pilot Systems for the conference room and the yummy coffee!

[Less]

Sidnei da Silva: Traveling with Pets

I’m planning to attend the Plone Conference 2008, in Washington DC, later this year.

I have already visited the US in June, when I attended the Plone Symposium in New Orleans. On that occasion, I stayed in the US for ~30 days. This time ... [More] around I was planning to bring my wife and dog (the cute Yorkie pictured at the top of this blog).

One thing that worries me though is that I’ve never took my pet on any flights, so I have no idea how pet-friendly airlines are. Just to get from Sao Paulo to the US (Houston) it’s a ~9:30h flight. My dog is usually cool with traveling. Earlier this year I drove nearly 8h to the beach and we stopped twice on the way, but she did not pee until we arrived at the destination.

So I’m putting this out there, looking for any feedback from people that took their pets on flights.

[Less]

Javier Mansilla: Spanish Translation

Last week wasn't the most productive on the SoC, but I produced some new stuff.
Anyway, I'm doing 2-3 night hrs sessions this week days for recovering lost time.

What new things I have to report:
Started Spanish translation. Not ... [More] finished because the code and templates are still changing, but most of the work was in the setup things for allowing translations, than in the translation it self. I can use any other language translation help: Portuguese, French, Italian, Dutch, etc, etc, etc. Contact me in case you can.batch search form simplification again, taking off the ugly template based previous one, creating a plone.z3cform one.Tested the product to see how it behaves with non default Content Types. I played with Martin Aspeli optilude.cinemacontent contents. Working fine so far.In case you are checking out new stuff, you will have to wait until next post, because I did not check in last work yet.

Here, how it looks like in spanish, and as you can see there are several details that need to be translated yet (like Content type' names) [Less]

Zope Porting GSOC: GETTING ACCELERATED...

Hi everybody..

Happy to be back soon. We are happy to see ourselves making progress in different ways.

We managed to get the failure, in the module Products, fixed which needed only a slight change in the file C-API file ... [More] _Acquisition.c . Of course we got help from the Zope-dev mailing list. We have already made the Checkin for this fixing.

Bristow and Deepak have managed to fix the deprecation warnings regarding 'with' and 'as' by replacing the respective variables with another name. The changes are still to be checked in as both of them are waiting to get their commit access to the Zope svn. The replies from the mailing lists of Zope-devPython-dev towards their doubts were pretty much helpful.

Vijin and Vyshakh are still working on removing all other deprecated warnings. Hope to see them make it very soon.

The security auditing of zope in python2.5/2.6 is also at the starting phase. We have put mails in mailing lists of Zope-dev , PyPy (Which we have decided not to give so much importance after some discussions with Sidnei) and in Python-dev. We hope to start with the AST implementation of the restricted python very soon.

Not so much for now. And hope to see you soon with more updates on the progress... and [Less]

Zope Porting GSOC: THE ROUTE GET DIVIDES ...

The mid-term evaluation is over by now. And we are happy to be here again. Sidnei has helped us by pointing out the next works to be accomplished. As the time-line for the project is still known to be the first or second week of August, we have ... [More] decided to divide the work among ourselves.

The works -
Testing and fixing Zope on Python 2.6 - will be handled by Bristow and Deepak..
Fixing all the deprecation warnings - will be handled by Vijin and Vyshakh..
Doing a security audit on new types introduced in Python 2.5/2.6- will be handled by Ranjith..

Sidnei has already pointed out another work - Trying to run other applications, for example, Plone on top of
Zope/Python 2.5 to see if anything breaks- which we will be looking afterwards.

We are also going through the failure and error left in the modules Products and Zope2..
Thats all upto now.. [Less]

Philipp von Weitershausen: First post from iPhone

Yep, I’ve got an iPhone. While I was in the US, I was offered for a fair price a used 1st gen model from somebody who bought the 3G. Since I did not obtain the phone as part of a contract or under any other restrictions, I happily installed a ... [More] modified bootloader which activated the device and removed the SIM lock (all thanks to PwnageTool 2.0). So now I can enjoy this brilliant machine with my economical pre-paid plan (Simyo). German T-Mobile’s iPhone plans just don’t work for me (which is why I hadn’t bothered to buy one yet).

After playing around with it, here are some observations:

- how do I create bullet lists in this WordPress client?

- sometimes apps aren’t as snappy as you’d think they would be. For instance, it takes quite a long time for the Addressbook to finish loading.

- the UI is quite refined, as you’d expect from apple. Not only that, you can really tell that the engineers thought it all the way through: the little keyboard and its auto-correction, for instance, let me achieve good typing speed. Certainly nothing you’d imagine on a device as small as this. I also love how navigation works so intuitively, e.g how long alphabetical lists have a teeny A-Z index on the side. Tap your finger on a letter and the list jumps to that letter. You’d think the letters are too small for that to work reliably. But it just works.

- I haven’t gotten GPRS to work yet. So for now I have to rely on WiFi for Internet connectivity. Phone works well though.

- the battery life doesn’t seem to be all that great.

- I feel uncomfortable storing various passwords (which for instance the mail client requires) on a mobile device that’s easily lost.

- shazam rocks

[Less]

Gilles Lenfant: Plone needs a webmaster role

Yes, we have the best open-source professional CMS of the galaxy - and beyond - out here. With the age and of course the help of the framework developers and lots of others, Plone gained lots of functionnalities. A huge set of options to tweak a ... [More] Plone site such it is your Plone site are now available through the Plone content panel.

As Plone professional, I have to train site managers for customers. And most of the new site managers I have to train are not IT professional. Most are marketing or communication executives. And when most of them have good functional skills and know what they want to do with their Plone site and how to provide information and services to visitors, it is somehow dificult to teach them about HTML/CSS filtering, Javascript adds, SMTP connection, Plone extension (un, re)installation, ZMI access and other potentially harmful control panels.

As a consequence, I sometimes need to hide potentially harmful control panels to such non technical managers on these sites.

I’m sure lots of you, dear Plone service providers who read these lines, are often facing such situations. That’s why I think that there’s a place for a new OTB role in Plone. I’ll call it “webmaster” at the moment.

Such user could do most things a Manager is enabled to do through the Plone except accessing those harmful control panels.

To make short, a webmaster would have all Manager permissions granted except “View management screens”. Of course, from there it’s fairly easy to hide the links to ZMI, Extensions management and others from the control panels, but it does not solve lots of other things that requires some tweaks in the control panels.

Any though ?

[Less]

Kenneth Miller: Status Update

 All,

Here’s a quick status update as to where I am on the project.

Goal - A simple structure for representing a buildout in a DOM. This will be the standard interface method between the front and back ends.The front end should ... [More] be able to make changes to a DOM and post them back through a RESTful interface. I’d like to use lxml for most of this.

A function to generate a buildout from the representative DOM and vice verse. Should be rather easy to do. 

Status - The basic DOM has been hashed out and the functions for generating the buildout DOM are nearly complete.

Goal - Extend the current grokproject to use the built in RESTful capabilities of GROK.

Status - Not yet in progress.

Goal - Simple OpenLaszlo interface. (Of course the biggest part of the project is described by the shortest sentences.)

 In the past few days I’ve become very familiar with OpenLaszlo and also learned javascript. I’ve had very little javascript experience in the past, but OpenLaszlo did not prove to have much of a learning curve. I will have a working demo very shortly.

 Expect updates almost daily from this point on.

 Regards,

Ken

 

  [Less]

ONE/Northwest: Beautiful online magazine site: BayNature.org

A quick shout-out to fellow Plonista David Siedband, whose recently-launched project BayNature.org is a beautiful, innovative example of what a Plone-powered an online magazine can be.

Not only does BayNature.org have all of the “normal” ... [More] features you’d expect from an online magazine, including articles, videos, an online store, an events calendar, etc., but David’s also built an innovative map-based view of all of the site content — entirely appropriate for a magazine whose content is all very place-based!

This is a great example of what’s possible when an organization with great content connects with the right combination of design, information architecture , website development and GIS talent. Nice work, David & BayNature team! [Less]

Donna Snow: Please sponsor my trip to Plone conference this year

Thank you to those who have already stepped forward to sponsor me for Plone Conference this year. Sponsorship will guarantee that I’ll be able to participate in both the Documentation and the Theming sprints in Washington this year. The sprints ... [More] (and seeing everyone I met in Seattle in 2006) is the driving force behind my request.

http://www.fundable.com/groupactions/groupaction.2008-07-17.5184386802

If you have any special requests (trade funding for help with a document, or help with a theme you are working on, please email me at donna@csquaredtech.com)

[Less]

WebLion: FreakyWiki: a simple wiki banged out in Grok

A restructured text wiki written in about a day by two guys who never used Grok (or even pure Zope 3) before

Plone.org: Dutch Plone User Day

On September 17th a Dutch Plone User Day will be organised in Amsterdam.

Alex Clark: UNIX Tips for the Elderly

(or from the elderly, depending on how you look at it)

Chris McDonough: New Web Framework: repoze.bfg

Another web framework never hurt anybody.

Mustapha Benali: Agile Project Management: Lessons Learned at Google

Jeff Sutherland the Co-Creator of the Scrum Agile Development Process is talking about Google's first Scrum implementation. If you have some free time (1h 8min) this video is good to watch: http://www.infoq.com/presentations/Agile-Management-Google-Jeff-Sutherland

Jon Stahl: Controlling a Squeezebox from an iPhone/iPod Touch

Molly got an iPod Touch last week, and so the first thing I tried to make it do was serve as a sexy touchscreen remote control for my Squeezebox digital music player.

A quick search immediately led me to iPeng, an iPhone/iPod Touch skin for ... [More] the Squeezebox web interface. (Continuing a fine open-source tradition of powerful products with goofy names, I might add.) Eureka, I thought, I’m home free. It’s simple, elegant, has had five releases, and most of the folks in the Squeezbox community seem to be quite impressed.

Unfortuntely, I’m finding it to be unusably slow. All of the pages except for the homepage timeout. Now, I know that the iPhone/iPod Safari will only wait about five seconds for a server to respond, but surely my Squeezebox can manage that. Apparently not.

I’m not sure whether the problem is:

My large-ish music library (~25,000 tracks)My slow-ish server CPU (Celeron 2.4 GHz)??

The iPeng skins seems to work pretty well when I hit it with laptop web browser.

I’m bummed. Any ideas? [Less]

Philipp von Weitershausen: Version numbers on trunk and maintenance branches

The release process that I wrote for the Zope subversion repository states that the a library’s version number on the trunk or a release branch should always be the next release version number applicable to that branch. For instance, if ... [More] zope.interface 3.4.1 were just released from the 3.4.x branch, the version number of zope.interface on that branch should read 3.4.2dev.

Let me explain why I suggested this practice and, despite much critique, think it’s makes the most sense.

First of all, the setuptools documentation states:

Note: the project version number you specify in setup.py should always be the next version of your software, not the last released version.

So first of all, it’s a convention that seems to be generally suggested. That doesn’t necessarily mean it’s a good idea, though.

What makes it a good idea is the fact that when you get a checkout of the trunk or a development branch, the version number is actually meaningful, because due to setuptools’ version semantics

3.4.1 < 3.4.2dev < 3.4.2

So, a development egg of zope.interface 3.4.2dev will for instance satisfy a version requirement like “zope.interface > 3.4.1“. For example, say you wanted to temporarily deploy from a subversion checkout. I had to do this to get my PyFlakes running with Emacs. The latest release PyFlakes 0.2.1 wasn’t good enough because something got fixed on the trunk. So I got a trunk checkout and did a

python setup.py install

into a virtualenv. Surely enough, the trunk’s version number was still pointing to 0.2.1. So I ended up with pyflakes-0.2.1-py2.4.egg in my site-packages and no way to tell it from the actual 0.2.1 release. (Yes, I know there’s some setuptools parameter than can let you build versions like 0.2.1-r48292, and those would be fine, if they were configured to occur on the trunk automatically.) So that’s why not only bumping the version number to the next release but also adding the “dev” marker to tell development eggs or snapshots apart from actual release (and prevent people from releasing from the trunk!) is a good idea.

To conclude, I think bumping the version number to the next or at least the next anticipated release (it’s ok if you don’t get the version number right the first time) and adding a dev marker is not only a good idea, I think it’s pretty much the only way to get the version number semantics of development eggs right (unless you use r34234 suffixes which have other problems). Of course, I’m willing to be convinced otherwise if alternate solutions achieve the same semantics. Comment away!

[Less]

Christian Scholz: Using subversion 1.5 with setuptools in Python (technical)

Usually I am using buildout for doing all my Python development work which is great as it gives you a flexible sandbox for developing.
One problem might strike you though if you upgrade your subversion installation to 1.5 as I just did. When ... [More] running buildout again a la

bin/buildout

you might encounter an error like this:

NameError: global name 'log' is not defined

and buildout to stop. As far as I digged into it and read on mailinglists this has to do with a different format of the .svn/entries of Subversion 1.5 (setuptools uses this to check version numbers afaik).

This bug seems to be fixed in the setuptools trunk in subversion but no release is made yet. So in order to get this fixed what I did was the following (there is probably a better way to do this but I was too lazy to dig into this further as this only is supposed to be a temporary workaround anyway):

Check out the setuptools trunk: svn co http://svn.python.org/projects/sandbox/trunk/setuptools in some working directory
Build an egg out of it: python setup.py bdist_egg You can find it in dist/ then
Copy this egg into the eggs/ directory of your buildout (or in the egg directory you have configured in ~/.buildout/default.cfg
Open bin/buildout with your editor and change the path to the egg used to the one you just copied (should have some name like setuptools-0.7a1dev_r0-py2.4.egg.

Now your buildout should run again (but might give some warnings about those .svn/entries files.

(This was done on Mac OSX, should be similar on Linux, might be slightly different on Windows due to the setup of bin\buildout.exe)

And now that it works with subversion 1.5, I am eager to try out it’s new features such as merge tracking.

PS: Maybe there is a way to specify the setuptools egg directly via some configuration. If so, I would like to learn about it

Technorati Tags: python, technical, setuptools, buildout, subversion, svn [Less]

Kamon Ayeva: A variation on my previous z3c.form example

Another example of form logic, adding to the one discussed in my previous post.

Here is the idea: If you need a more flexible solution for your use case, you can inherit directly from z3c.form.form.Form.
Let’s say you want the form to ... [More] be used for both adding contact information (making sure later that this only works when the user is authenticated) and sending a mail message to the site administrator. A site feedback form that will at the same time be used to populate your database of contacts.

Your form class could be defined as follows (I’m skipping the imports part):

# my.example/my/example/browser.py

class ContactForm(z3c.form.form.Form):
""" Contact Form """
fields = z3c.form.field.Fields(interfaces.IContactData)
message_field = z3c.form.field.Fields(schema.TextLine(__name__ = 'message',
title=u"Message",
required=False)
)
fields = message_field

ignoreContext = True

@z3c.form.button.buttonAndHandler(u'Send', name='send')
def handle_send(self, action):
data, errors = self.extractData()
if errors:
self.status = z3c.form.form.EditForm.formErrorsMessage
return

# Add the contact data, if not in yet
id = data['firstname'] data['lastname']
id = zope.component.queryUtility(IIDNormalizer).normalize(id)

if id not in self.context.objectIds():
self._name = id
contact = MyContact(self._name, **data)
self.context[self._name] = contact

# Do something else, e.g. send the message to the site admin.
# Complete the code as needed...
message = data['message']
print "Message from %s %s (%s):\n%s" % (data['firstname'], data['lastname'], data['email'], data['message'])

# Redirect
self.request.RESPONSE.redirect(self.context.absolute_url())

The main points of the used pattern:

You define the fields for the form ; new fields can be added to the already defined list (based on the IContactData schema in interfaces.py) using the “ ” operator.
You define your specific form button(s) and handler method(s). In the case of a standard AddForm, there is already a handle_add() defined for the “add” button for you.
Also, you need to set the form attribute ‘ignoreContext’ to True, so that the form has the same behaviour as an AddForm, i.e. it does not have to get/set data on attributes on the context. Note that by default, an AddForm has this attribute set to True, and an EditForm has it set to False.

Now, the final touch with the wrapping view…

class ContactFormView(base.FormWrapper):

form = ContactForm
label= "Contact Form"

… and its configuration:

<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:five="http://namespaces.zope.org/five"
i18n_domain="my.example" >

<browser:page
for="Products.CMFPlone.Portal.PloneSite"
name="contact_form"
class=".browser.ContactFormView"
permission="zope2.View"
/>

</configure>

[Less]

Alex Clark: Placeful Theming

We should do this out of the box!

Alex Clark: I love the 'slrn' news reader.

Reading the plone mailing lists is a full time job. The 'slrn' news reader can help.

Liz Dahlstrom: A New Project for the Plone Collective

I had a bit of trouble adding a new project in the Plone collective, so thought it might be helpful to put down the way to do it, with thanks to Derek Richardson for the help.
First you need write access to the collective.
Create your new project (don’t forget to change newProjectName to your actual project [...]

Blue Dynamics: Build Python in Buildout

Systems Python is sometimes polluted with different packages from somewhere. This happens and deleting packages conflicting with the specific Buildout is not the clean solution.

Having a clean Python helps a lot. It can be shared between ... [More] buildouts. Python is easy to build anyway, but using Buildout for this task its again easier and more predictable and reduces the affinity for mistakes. Here is my buildout.cfg for this task.

[buildout]
python = python
parts =
python
pythonbin

[python]
recipe = zc.recipe.cmmi
url = http://www.python.org/ftp/python/2.4.5/Python-2.4.5.tgz
executable = ${buildout:directory}/parts/python/bin/python2.4
extra_options=
--enable-unicode=ucs4
--with-threads
--with-readline

[pythonbin]
recipe = plone.recipe.command
command = ln -s ${python:excecutable} ${buildout:bin-directory}/python

If youre on OSX you want to add MACOSX_DEPLOYMENT_TARGET=10.5 to extra_options. The python is binary-compatible (pickles, ZODB) with Debian/Ubuntus (and most others) binary - it uses the same unicode flavor.

I think its also a good idea to use this style of python-build for the new plone.org deployment setup. [UPDATE: While testing this for new.plone.org I changed pythonbin to just symlink the binary] [Less]