rqlrewrite: remove element in rewritten when we remove them from the select (closes #2236985)
update _cleanup_inserted to avoid leaving rewritten variable behind when
removing a snipset.
insert_varmap_snippets was impacted too for unclear reason
---
Before
A KeyError was raised when:
* multiple snipset is to be inserted on a statement
* some *supported* snipset adds ambiguity (increase the number of solution)
* some *unsupported* snipset adds new variable
* The new variable require rewritting
::
File "/home/pyves/src/fcw/cubicweb/rqlrewrite.py", line 185, in rewrite
newsolutions = self.remove_ambiguities(snippets, newsolutions)
File "/home/pyves/src/fcw/cubicweb/rqlrewrite.py", line 436, in
remove_ambiguities
variantes = self.build_variantes(newsolutions)
File "/home/pyves/src/fcw/cubicweb/devtools/repotest.py", line 340, in
_build_variantes
variantes = _orig_build_variantes(self, newsolutions)
File "/home/pyves/src/fcw/cubicweb/rqlrewrite.py", line 470, in
build_variantes
variante.append( (key, sol[newvar]) )
KeyError: u'D'
This happen because the mechanism removing unsupported snipset does not remove
entry in ``self.rewritten`` when it removes entry from
``self.select.defined_vars``.
Iteration on ``self.rewritten`` then crash because values of ``rewritten`` are
expected to
be found in solution.
#! /bin/sh -e
case "$1" in
configure|abort-upgrade|abort-remove|abort-deconfigure)
update-rc.d cubicweb defaults 99 >/dev/null
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
if [ "$1" = configure ]; then
# XXX bw compat: erudi -> cubicweb migration
if [ -e "/etc/erudi.d/" ]; then
mv /etc/erudi.d/* /etc/cubicweb.d/ && (
echo 'moved /etc/erudi.d/* to /etc/cubicweb.d/'
sed -i s/ginco/cubicweb/g /etc/*/*.py
sed -i s/erudi/cubicweb/ */*.conf
) || true # empty dir
fi
if [ -e "/var/log/erudi/" ]; then
mv /var/log/erudi/* /var/log/cubicweb/ && (
echo 'moved /var/log/erudi/* to /var/log/cubicweb/'
) || true # empty dir
fi
if [ -e "/var/lib/erudi/backup" ]; then
mv /var/lib/erudi/backup/* /var/lib/cubicweb/backup/ && (
echo 'moved /var/lib/erudi/backup/* to /var/lib/cubicweb/backup/'
) || true # empty dir
fi
if [ -e "/var/lib/erudi/instances" ]; then
mv /var/lib/erudi/instances/* /var/lib/cubicweb/instances/ && (
echo 'moved /var/lib/erudi/instances/* to /var/lib/cubicweb/instances/'
) || true # empty dir
fi
fi
#DEBHELPER#
exit 0