Post has attachment
We are proud to announce the official release of ViUR version 2.0.0 now!
The new ViUR version is a milestone that we wanted to reach till the end of 2016, to start with a powerful and clearly defined concept into the new year 2017. Download and install ViUR 2.0 from now, including a new and well-established documentation to start from. Happy new year!

Post has attachment

Hello World,

I'm already using the viurLogics feature in some of my projects and would like to integrate it into the main development branch of the current VI.

viurLogics is some kind of domain-specific expressional language that uses Python syntax, but is implemented in pure Python and runs on GAE, in a PyJS client environment or can be compiled into pure JavaScript. Therefore, viurLogics expressions can be used on both client- and server-side to define rules for interactive dependency checks, calculations or other things.

A first step might be to integrate it into VI and do some interactive field control over the values of other fields. This does already work so far, and is used in some projects.

Any objection?
Commenting is disabled for this post.

Post has attachment
During refactoring we found a bug inside the server that may cause files to be deleted from the blobstore despite being still referenced in a multiple=True fileBone. Please update your server to the latest version or backport commit . You’ll need to rebuild the searchindex for each kind that utilizes a multiple=True fileBone afterwards.

Hello world! 

Maybe you will come over this problem also when using the newest development server of ViUR. There had been some changes to the Jinja2-fuinction getEntry(), which now performs for correct access-right checking. Anyway, this may raise up some problems when using Jinja2 for rendering e.g. emails in deferred tasks.

I had the problem, that my email was sent, but contained empty values. All these values came from calls of getEntry(). I found out why, and the reason is, that getEntry() checks for a listFilter() function, which  checks for a logged in user by default. This is never the case when the request is running deferred - there is no user logged in.

So in this case, one has to create a special listFilter() function for the module that is requested with getEntry(), specifying:

from server import request

def listFilter(self, filter):
    if "X-AppEngine-TaskName" in request.current.get().request.headers:
        return filter

return super(MyModule, self).listFilter(filter)

anways, I dropped a pull request for a new function in request, called isDeferred, making this call much simpler like

def listFilter(self, filter):
    if request.isDeferred():
        return filter

    return super(MyModule, self).listFilter(filter)

And all runs fine!

PSA: As discussed last week, the merge-window of new features for the next release will close on Friday, 04.03.2016. If you have any patches left, please send an initial pull-request.

Post has attachment
Hi folks!

We just now created a new repository for holding a uniform html5 library. The html5 library previously was part of the Vi admin tool, but is also used in other custom-projects. To provide an integrative code base for this library and the projects which use it, the repository html5 was now detached from the Vi repo and is continued independently.

For more informatio, take a look at!

Is it possible to attach certain div containers and classes to different ViUR outputs, e.g.: textBones always within <div class="vi-text"></div>. Perhaps as a jinja plugin?

From a styling point of view this would be very useful. Especially the output of the textBone is hard to predict (is a div container around it? a p tag? etc.). Thus you often make wrong assumptions and have to style over and over again.

Hello folks, I'm having a question about an extension to selectOneBone and selectMultiBone. Both bones allow for a parameter "sortBy", which allows to define if the values in the bone should be ordered by key or by value.  But sometimes, there is the case that the order should be entirely different, more logical, like here:

state = selectOneBone(
                  descr=u"Status", defaultValue="new",
                        values={"new": "Neu", "wip": "In Arbeit", "done": "Beendet", "complete": "Abgeschlossen"}, sortBy=["new", "wip", "done", "complete"])

And here it comes: What about also allowing to define a sort-order as list assigned to sortBy, to let the admin tools render them in the logical order we want to have it?

Question: How do we handle the .macro file type in the future? In every project this is differently. »macro« files in »macros« folder, »macro« files in »html« folder, »macro« files in »elements« folder, no macro files at all, »utilities« folder etc. etc.
Wait while more posts are being loaded