Beispiel #1
0
 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
Beispiel #2
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
Beispiel #3
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