Exemple #1
0
 def addNote(self, note) -> Optional[Note]:
     note.model()["did"] = self.deckChooser.selectedId()
     ret = note.dupeOrEmpty()
     problem = None
     if ret == 1:
         problem = _("The first field is empty.")
     problem = gui_hooks.add_cards_will_add_note(problem, note)
     if problem is not None:
         showWarning(problem, help="AddItems#AddError")
         return None
     if note.model()["type"] == MODEL_CLOZE:
         if not note.cloze_numbers_in_fields():
             if not askUser(
                 _(
                     "You have a cloze deletion note type "
                     "but have not made any cloze deletions. Proceed?"
                 )
             ):
                 return None
     self.mw.col.add_note(note, self.deckChooser.selectedId())
     self.mw.col.clearUndo()
     self.addHistory(note)
     self.previousNote = note
     self.mw.requireReset(reason=ResetReason.AddCardsAddNote, context=self)
     gui_hooks.add_cards_did_add_note(note)
     return note
Exemple #2
0
    def addNote(self, note) -> Optional[Note]:
        note.model()["did"] = self.deckChooser.selectedId()
        ret = note.dupeOrEmpty()
        problem = None
        if ret == 1:
            problem = _("The first field is empty.")
        problem = gui_hooks.add_cards_will_add_note(problem, note)
        if problem is not None:
            showWarning(problem, help="AddItems#AddError")
            return None
        if "{{cloze:" in note.model()["tmpls"][0]["qfmt"]:
            if not self.mw.col.models._availClozeOrds(
                    note.model(), note.joinedFields(), False):
                if not askUser(
                        _("You have a cloze deletion note type "
                          "but have not made any cloze deletions. Proceed?")):
                    return None
        cards = self.mw.col.addNote(note)
        if not cards:
            showWarning(
                _("""\
The input you have provided would make an empty \
question on all cards."""),
                help="AddItems",
            )
            return None
        self.mw.col.clearUndo()
        self.addHistory(note)
        self.mw.requireReset()
        self.previousNote = note
        gui_hooks.add_cards_did_add_note(note)
        return note
Exemple #3
0
    def _note_can_be_added(self, note: Note) -> bool:
        result = note.duplicate_or_empty()
        if result == DuplicateOrEmptyResult.EMPTY:
            problem = tr.adding_the_first_field_is_empty()
        else:
            # duplicate entries are allowed these days
            problem = None

        # filter problem through add-ons
        problem = gui_hooks.add_cards_will_add_note(problem, note)
        if problem is not None:
            showWarning(problem, help=HelpPage.ADDING_CARD_AND_NOTE)
            return False

        # missing cloze deletion?
        if note.model()["type"] == MODEL_CLOZE:
            if not note.cloze_numbers_in_fields():
                if not askUser(tr.adding_you_have_a_cloze_deletion_note()):
                    return False

        return True
Exemple #4
0
 def addNote(self, note) -> Optional[Note]:
     note.model()["did"] = self.deckChooser.selectedId()
     ret = note.dupeOrEmpty()
     problem = None
     if ret == 1:
         problem = tr(TR.ADDING_THE_FIRST_FIELD_IS_EMPTY)
     problem = gui_hooks.add_cards_will_add_note(problem, note)
     if problem is not None:
         showWarning(problem, help="AddItems#AddError")
         return None
     if note.model()["type"] == MODEL_CLOZE:
         if not note.cloze_numbers_in_fields():
             if not askUser(tr(TR.ADDING_YOU_HAVE_A_CLOZE_DELETION_NOTE)):
                 return None
     self.mw.col.add_note(note, self.deckChooser.selectedId())
     self.mw.col.clearUndo()
     self.addHistory(note)
     self.previousNote = note
     self.mw.requireReset(reason=ResetReason.AddCardsAddNote, context=self)
     gui_hooks.add_cards_did_add_note(note)
     return note
Exemple #5
0
    def _note_can_be_added(self, note: Note) -> bool:
        result = note.fields_check()
        # no problem, duplicate, and confirmed cloze cases
        problem = None
        if result == NoteFieldsCheckResult.EMPTY:
            problem = tr.adding_the_first_field_is_empty()
        elif result == NoteFieldsCheckResult.MISSING_CLOZE:
            if not askUser(tr.adding_you_have_a_cloze_deletion_note()):
                return False
        elif result == NoteFieldsCheckResult.NOTETYPE_NOT_CLOZE:
            problem = tr.adding_cloze_outside_cloze_notetype()
        elif result == NoteFieldsCheckResult.FIELD_NOT_CLOZE:
            problem = tr.adding_cloze_outside_cloze_field()

        # filter problem through add-ons
        problem = gui_hooks.add_cards_will_add_note(problem, note)
        if problem is not None:
            showWarning(problem, help=HelpPage.ADDING_CARD_AND_NOTE)
            return False

        return True
def accept_empty_first_field(problem, note):
    if problem == _("The first field is empty."):
        # recursive call, so that all hooks are run again, removing this problem.
        return gui_hooks.add_cards_will_add_note(None, note)
    else:
        return problem