--- a/web/views/baseforms.py Wed Feb 18 19:19:57 2009 +0100
+++ b/web/views/baseforms.py Wed Feb 18 19:26:48 2009 +0100
@@ -639,7 +639,6 @@
__select__ = (match_kwargs('ptype', 'peid', 'rtype')
& specified_etype_implements('Any'))
-
EDITION_BODY = u'''\
<div id="div-%(parenteid)s-%(rtype)s-%(eid)s" class="inlinedform">
<div class="iformBody">
@@ -670,8 +669,6 @@
self.w(self.req._('no such entity type %s') % etype)
return
self.edit_form(entity, ptype, peid, rtype, role, **kwargs)
-
-
class InlineEntityEditionForm(InlineFormMixIn, EditionForm):
@@ -728,7 +725,6 @@
ctx['count'] = entity.row + 1
return ctx
-
class CopyEditionForm(EditionForm):
id = 'copy'
@@ -773,7 +769,6 @@
return self.req._('element copied')
-
class TableEditForm(FormMixIn, EntityView):
id = 'muledit'
title = _('multiple edit')
@@ -874,126 +869,10 @@
'widget': wobj.edit_render(entity)})
w(u'</tr>')
return '\n'.join(html)
-
-
-class UnrelatedDivs(EntityView):
- id = 'unrelateddivs'
- __select__ = match_form_params('relation')
-
- @property
- def limit(self):
- if self.req.form.get('__force_display'):
- return None
- return self.req.property_value('navigation.related-limit') + 1
-
- def cell_call(self, row, col):
- entity = self.entity(row, col)
- relname, target = self.req.form.get('relation').rsplit('_', 1)
- rschema = self.schema.rschema(relname)
- hidden = 'hidden' in self.req.form
- is_cell = 'is_cell' in self.req.form
- self.w(self.build_unrelated_select_div(entity, rschema, target,
- is_cell=is_cell, hidden=hidden))
-
- def build_unrelated_select_div(self, entity, rschema, target,
- is_cell=False, hidden=True):
- options = []
- divid = 'div%s_%s_%s' % (rschema.type, target, entity.eid)
- selectid = 'select%s_%s_%s' % (rschema.type, target, entity.eid)
- if rschema.symetric or target == 'subject':
- targettypes = rschema.objects(entity.e_schema)
- etypes = '/'.join(sorted(etype.display_name(self.req) for etype in targettypes))
- else:
- targettypes = rschema.subjects(entity.e_schema)
- etypes = '/'.join(sorted(etype.display_name(self.req) for etype in targettypes))
- etypes = cut(etypes, self.req.property_value('navigation.short-line-size'))
- options.append('<option>%s %s</option>' % (self.req._('select a'), etypes))
- options += self._get_select_options(entity, rschema, target)
- options += self._get_search_options(entity, rschema, target, targettypes)
- if 'Basket' in self.schema: # XXX
- options += self._get_basket_options(entity, rschema, target, targettypes)
- relname, target = self.req.form.get('relation').rsplit('_', 1)
- return u"""\
-<div class="%s" id="%s">
- <select id="%s" onchange="javascript: addPendingInsert(this.options[this.selectedIndex], %s, %s, '%s');">
- %s
- </select>
-</div>
-""" % (hidden and 'hidden' or '', divid, selectid, html_escape(dumps(entity.eid)),
- is_cell and 'true' or 'null', relname, '\n'.join(options))
-
- def _get_select_options(self, entity, rschema, target):
- """add options to search among all entities of each possible type"""
- options = []
- eid = entity.eid
- pending_inserts = self.req.get_pending_inserts(eid)
- rtype = rschema.type
- for eview, reid in entity.vocabulary(rschema, target, self.limit):
- if reid is None:
- options.append('<option class="separator">-- %s --</option>' % html_escape(eview))
- else:
- optionid = relation_id(eid, rtype, target, reid)
- if optionid not in pending_inserts:
- # prefix option's id with letters to make valid XHTML wise
- options.append('<option id="id%s" value="%s">%s</option>' %
- (optionid, reid, html_escape(eview)))
- return options
-
- def _get_search_options(self, entity, rschema, target, targettypes):
- """add options to search among all entities of each possible type"""
- options = []
- _ = self.req._
- for eschema in targettypes:
- mode = '%s:%s:%s:%s' % (target, entity.eid, rschema.type, eschema)
- url = self.build_url(entity.rest_path(), vid='search-associate',
- __mode=mode)
- options.append((eschema.display_name(self.req),
- '<option value="%s">%s %s</option>' % (
- html_escape(url), _('Search for'), eschema.display_name(self.req))))
- return [o for l, o in sorted(options)]
-
- def _get_basket_options(self, entity, rschema, target, targettypes):
- options = []
- rtype = rschema.type
- _ = self.req._
- for basketeid, basketname in self._get_basket_links(self.req.user.eid,
- target, targettypes):
- optionid = relation_id(entity.eid, rtype, target, basketeid)
- options.append('<option id="%s" value="%s">%s %s</option>' % (
- optionid, basketeid, _('link to each item in'), html_escape(basketname)))
- return options
-
- def _get_basket_links(self, ueid, target, targettypes):
- targettypes = set(targettypes)
- for basketeid, basketname, elements in self._get_basket_info(ueid):
- baskettypes = elements.column_types(0)
- # if every elements in the basket can be attached to the
- # edited entity
- if baskettypes & targettypes:
- yield basketeid, basketname
-
- def _get_basket_info(self, ueid):
- basketref = []
- basketrql = 'Any B,N WHERE B is Basket, B owned_by U, U eid %(x)s, B name N'
- basketresultset = self.req.execute(basketrql, {'x': ueid}, 'x')
- for result in basketresultset:
- basketitemsrql = 'Any X WHERE X in_basket B, B eid %(x)s'
- rset = self.req.execute(basketitemsrql, {'x': result[0]}, 'x')
- basketref.append((result[0], result[1], rset))
- return basketref
-class ComboboxView(EntityView):
- """the view used in combobox (unrelated entities)
+# XXX bw compat
- THIS IS A TEXT VIEW. DO NOT HTML_ESCAPE
- """
- id = 'combobox'
- title = None
-
- def cell_call(self, row, col):
- """the combo-box view for an entity: same as text out of context view
- by default
- """
- self.wview('textoutofcontext', self.rset, row=row, col=col)
-
+from logilab.common.deprecation import class_moved
+from cubicweb.web.views import editviews
+ComboboxView = class_moved(editviews.ComboboxView)