def add(self, pub_date=None): news = NewsItem() news.id = db.next_id('news', 'news_id') if pub_date==None: news.pub_date = now_string() else: news.pub_date = pub_date self[news.id] = news sql = 'INSERT INTO news(news_id, pub_date) VALUES (' + str(news.id) + ', ' + wsq(news.pub_date) + ')' db.runsql(sql) db.commit() return news
def save(self, object): object.key = self.table.get_key( object) # New objects need their key calculated. if object.changed == 0 and object.in_database == 0: return if object.in_database == 0: field_list = [] value_list = [] for key in self.table.field_list: field = self.table.fields[key] if field.data_type == 'created': # The database is responsible for setting the timestamp. continue if field.data_type == 'sequence': # When inserting, always increment the value. new_id = db.next_id(self.name, field.field_name) setattr(object, field.attribute, new_id) value = field.attr_to_field(getattr(object, field.attribute)) field_list.append(field.field_name) value_list.append(value) sql = 'INSERT INTO %s (%s) VALUES (%s)' % ( self.table.name, string.join( field_list, ', '), string.join(value_list, ', ')) else: update_list = [] where_list = [] for key in self.table.field_list: field = self.table.fields[key] if field.data_type == 'created': continue if field.data_type == 'updated': value = wsq(now_string()) else: value = field.attr_to_field( getattr(object, field.attribute)) update_list.append(field.field_name + '=' + value) if field.key_field == 1: where_list.append(field.field_name + '=' + value) sql = 'UPDATE %s SET %s WHERE %s' % ( self.table.name, string.join( update_list, ', '), string.join(where_list, ' AND ')) # print sql db.runsql(sql) db.commit() self.cache.add(object) object.in_database = 1 object.changed = 0
def save(self, object): object.key = self.table.get_key(object) # New objects need their key calculated. if object.changed==0 and object.in_database==0: return if object.in_database==0: field_list = [] value_list = [] for key in self.table.field_list: field = self.table.fields[key] if field.data_type=='created': # The database is responsible for setting the timestamp. continue if field.data_type=='sequence': # When inserting, always increment the value. new_id = db.next_id(self.name, field.field_name) setattr(object, field.attribute, new_id) value = field.attr_to_field(getattr(object, field.attribute)) field_list.append(field.field_name) value_list.append(value) sql = 'INSERT INTO %s (%s) VALUES (%s)' % (self.table.name, string.join(field_list, ', '), string.join(value_list, ', ')) else: update_list = [] where_list = [] for key in self.table.field_list: field = self.table.fields[key] if field.data_type=='created': continue if field.data_type=='updated': value = wsq(now_string()) else: value = field.attr_to_field(getattr(object, field.attribute)) update_list.append(field.field_name + '=' + value) if field.key_field==1: where_list.append(field.field_name + '=' + value) sql = 'UPDATE %s SET %s WHERE %s' % (self.table.name, string.join(update_list, ', '), string.join(where_list, ' AND ')) # print sql db.runsql(sql) db.commit() self.cache.add(object) object.in_database = 1 object.changed = 0