[hooks/security] provide attribute "add" permission
As of today, the update permission on attributes is checked at entity
*creation* time. This forbids using update permissions the proper way.
We set it to be checked at entity update time only.
We introduce a specific 'add' permission rule for attributes.
For backward compatibility, its default value will be the same as the
current 'update' permission.
Notes:
* needs a new yams version (ticket #149216)
* introduces two new 'add_permissions' rdefs (attribute - group|rqlexpr)
* if the update permission was () and the bw compat kicks in, the rule
is not enforced, to avoid un-creatable entity types -- this
restriction will be lifted when the bw compat is gone
* small internal refactoring on check_entity_attributes
* one small pre 3.6.1 bw compat snippet must be removed from schemaserial
Closes #2965518.
# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr## This file is part of CubicWeb.## CubicWeb is free software: you can redistribute it and/or modify it under the# terms of the GNU Lesser General Public License as published by the Free# Software Foundation, either version 2.1 of the License, or (at your option)# any later version.## CubicWeb is distributed in the hope that it will be useful, but WITHOUT# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more# details.## You should have received a copy of the GNU Lesser General Public License along# with CubicWeb. If not, see <http://www.gnu.org/licenses/>."""dummy wsgi server for CubicWeb web instances"""__docformat__="restructuredtext en"fromcubicweb.wsgi.handlerimportCubicWebWSGIApplicationfromcubicwebimportConfigurationErrorfromwsgirefimportsimple_serverfromloggingimportgetLoggerLOGGER=getLogger('cubicweb')defrun(config):config.check_writeable_uid_directory(config.appdatahome)port=config['port']or8080interface=config['interface']app=CubicWebWSGIApplication(config)handler_cls=simple_server.WSGIRequestHandlerhttpd=simple_server.WSGIServer((interface,port),handler_cls)httpd.set_app(app)repo=app.appli.repotry:repo.start_looping_tasks()LOGGER.info('starting http server on %s',config['base-url'])httpd.serve_forever()finally:repo.shutdown()