# HG changeset patch # User Florent # Date 1248986161 -7200 # Node ID 2833df28916545cfda1270dde2933c1b1bf10866 # Parent 6e9453fd11ef98890568ecfdc3a3e2f9053f889e# Parent b717ebef04d8ee0a979f7ce69881651688e72667 merge diff -r 6e9453fd11ef -r 2833df289165 misc/migration/bootstrapmigration_repository.py --- a/misc/migration/bootstrapmigration_repository.py Thu Jul 30 22:33:46 2009 +0200 +++ b/misc/migration/bootstrapmigration_repository.py Thu Jul 30 22:36:01 2009 +0200 @@ -29,6 +29,7 @@ isession.commit() repo.hm.register_hook(uniquecstrcheck_before_modification, 'before_add_entity', '') repo.hm.register_hook(uniquecstrcheck_before_modification, 'before_update_entity', '') + session.set_shared_data('do-not-insert-cwuri', False) if applcubicwebversion < (3, 2, 2) and cubicwebversion >= (3, 2, 1): from base64 import b64encode diff -r 6e9453fd11ef -r 2833df289165 sobjects/notification.py --- a/sobjects/notification.py Thu Jul 30 22:33:46 2009 +0200 +++ b/sobjects/notification.py Thu Jul 30 22:36:01 2009 +0200 @@ -62,7 +62,7 @@ class RenderAndSendNotificationView(PreCommitOperation): """delay rendering of notification view until precommit""" def precommit_event(self): - if self.view.rset[0][0] in self.session.transaction_data.get('pendingeids', ()): + if self.view.rset and self.view.rset[0][0] in self.session.transaction_data.get('pendingeids', ()): return # entity added and deleted in the same transaction self.view.render_and_send(**getattr(self, 'viewargs', {})) @@ -133,6 +133,8 @@ * set a content attribute to define the content of the email (unless you override call) """ + # XXX refactor this class to work with len(rset) > 1 + msgid_timestamp = True def recipients(self): @@ -141,7 +143,7 @@ return finder.recipients() def subject(self): - entity = self.entity(0, 0) + entity = self.entity(self.row or 0, self.col or 0) subject = self.req._(self.message) etype = entity.dc_type() eid = entity.eid @@ -154,7 +156,7 @@ return self.req.actual_session().user.login def context(self, **kwargs): - entity = self.entity(0, 0) + entity = self.entity(self.row or 0, self.col or 0) for key, val in kwargs.iteritems(): if val and isinstance(val, unicode) and val.strip(): kwargs[key] = self.req._(val) @@ -184,15 +186,19 @@ DeprecationWarning, stacklevel=1) lang = self.vreg.property_value('ui.language') recipients = zip(recipients, repeat(lang)) - entity = self.entity(0, 0) - # if the view is using timestamp in message ids, no way to reference - # previous email - if not self.msgid_timestamp: - refs = [self.construct_message_id(eid) - for eid in entity.notification_references(self)] + if self.rset is not None: + entity = self.entity(self.row or 0, self.col or 0) + # if the view is using timestamp in message ids, no way to reference + # previous email + if not self.msgid_timestamp: + refs = [self.construct_message_id(eid) + for eid in entity.notification_references(self)] + else: + refs = () + msgid = self.construct_message_id(entity.eid) else: refs = () - msgid = self.construct_message_id(entity.eid) + msgid = None userdata = self.req.user_data() origlang = self.req.lang for emailaddr, lang in recipients: @@ -278,7 +284,7 @@ """ def context(self, **kwargs): - entity = self.entity(0, 0) + entity = self.entity(self.row or 0, self.col or 0) content = entity.printable_value(self.content_attr, format='text/plain') if content: contentformat = getattr(entity, self.content_attr + '_format', 'text/rest') @@ -286,7 +292,7 @@ return super(ContentAddedView, self).context(content=content, **kwargs) def subject(self): - entity = self.entity(0, 0) + entity = self.entity(self.row or 0, self.col or 0) return u'%s #%s (%s)' % (self.req.__('New %s' % entity.e_schema), entity.eid, self.user_login()) diff -r 6e9453fd11ef -r 2833df289165 web/formfields.py --- a/web/formfields.py Thu Jul 30 22:33:46 2009 +0200 +++ b/web/formfields.py Thu Jul 30 22:36:01 2009 +0200 @@ -480,7 +480,7 @@ def subfields(self, form): return self.fields - + def actual_fields(self, form): return [self] + list(self.fields) diff -r 6e9453fd11ef -r 2833df289165 web/views/editforms.py --- a/web/views/editforms.py Thu Jul 30 22:33:46 2009 +0200 +++ b/web/views/editforms.py Thu Jul 30 22:36:01 2009 +0200 @@ -43,7 +43,31 @@ js, nodeid, label) -class DeleteConfForm(FormViewMixIn, EntityView): +class DeleteConfForm(forms.CompositeForm): + id = 'deleteconf' + __select__ = non_final_entity() + + domid = 'deleteconf' + copy_nav_params = True + form_buttons = [Button(stdmsgs.YES, cwaction='delete'), + Button(stdmsgs.NO, cwaction='cancel')] + @property + def action(self): + return self.build_url('edit') + + def __init__(self, *args, **kwargs): + super(DeleteConfForm, self).__init__(*args, **kwargs) + done = set() + for entity in self.rset.entities(): + if entity.eid in done: + continue + done.add(entity.eid) + subform = self.vreg.select('forms', 'base', self.req, entity=entity, + mainform=False) + self.form_add_subform(subform) + + +class DeleteConfFormView(FormViewMixIn, EntityView): """form used to confirm deletion of some entities""" id = 'deleteconf' title = _('delete') @@ -59,20 +83,10 @@ % _('this action is not reversible!')) # XXX above message should have style of a warning w(u'

%s

\n' % _('Do you want to delete the following element(s) ?')) - form = self.vreg.select('forms', 'composite', req, domid='deleteconf', - copy_nav_params=True, - action=self.build_url('edit'), onsubmit=onsubmit, - form_buttons=[Button(stdmsgs.YES, cwaction='delete'), - Button(stdmsgs.NO, cwaction='cancel')]) - done = set() + form = self.vreg.select('forms', self.id, req, rset=self.rset, + onsubmit=onsubmit) w(u'