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
Esempio n. 2
0
 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
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 def has_note(self):
     return EventNote.get_for_linked_object(
         self, preload_event=self.PRELOAD_EVENT_NOTES) is not None
Esempio n. 7
0
 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
Esempio n. 11
0
 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))
Esempio n. 12
0
 def _process(self):
     note = EventNote.get_for_linked_object(self.object,
                                            preload_event=False)
     if not note:
         raise NotFound
     return sanitize_html(note.html)