class Submission(db.Model): SubmissionID = db.Column(db.Integer, primary_key=True) ProjectID = db.Column(db.Integer, db.ForeignKey('project.ProjectID')) StudentID = db.Column(db.Integer, db.ForeignKey('student.StudentID')) feedback = db.Column(db.String(2000)) description = db.Column(db.String(2000)) date = db.Column(db.Date) item = db.Column(db.String(255)) def __call__(arg1, arg2, arg3): print "call submission" #print str(arg1) + " | " + str(arg2) + " | " + str(arg3) def __init__(self, SubmissionID, ProjectID, StudentID, feedback, description, date, item): self.SubmissionID = SubmissionID self.ProjectID = ProjectID self.StudentID = StudentID self.feedback = feedback self.description = description self.date = date self.item = item def __repr__(self): #return '<user %r>' % (self.login + '-' + str(self.UserID)) return json.dumps({ 'SubmissionID': self.SubmissionID, 'ProjectID': self.ProjectID, 'StudentID': self.StudentID, 'feedback': self.feedback, 'description': self.description, 'date': str(self.date), 'item': str(self.item) })
class AchievementRecord(db.Model): __tablename__ = 'achievement_record' StudentID = db.Column(db.Integer, db.ForeignKey('student.StudentID'), primary_key=True) AchievementID = db.Column(db.Integer, db.ForeignKey('achievement.AchievementID'), primary_key=True) status = db.Column(db.String(45)) def __call__(arg1, arg2, arg3): print "call Achievement_Record" #print str(arg1) + " | " + str(arg2) + " | " + str(arg3) def __init__(self, StudentID, AchievementID, status): self.StudentID = StudentID self.AchievementID = AchievementID self.status = status def __repr__(self): #return '<user %r>' % (self.login + '-' + str(self.UserID)) return json.dumps({ 'StudentID': self.StudentID, 'AchievementID': self.AchievementID, 'status': self.status, })
class Enrolment(db.Model): StudentID = db.Column(db.Integer, db.ForeignKey('student.StudentID'), primary_key=True) CourseID = db.Column(db.Integer, db.ForeignKey('course.CourseID'), primary_key=True) status = db.Column(db.String(80)) def __call__(arg1, arg2, arg3): print "call enrolment" #print str(arg1) + " | " + str(arg2) + " | " + str(arg3) def __init__(self, StudentID, CourseID, status): self.StudentID = StudentID self.CourseID = CourseID self.status = status def __repr__(self): #return '<user %r>' % (self.login + '-' + str(self.UserID)) return json.dumps({ 'StudentID': self.StudentID, 'CourseID': self.CourseID, 'status': self.status })
class Application(db.Model): StudentID = db.Column(db.Integer, db.ForeignKey('student.StudentID'), primary_key=True) ProjectID = db.Column(db.Integer, db.ForeignKey('project.ProjectID'), primary_key=True) application_status = db.Column(db.String(80)) def __call__(arg1, arg2, arg3): print "call application" #print str(arg1) + " | " + str(arg2) + " | " + str(arg3) def __init__(self, StudentID, ProjectID, application_status): self.StudentID = StudentID self.ProjectID = ProjectID self.application_status = application_status def __repr__(self): #return '<user %r>' % (self.login + '-' + str(self.UserID)) return json.dumps({ 'StudentID': self.StudentID, 'ProjectID': self.ProjectID, 'application_status': self.application_status })
class Post(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(240)) slug = db.Column(db.String(240), unique=True) body = db.Column(db.String()) photo = db.Column(db.String(), default='../img/covers/default.jpg') date = db.Column(db.DateTime, default=datetime.utcnow) public = db.Column(db.Boolean, nullable=False, default=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) favorited = db.Column(db.Integer, default=0) favorited_by = db.relationship('User', secondary=favorites, backref=db.backref('favorited', lazy='dynamic')) comments = db.relationship('Comment', cascade="all, delete-orphan", backref='post', lazy='dynamic') def slugify(self, text, delim=u'-'): """ Generates an ASCII-only slug with unique index in case of slug name clashes and saves it to db. :param text: text to be made into slug :param delim: delimiter for slug """ result = [] for word in _punct_re.split(text.lower()): word = word.encode('translit/long') if word: result.append(word) slug = orig = unicode(delim.join(result)) for x in itertools.count(0): if not Post.query.filter_by(slug=slug).first(): break slug = '%s-%d' % (orig, x) self.slug = slug @property def serialize(self): return { 'id': self.id, 'title': self.title, 'slug': self.slug, 'body': self.body, 'cover_photo': self.photo, 'date': self.date, 'author': self.author.username, 'avatar': self.author.photo, 'favorited': self.favorited, 'favorited_by': [user.serialize for user in self.favorited_by], 'comments': [comment.serialize for comment in self.comments], 'author_id': self.user_id, 'public': self.public } def get_slug(self): return self.slug def __repr__(self): return self.id
class Project(db.Model): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) hour_number = db.Column(db.Integer()) estimate_hours = db.Column(db.Integer()) progress = db.Column(db.String(80)) client_id = db.Column(db.Integer, db.ForeignKey('client.id'))
class Project(db.Model): ProjectID = db.Column(db.Integer, primary_key=True) SponsorID = db.Column(db.Integer, db.ForeignKey('sponsor.SponsorID')) StudentID = db.Column(db.Integer, db.ForeignKey('student.StudentID')) title = db.Column(db.String(80)) description = db.Column(db.String(2000)) category = db.Column(db.String(80)) status = db.Column(db.String(80)) deliverables = db.Column(db.String(2000)) requirements = db.Column(db.String(2000)) payment = db.Column(db.Float) thumbnail = db.Column(db.String(255)) def __call__(arg1, arg2, arg3): print "call project" def __init__(self, ProjectID, SponsorID, StudentID, title, description, category, status, deliverables, requirements, payment, thumbnail): self.ProjectID = ProjectID self.SponsorID = SponsorID self.StudentID = StudentID self.title = title self.description = description self.category = category self.status = status self.deliverables = deliverables self.requirements = requirements self.payment = payment self.thumbnail = thumbnail def __repr__(self): return json.dumps({ 'ProjectID': self.ProjectID, 'SponsorID': self.SponsorID, 'StudentID': self.StudentID, 'title': self.title, 'description': self.description, 'category': self.category, 'status': self.status, 'deliverables': self.deliverables, 'requirements': self.requirements, 'payment': self.payment, 'thumbnail': self.thumbnail })
class Comment(db.Model): __tablename__ = 'comment' id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String()) date = db.Column(db.DateTime, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) @property def serialize(self): return { 'id': self.id, 'body': self.body, 'date': self.date, 'author': self.author.username, 'author_ava': self.author.photo }
class Sponsor(db.Model): SponsorID = db.Column(db.Integer, primary_key=True) UserID = db.Column(db.Integer, db.ForeignKey('user.UserID')) def __call__(arg1, arg2, arg3): print "call sponsor" def __init__(self, SponsorID, UserID): self.SponsorID = SponsorID self.UserID = UserID def __repr__(self): return json.dumps({'SponsorID': self.SponsorID, 'UserID': self.UserID})
class Student(db.Model): StudentID = db.Column(db.Integer, primary_key=True) UserID = db.Column(db.Integer, db.ForeignKey('user.UserID')) SupervisorID = db.Column(db.Integer, db.ForeignKey('supervisor.SupervisorID')) def __call__(arg1, arg2, arg3): print "call student" #print str(arg1) + " | " + str(arg2) + " | " + str(arg3) def __init__(self, StudentID, UserID, SupervisorID): self.StudentID = StudentID self.UserID = UserID self.SupervisorID = SupervisorID def __repr__(self): #return '<user %r>' % (self.login + '-' + str(self.UserID)) return json.dumps({ 'StudentID': self.StudentID, 'UserID': self.UserID, 'SupervisorID': self.SupervisorID })
class Admin(db.Model): AdminID = db.Column(db.Integer, primary_key=True) UserID = db.Column(db.Integer, db.ForeignKey('user.UserID')) def __call__(arg1, arg2, arg3): print "call admin" def __init__(self, AdminID, UserID): self.AdminID = AdminID self.UserID = UserID def __repr__(self): return json.dumps({ 'AdminID': self.AdminID, 'UserID': self.UserID, })
class Activity(db.Model): id = db.Column(db.Integer(), primary_key=True) poster_id = db.Column(db.Integer, db.ForeignKey('user.id'))
from datetime import datetime from angular_flask.core import db, admin from angular_flask import app from flask.ext.security import Security, SQLAlchemyUserDatastore, \ UserMixin, RoleMixin, login_required, current_user # TODO switch the database from SQLite Postgresql # roles_users = db.Table('roles_users', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))) class Activity(db.Model): id = db.Column(db.Integer(), primary_key=True) poster_id = db.Column(db.Integer, db.ForeignKey('user.id')) # Should really be a product # class Project(db.Model): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) hour_number = db.Column(db.Integer()) estimate_hours = db.Column(db.Integer()) progress = db.Column(db.String(80)) client_id = db.Column(db.Integer, db.ForeignKey('client.id'))
import translitcodec, re, itertools from datetime import datetime from angular_flask.core import db from angular_flask import app from passlib.apps import custom_app_context as pwd_context from itsdangerous import (TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired) from flask.ext.login import UserMixin _punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+') favorites = db.Table('favorites', db.Column('post_id', db.Integer, db.ForeignKey('post.id')), db.Column('user_id', db.Integer, db.ForeignKey('user.id')) ) class Post(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(240)) slug = db.Column(db.String(240), unique=True) body = db.Column(db.String()) photo = db.Column(db.String(), default='../img/covers/default.jpg') date = db.Column(db.DateTime, default=datetime.utcnow) public = db.Column(db.Boolean, nullable=False, default=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) favorited = db.Column(db.Integer, default=0) favorited_by = db.relationship('User', secondary=favorites, backref=db.backref('favorited', lazy='dynamic')) comments = db.relationship('Comment', cascade="all, delete-orphan", backref='post', lazy='dynamic')