def test_can_get_or_create(self): # Create cat1 = KeysCategory.get_or_create(self.db, 'SEO') expect(cat1.name).to_equal('SEO') # Get cat2 = KeysCategory.get_or_create(self.db, 'SEO') expect(cat1.id).to_equal(cat2.id)
def get_or_create(cls, db, key_name, category_name=None): key = cls.get_by_name(db, key_name) if key and key.category and key.category.name == category_name: return key if category_name is None: query_params = {'name': key_name} db.execute( 'INSERT INTO `keys` (name) ' \ 'VALUES (:name) ON DUPLICATE KEY ' \ 'UPDATE name = :name', query_params ) else: from holmes.models import KeysCategory category = KeysCategory.get_or_create(db, category_name) query_params = {'name': key_name, 'category_id': category.id} db.execute( 'INSERT INTO `keys` (name, category_id) ' \ 'VALUES (:name, :category_id) ON DUPLICATE KEY ' \ 'UPDATE name = :name, category_id = :category_id', query_params ) db.flush() return cls.get_by_name(db, key_name)
def get_or_create(cls, db, key_name, category_name=None): key = db.query(Key).filter(Key.name == key_name).scalar() if not key: if category_name is None: key = Key(name=key_name) else: from holmes.models import KeysCategory category = KeysCategory.get_or_create(db, category_name) key = Key(name=key_name, category=category) return key
def _insert_key_category(self, key, name): category = KeysCategory.get_or_create(self.application.db, name) self.application.db.add(category) self.application.db.flush() self.application.db.commit() return category