def __init__(self): CardType.__init__(self) self.id = "4" self.name = _("Map") self.description = _("A card type for learning locations on a map") # List and name the keys. self.fields.append(("loc", _("Location"))) self.fields.append(("blank", _("Blank map"))) self.fields.append(("marked", _("Marked map"))) # Recognition. v = FactView(1, _("Recognition")) v.q_fields = ["marked"] v.a_fields = ["loc"] v.required_fields = ["marked", "loc"] self.fact_views.append(v) # Production. v = FactView(2, _("Production")) v.q_fields = ["loc","blank"] v.a_fields = ["marked"] v.required_fields = ["loc", "blank", "marked"] v.a_on_top_of_q = True self.fact_views.append(v) # The following field needs to be unique. self.unique_fields = ["loc"]
def __init__(self, language_name=""): CardType.__init__(self) if not language_name: self.id = "2" self.name = _("Front-to-back and back-to-front") self.is_language = False else: self.id = "2_" + language_name self.name = language_name self.is_language = True # List and name the keys. self.fields.append(("q", _("Question"))) self.fields.append(("a", _("Answer"))) # Front-to-back. v = FactView(1, _("Front-to-back")) v.q_fields = ["q"] v.a_fields = ["a"] v.required_fields = ["q"] self.fact_views.append(v) # Back-to-front. v = FactView(2, _("Back-to-front")) v.q_fields = ["a"] v.a_fields = ["q"] v.required_fields = ["a"] self.fact_views.append(v) # The question field needs to be unique. As for duplicates is the answer # field, these are better handled through a synonym detection plugin. self.unique_fields = ["q"]
def __init__(self, language_name=""): CardType.__init__(self) if not language_name: self.id = "3" self.name = _("Foreign word with pronunciation") self.is_language = False else: self.id = "3_" + language_name self.name = language_name self.is_language = True # List and name the keys. self.fields.append(("f", _("Foreign word"))) self.fields.append(("p", _("Pronunciation"))) self.fields.append(("t", _("Translation"))) # Recognition. v = FactView(1, _("Recognition")) v.q_fields = ["f"] v.a_fields = ["p", "t"] v.required_fields = ["f"] self.fact_views.append(v) # Production. v = FactView(2, _("Production")) v.q_fields = ["t"] v.a_fields = ["f", "p"] v.required_fields = ["t"] self.fact_views.append(v) # The foreign word field needs to be unique. As for duplicates is the # answer field, these are better handled through a synonym detection # plugin. self.unique_fields = ["f"]
def __init__(self): CardType.__init__(self) self.id = "1" self.name = _("Front-to-back only") # List and name the keys. self.fields.append(("q", _("Question"))) self.fields.append(("a", _("Answer"))) # Front-to-back. v = FactView(1, _("Front-to-back")) v.q_fields = ["q"] v.a_fields = ["a"] v.required_fields = ["q"] self.fact_views.append(v) # The following field needs to be unique. self.unique_fields = ["q"]
def get_view(self, view_id): """Get view object by id.""" res = self.conn.execute("select name from views where id=?", (view_id, )).fetchone() fact_view = FactView(view_id, res["name"]) # Find fact view in registered card_types and copy # *fields attributes from it for card_type in card_types(): for view in card_type.fact_views: if view.name == res["name"]: fact_view.q_fields = view.q_fields fact_view.a_fields = view.a_fields fact_view.required_fields = view.required_fields return fact_view raise RuntimeError("Wrong view(id=%d) found in the database" % view_id)