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
-
# selectBone
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:
```pyton
single = selectOneBone(descr="Select", values={"1": "A", "2": "B", "3": "C"})
multiple = selectMultiBone(descr="Select", values={"1": "A", "2": "B", "3": "C"})
```
New style:
```pyton
single = selectBone(descr="Select", values={"1": "A", "2": "B", "3": "C"})
multiple = selectBone(descr="Select", multiple=True, values={"1": "A", "2": "B", "3": "C"})
```
-
# keyBone
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:
```pyton
parentrepo = baseBone(descr="Parentrepo", indexed=True, readOnly=True, visible=False)
```
New style:
```pyton
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.
-
# RateLimit
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.
![screenshot](https://lh3.googleusercontent.com/Z5mj_tV3qCBAo_EeahqUIThO7TNHJ6lvzkkTtpaOnzlMahEk1FwlLaqQmCb15KK5F1mAwyFO5IRAZD45QNs4HQ=s700)
-
# Vi: Image viewer
The new image popup shows images and allows for direct download.
![screenshot](https://lh3.googleusercontent.com/FDNyuelbY3KDJeHGKgl-dn97cvMNYuVXGLBFSApzpwtCd3VKxPRcBJPHYGAhJJc79wAOPObRp-K6lSwXmkVP=s900)
-
# 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 (network.py) with manual request kickoff and generic error handling
- ViUR logics v2.2 integrated
-
# Miscelleanous
- server, vi, html5 and logics share the same version numbering scheme now (v2.2)
- New ViUR releases are now code-named after volcanoes
- More useful information in the wikis on GitHub
- [https://github.com/viur-framework/server/wiki](https://github.com/viur-framework/server/wiki)
- [https://github.com/viur-framework/vi/wiki](https://github.com/viur-framework/vi/wiki)