Ejemplo n.º 1
0
Archivo: map.py Proyecto: wojas/pomni
    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"]
Ejemplo n.º 2
0
 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"]
Ejemplo n.º 3
0
    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"]
Ejemplo n.º 4
0
 def fact_view_from_log_entry(self, log_entry):
     # Get fact view object to be deleted now.
     if log_entry["type"] == EventTypes.DELETED_FACT_VIEW:
         return self.get_fact_view(log_entry["o_id"], id_is_internal=False)
     # Create an empty shell of fact view object that will be deleted later
     # during this sync.
     if "name" not in log_entry:
         return FactView("irrelevant", log_entry["o_id"])
     # Create fact view object.
     fact_view = FactView(log_entry["name"], log_entry["o_id"])
     fact_view.q_fields = eval(log_entry["q_fields"])
     fact_view.a_fields = eval(log_entry["a_fields"])        
     fact_view.a_on_top_of_q = bool(eval(log_entry["a_on_top_of_q"]))
     fact_view.type_answer = bool(eval(log_entry["type_answer"]))
     if "extra" in log_entry:
         fact_view.extra_data = eval(log_entry["extra"])
     return fact_view
Ejemplo n.º 5
0
    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"]
Ejemplo n.º 6
0
    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)