La version 5 de Planète Casio. Regroupe le forum, les programmes, les tutoriel, les sprites et tous les autres outils développés par nos soins.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
PCv5/app/models/program.py

54 lines
1.6 KiB

from app import db
from app.models.post import Post
class Program(Post):
__tablename__ = 'program'
__mapper_args__ = {'polymorphic_identity': __tablename__}
# ID of underlying Post object
id = db.Column(db.Integer, db.ForeignKey('post.id'), primary_key=True)
# Program name
name = db.Column(db.Unicode(128))
# TODO: Category (games/utilities/lessons)
# TODO: Compatible calculator models
# TODO: Number of views, statistics, etc
# Thread with the program description (top comment) and comments
thread_id = db.Column(db.Integer,db.ForeignKey('thread.id'),nullable=False)
thread = db.relationship('Thread', foreign_keys=thread_id,
back_populates='owner_program')
# Progrank, and last date of progrank update
progrank = db.Column(db.Integer)
progrank_date = db.Column(db.DateTime)
# Implicit attributes:
# * tags (inherited from Post)
# * attachements (available at thread.top_comment.attachments)
def __init__(self, author, name, thread):
"""
Create a Program.
Arguments:
author -- post author (User, though only Members can post)
name -- program name (unicode string)
thread -- discussion thread attached to the topic
"""
Post.__init__(self, author)
self.name = name
self.thread = thread
@staticmethod
def from_topic(topic):
p = Program(topic.author, topic.title, topic.thread)
topic.promotion = p
def delete(self):
db.session.delete(self)
def __repr__(self):
return f'<Program: #{self.id} "{self.name}">'