From 0ee46e4b5e1bacad7c74ae7ce1b9999ba82b247d Mon Sep 17 00:00:00 2001 From: Cervinko Cera Date: Sun, 17 Apr 2016 18:03:47 +0200 Subject: [PATCH] custom columns unfinished --- cps/db.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ cps/helper.py | 6 ++++++ cps/web.py | 1 + 3 files changed, 64 insertions(+) diff --git a/cps/db.py b/cps/db.py index b08592a1..bfceabe9 100755 --- a/cps/db.py +++ b/cps/db.py @@ -49,6 +49,17 @@ books_languages_link = Table('books_languages_link', Base.metadata, Column('lang_code', Integer, ForeignKey('languages.id'), primary_key=True) ) +#cc = conn.execute("SELECT id FROM custom_columns") +#cc_ids = [] +#books_custom_column_links = {} +#for row in cc: +# cc_link=Table('books_custom_column_' + str(row.id) + '_link', Base.metadata, +# Column('book', Integer, ForeignKey('books.id'), primary_key=True), +# Column('custom_column', Integer, ForeignKey('custom_column_' + str(row.id) + '.id'), primary_key=True) +# ) +# books_custom_column_links[row.id] = cc_link +# cc_ids.append(row.id) + class Comments(Base): __tablename__ = 'comments' @@ -170,6 +181,16 @@ class Books(Base): series = relationship('Series', secondary=books_series_link, backref='books') ratings = relationship('Ratings', secondary=books_ratings_link, backref='books') languages = relationship('Languages', secondary=books_languages_link, backref='books') + #custom_columns = {} + #for id in cc_ids: + # print id + # custom_columns[id] = relationship(cc_classes[id], secondary=books_custom_column_links[id], backref='books') + #custom_columns[1] = relationship(cc_classes[1], secondary=books_custom_column_links[1], backref='books') + #custom_columns[2] = relationship(cc_classes[2], secondary=books_custom_column_links[2], backref='books') + #custom_columns[3] = relationship(cc_classes[3], secondary=books_custom_column_links[3], backref='books') + + + def __init__(self, title, sort, author_sort, timestamp, pubdate, series_index, last_modified, path, has_cover, authors, tags): self.title = title @@ -184,8 +205,44 @@ class Books(Base): def __repr__(self): return u"".format(self.title, self.sort, self.author_sort, self.timestamp, self.pubdate, self.series_index, self.last_modified ,self.path, self.has_cover) + +class Custom_Columns(Base): + __tablename__ = 'custom_columns' + + id = Column(Integer,primary_key=True) + label = Column(String) + name = Column(String) + datatype = Column(String) + mark_for_delete = Column(Boolean) + editable = Column(Boolean) + display = Column(String) + is_multiple = Column(Boolean) + normalized = Column(Boolean) + +#class Custom_Column(object): +# def __init__(self, value): +# self.value = value + +#def get_cc_table(id): +# custom_column = Custom_Column +# table_name = 'custom_column_' + str(id) +# table_object = Table(table_name, Base.metadata, +# Column('id', Integer, primary_key=True, autoincrement=True), +# Column('value', String) +# ) +# clear_mappers() +# mapper(custom_column, table_object, properties={'books' + str(id): relationship(Books, secondary=books_custom_column_links[id] , backref='custom_column_' + str(id))}) +# return custom_column + +#cc_classes={} +#for id in cc_ids: +# cc_classes[id] = get_cc_table(id) +#print cc_classes + Base.metadata.create_all(engine) Session = sessionmaker() Session.configure(bind=engine) session = Session() + + diff --git a/cps/helper.py b/cps/helper.py index 7ac5532d..629c8109 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -199,3 +199,9 @@ def update_dir_stucture(book_id): os.renames(path, new_author_path) book.path = new_authordir + "/" + book.path.split("/")[1] db.session.commit() + +def get_custom_columns(id): + cc = db.session.query(db.Custom_Columns).all() + for c in cc: + print c.name + diff --git a/cps/web.py b/cps/web.py index b6863a2b..978b7f53 100755 --- a/cps/web.py +++ b/cps/web.py @@ -316,6 +316,7 @@ def discover(page): @app.route("/book/") def show_book(id): entries = db.session.query(db.Books).filter(db.Books.id == id).first() + helper.get_custom_columns(entries.id) book_in_shelfs = [] shelfs = ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == id).all() for entry in shelfs: