Mercurial > hg > Feedworm
view backend/sqlalchemy/Mapping.py @ 238:6a3e3a0a7efe
add a test profile
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Sat, 25 Apr 2015 04:09:04 +0200 |
parents | e34c53a3e407 |
children | 8e73a8ae863f |
line wrap: on
line source
# -*- coding: utf-8 -*- from Feed import Feed from FeedEntry import FeedEntry from Preference import Preference from sqlalchemy import Boolean 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 feedEntryTable = None 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) metadata.bind = engine feedTable = Table("feed", metadata, Column("pk", Integer, primary_key=True), Column("title", String(255), nullable=False), Column("rss_url", String(255), nullable=False), # update interval is specified in minutes Column("update_interval", Integer, nullable=False), Column("next_update", DateTime, nullable=False), # when displaying an entry of this feed, do not display the summary but rather load # the link directly Column("auto_load_entry_link", Boolean, nullable=False), # this is actually a hack: when opening some sites in the QWebView it just crashes. # This setting forces to open an entry's link in the external browser Column("always_open_in_browser", Boolean, nullable=False) ) global feedEntryTable 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(512), nullable=False), Column("link", String(512), nullable=False), Column("title", Text, nullable=False), Column("summary", Text, nullable=False), Column("updated", DateTime), Column("feed_id", Integer, ForeignKey("feed.pk")) ) preferencesTable = Table("preference", metadata, Column("pk", Integer, primary_key=True), Column("key", String(255), nullable=False), Column("value", String(255), nullable=False) ) metadata.create_all() mapper(FeedEntry, feedEntryTable) mapper(Feed, feedTable, properties = { "entries" : relation(FeedEntry, backref="feed", lazy=True, cascade="delete, delete-orphan") } ) mapper(Preference, preferencesTable)