Mercurial > hg > Feedworm
view Mapping.py @ 35:aaec263f07ca
Feeds manage the point in time when the next update should happen. FeedUpdater only updates feeds that are due.
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Wed, 05 May 2010 03:07:59 +0200 |
parents | 5813e3c10f14 |
children | 12ed8b5fa08c |
line wrap: on
line source
from Feed import Feed from FeedEntry import FeedEntry from sqlalchemy import Column from sqlalchemy import DateTime from sqlalchemy import ForeignKey from sqlalchemy import Integer from sqlalchemy import MetaData from sqlalchemy import String from sqlalchemy import Table from sqlalchemy import Text from sqlalchemy.orm import mapper from sqlalchemy.orm import relation mappingDefined = False def createMapping(engine): """ Make sure the mapping is defined only once. This is not really needed for the feed updater or the GUI app but comes in handy when working interactively with the system. """ global mappingDefined if not mappingDefined: _createMapping(engine) mappingDefined = True def _createMapping(engine): metadata = MetaData(engine) feedTable = Table("feed", metadata, Column("pk", Integer, primary_key=True), Column("title", String(255), nullable=False), Column("rss_url", String(255), nullable=False), Column("update_interval", Integer, nullable=False), Column("next_update", DateTime, nullable=False) ) feedEntryTable = Table("feed_entry", metadata, Column("pk", Integer, primary_key=True), Column("create_timestamp", DateTime, nullable=False), Column("read", Integer, nullable=False), Column("id", String(255), nullable=False), Column("link", String(255), nullable=False), Column("title", Text, nullable=False), Column("summary", Text, nullable=False), Column("updated", DateTime), Column("feed_id", Integer, ForeignKey("feed.pk")) ) metadata.create_all() mapper(FeedEntry, feedEntryTable) mapper(Feed, feedTable, properties = { "entries" : relation(FeedEntry, backref="feed") } )