示例#1
0
文件: SQLite.py 项目: bartosh/pomni
 def get_card_type(self, id, id_is_internal):
     # Since there are so few of them, we don't use internal _ids.
     # ids should be unique too.
     if id in self.component_manager.card_type_by_id:
         return self.component_manager.card_type_by_id[id]
     parent_id, child_id = "", id
     if "::" in id:
         parent_id, child_id = id.rsplit("::", 1)
         parent = self.get_card_type(parent_id, id_is_internal=-1)
     else:
         parent = CardType(self.component_manager)
     sql_res = self.con.execute("select * from card_types where id=?",
                                (id, )).fetchone()
     card_type = type(mangle(id), (parent.__class__, ),
         {"name": sql_res["name"], "id": id})(self.component_manager)
     for attr in ("fields", "unique_fields", "required_fields",
                  "keyboard_shortcuts"):
         setattr(card_type, attr, eval(sql_res[attr]))
     self._get_extra_data(sql_res, card_type)
     card_type.fact_views = []
     for cursor in self.con.execute("""select _fact_view_id from
         fact_views_for_card_type where card_type_id=?""", (id, )):
         card_type.fact_views.append(self.get_fact_view(\
             cursor["_fact_view_id"], id_is_internal=True))
     return card_type
示例#2
0
 def clone_card_type(self, card_type, clone_name):
     from mnemosyne.libmnemosyne.utils import mangle
     
     clone_id = card_type.id + "::" + clone_name
     if clone_id in [card_t.id for card_t in self.card_types()]:
         self.main_widget.error_box(_("Card type name already exists."))
         return None
     card_type_class = type(mangle(clone_name), (card_type.__class__, ),
         {"name": clone_name, "id": clone_id})
     cloned_card_type = card_type_class(self.component_manager)
     self.database().add_card_type(cloned_card_type)
     self.component_manager.register(cloned_card_type)
     self.database().save()
     return cloned_card_type
 def clone_card_type(self, card_type, clone_name):
     from mnemosyne.libmnemosyne.utils import mangle
     clone_id = card_type.id + "::" + clone_name
     if clone_id in [card_t.id for card_t in self.card_types()]:
         self.main_widget().show_error(_("Card type name already exists."))
         return None
     card_type_class = type(mangle(clone_name), (card_type.__class__, ),
         {"name": clone_name, "id": clone_id})
     cloned_card_type = card_type_class(self.component_manager)
     cloned_card_type.fact_views = []
     for fact_view in card_type.fact_views:
         cloned_fact_view = copy.copy(fact_view)
         cloned_fact_view.id = clone_id + "." + fact_view.id.rsplit(".", 1)[1]
         cloned_card_type.fact_views.append(cloned_fact_view)
         self.database().add_fact_view(cloned_fact_view)
     self.database().add_card_type(cloned_card_type)
     self.config().clone_card_type_properties(card_type, cloned_card_type)
     self.database().save()
     return cloned_card_type