Etna erupts!

We are proud to officially announce ViUR Version 2.2 "Etna", as the latest stable release of our powerful Python framework for the Google App Engine infrastructure. In contrast to our previous versions, ViUR 2.2 takes the code name "Etna", following the names of volcanoes all around the globe. We think, [Mount Etna]( is a well-known, active and very erruptive volcano and titular mascot for our framework named after the middlehigh-german word, "viur", for fire. The key aspects on this release where improvements on the existing concepts, so it contains lots of bugfixes. Some nice usability tweaks had been done to the admin interface **vi** to make life easier and getting more things done in less time. Feel free to checkout the [server's CHANGELOG]( as well as the [updated documentation]( Download ViUR 2.2 now from our [download section](, and check out the documentation below for further information.

Start presentation

Whats new?

  • selectBone
  • keyBone
  • RateLimit module
  • Improvements in the Vi
  • Miscelleanous


The selectBone unions the previously known bones selectOneBone() and selectMultiBone() into one single bone providing a multiple-feature. The new feature is backward compatible, so existing bones behave exactly the way as before.

Old style:

single = selectOneBone(descr="Select", values={"1": "A", "2": "B", "3": "C"})
multiple = selectMultiBone(descr="Select", values={"1": "A", "2": "B", "3": "C"})

New style:

single = selectBone(descr="Select", values={"1": "A", "2": "B", "3": "C"})
multiple = selectBone(descr="Select", multiple=True, values={"1": "A", "2": "B", "3": "C"})


The keyBone is used to store an entity key. The advantage is, that the system can detect bones that contain keys and automatically rewrite or examine them.

Old style:

parentrepo = baseBone(descr="Parentrepo", indexed=True, readOnly=True, visible=False)

New style:

parentrepo = keyBone(descr="Parentrepo", indexed=True)

Note that keyBones are readOnly=True and visible=False by default. Change this in case the keyBone will be set from outside.


Provides a class that is used to restrict access to certain functions to maxRate calls per minute.

To use it, create an instance of this object in your modules __init__() function. Then call isQuotaAvailable() before executing the action to check if there is quota available and after executing the action call decrementQuota().

Vi: Reload-button in EditWidget

There is a Reload-button now in all Edit masks, which allows to fetch the latest version of the dataset currently shown.


Vi: Image viewer

The new image popup shows images and allows for direct download.


Vi: Other improvements

  • Support of the new selectBone feature
  • Bones configured as visible=False are rendered hidden now, instead of leaving them out
  • Improved network communication module ( with manual request kickoff and generic error handling
  • ViUR logics v2.2 integrated