def test_get_for_linked_object_preload(note, dummy_user, count_queries, preload): note.create_revision(RenderMode.html, 'test', dummy_user) assert EventNote.get_for_linked_object(note.object, preload_event=preload) with count_queries() as cnt: EventNote.get_for_linked_object(note.object) assert (cnt() == 0) == preload
def _getParams(self): super(NoteExportHook, self)._getParams() event = self._obj = Event.get(self._pathParams['event_id'], is_deleted=False) if event is None: raise HTTPAPIError('No such event', 404) session_id = self._pathParams.get('session_id') if session_id: self._obj = Session.query.with_parent(event).filter_by( id=session_id).first() if self._obj is None: raise HTTPAPIError("No such session", 404) contribution_id = self._pathParams.get('contribution_id') if contribution_id: contribution = self._obj = ( Contribution.query.with_parent(event).filter_by( id=contribution_id, is_deleted=False).first()) if contribution is None: raise HTTPAPIError("No such contribution", 404) subcontribution_id = self._pathParams.get('subcontribution_id') if subcontribution_id: self._obj = SubContribution.query.with_parent( contribution).filter_by(id=subcontribution_id, is_deleted=False).first() if self._obj is None: raise HTTPAPIError("No such subcontribution", 404) self._note = EventNote.get_for_linked_object(self._obj, preload_event=False) if self._note is None or self._note.is_deleted: raise HTTPAPIError("No such note", 404)
def test_get_or_create(db, dummy_user, dummy_event, create_event): note = EventNote.get_or_create(dummy_event) assert note is not None assert not inspect(note).persistent # new object note.create_revision(RenderMode.html, 'test', dummy_user) note.is_deleted = True db.session.flush() # get deleted one assert EventNote.get_or_create(dummy_event) == note assert inspect(note).persistent note.is_deleted = False db.session.flush() # same if it's not deleted assert EventNote.get_or_create(dummy_event) == note assert inspect(note).persistent # other event should create a new one other = EventNote.get_or_create(create_event(123)) other.create_revision(RenderMode.html, 'test', dummy_user) assert other != note assert not inspect(other).persistent
def _process(self): note = EventNote.get_for_linked_object(self.object, preload_event=False) if note is not None: note.delete(session.user) signals.event.notes.note_deleted.send(note) logger.info('Note %s deleted by %s', note, session.user) self.event.log(EventLogRealm.participants, EventLogKind.negative, 'Minutes', 'Removed minutes', session.user, data=note.link_event_log_data) return redirect(self.event.url)
def _process_form(self, form, **kwargs): saved = False if form.validate_on_submit(): note = EventNote.get_or_create(self.object) is_new = note.id is None or note.is_deleted # TODO: get render mode from form data once it can be selected note.create_revision(RenderMode.html, form.source.data, session.user) is_changed = attrs_changed(note, 'current_revision') db.session.add(note) db.session.flush() if is_new: signals.event.notes.note_added.send(note) logger.info('Note %s created by %s', note, session.user) self.event.log(EventLogRealm.participants, EventLogKind.positive, 'Minutes', 'Added minutes', session.user, data=note.link_event_log_data) elif is_changed: signals.event.notes.note_modified.send(note) logger.info('Note %s modified by %s', note, session.user) self.event.log(EventLogRealm.participants, EventLogKind.change, 'Minutes', 'Updated minutes', session.user, data=note.link_event_log_data) saved = is_new or is_changed return jsonify_template('events/notes/edit_note.html', form=form, object_type=self.object_type, object=self.object, saved=saved, **kwargs)
def has_note(self): return EventNote.get_for_linked_object( self, preload_event=self.PRELOAD_EVENT_NOTES) is not None
def _clone_note(self, old_note, new_object): revision = old_note.current_revision new_object.note = EventNote() new_object.note.create_revision(render_mode=revision.render_mode, source=revision.source, user=revision.user)
def test_get_for_linked_object_deleted(note, dummy_user): note.create_revision(RenderMode.html, 'test', dummy_user) note.is_deleted = True assert EventNote.get_for_linked_object(note.object) is None
def test_get_for_linked_object(note, dummy_user, create_event): note.create_revision(RenderMode.html, 'test', dummy_user) assert EventNote.get_for_linked_object(note.object) == note assert EventNote.get_for_linked_object(create_event(123)) is None
def note(db, dummy_event): note = EventNote(object=dummy_event) db.session.expunge( note ) # keep it out of the SA session (linking it to the event adds it) return note
def _make_form(self, source=None): note = None if not source: note = EventNote.get_for_linked_object(self.object, preload_event=False) return NoteForm(obj=self._get_defaults(note=note, source=source))
def _process(self): note = EventNote.get_for_linked_object(self.object, preload_event=False) if not note: raise NotFound return sanitize_html(note.html)