[editcontroller] extract RQLQuery.set_attribute/set_inlined methods from handle_field/handle_inlined_relation
--- a/web/views/editcontroller.py Mon Jul 22 11:38:48 2013 +0200
+++ b/web/views/editcontroller.py Mon Jul 22 12:07:46 2013 +0200
@@ -101,6 +101,15 @@
self.kwargs[var] = eid
return rql
+ def set_attribute(self, attr, value):
+ self.kwargs[attr] = value
+ self.edited.append('X %s %%(%s)s' % (attr, attr))
+
+ def set_inlined(self, relation, value):
+ self.kwargs[relation] = value
+ self.edited.append('X %s %s' % (relation, relation.upper()))
+ self.restrictions.append('%s eid %%(%s)s' % (relation.upper(), relation))
+
class EditController(basecontrollers.ViewController):
__regid__ = 'edit'
@@ -238,8 +247,7 @@
continue
rschema = self._cw.vreg.schema.rschema(field.name)
if rschema.final:
- rqlquery.kwargs[field.name] = value
- rqlquery.edited.append('X %s %%(%s)s' % (rschema, rschema))
+ rqlquery.set_attribute(field.name, value)
else:
if form.edited_entity.has_eid():
origvalues = set(entity.eid for entity in form.edited_entity.related(field.name, field.role, entities=True))
@@ -261,10 +269,7 @@
"""handle edition for the (rschema, x) relation of the given entity
"""
if values:
- attr = field.name
- rqlquery.kwargs[attr] = iter(values).next()
- rqlquery.edited.append('X %s %s' % (attr, attr.upper()))
- rqlquery.restrictions.append('%s eid %%(%s)s' % (attr.upper(), attr))
+ rqlquery.set_inlined(field.name, iter(values).next())
elif form.edited_entity.has_eid():
self.handle_relation(form, field, values, origvalues)