class Siswa(db.Model): # query_class = PostQuery id = db.Column(db.Integer, primary_key=True) nama = db.Column(db.String(255), nullable=False) jenis_kelamin_id = db.Column(db.Integer, db.ForeignKey('jenis_kelamin.id'), nullable=False) agama_id = db.Column(db.Integer, db.ForeignKey('agama.id'), nullable=False) tgl_lahir = db.Column(db.DateTime, nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) alamat = db.Column(db.Text, nullable=False) image_thumb = db.Column(db.String(255), nullable=False, default='default.jpg') slug = db.Column(db.String(255), nullable=False) active = db.Column(db.Boolean(), nullable=False, server_default='1') kelas_id = db.Column(db.Integer, db.ForeignKey('kelas.id')) # absensi = db.relationship('Kehadiran', lazy='dynamic', backref='pelajar') spp_siswa = db.relationship('PembayaranSpp', backref='spp_siswa', lazy=True) absensi = db.relationship('Absen', secondary='kehadiran') nilai_ujian = db.relationship('NilaiUjian', backref='nilai_ujian') def __repr__(self): return "Siswa('{self.nama}', '{self.date_posted}')"
class NilaiUjian(db.Model): id = db.Column(db.Integer, primary_key=True) siswa_id = db.Column(db.Integer, db.ForeignKey('siswa.id'), nullable=False) jadwal_ujian_id = db.Column(db.Integer, db.ForeignKey('jadwal_ujian.id'), nullable=False) nilai = db.Column(db.Float) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
class JadwalUjian(db.Model): id = db.Column(db.Integer, primary_key=True) mapel_id = db.Column(db.Integer, db.ForeignKey('mapel.id'), nullable=False) kelas_id = db.Column(db.Integer, db.ForeignKey('kelas.id'), nullable=False) waktu_ujian = db.Column(db.DateTime, nullable=False) akhir_ujian = db.Column(db.DateTime, nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) nilai = db.relationship('NilaiUjian', backref='jadwal_ujian', lazy=True)
class PembayaranSpp(db.Model): id = db.Column(db.Integer, primary_key=True) siswa_id = db.Column(db.Integer, db.ForeignKey('siswa.id'), nullable=False) dibayarkan = db.Column(db.Boolean, default=False) beasiswa = db.Column(db.Boolean, default=False) uangspp_id = db.Column(db.Integer, db.ForeignKey('uang_spp.id'), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
class JadwalMapel(db.Model): id = db.Column(db.Integer, primary_key=True) mapel_id = db.Column(db.Integer, db.ForeignKey('mapel.id'), nullable=False) kelas_id = db.Column(db.Integer, db.ForeignKey('kelas.id'), nullable=False) guru_id = db.Column(db.Integer, db.ForeignKey('guru.id'), nullable=False) hari = db.Column(db.String(8), nullable=False) mulai = db.Column(db.Time, nullable=False) akhir = db.Column(db.Time, nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
class Kehadiran(db.Model): id = db.Column(db.Integer, primary_key=True) siswa_id = db.Column(db.Integer, db.ForeignKey('siswa.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) mapel_id = db.Column(db.Integer, db.ForeignKey('mapel.id')) absen_id = db.Column(db.Integer, db.ForeignKey('absen.id')) waktu_absen = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) siswas = db.relationship('Siswa', backref='kehadiran_siswa', lazy=True) # user = db.relationship('User', backref='pengabsen', lazy=True) mapel = db.relationship('Mapel', backref='mata_pelajaran', lazy=True) absen = db.relationship('Absen', backref='data_absen', lazy=True)
class RecruitStatus(db.Model): __tablename__ = 'etl_recruit_status' id = db.Column(db.String(50), db.ForeignKey(Recruit.id), primary_key=True) recruit = db.relationship(Recruit, uselist=False, back_populates="status") status = db.Column(db.String(100)) study_id = db.Column(db.String(100)) first_name = db.Column(db.String(100)) last_name = db.Column(db.String(100)) processed_by = db.Column(db.String(500)) processed_date = db.Column(db.Date) invoice_year = db.Column(db.String(50)) invoice_quarter = db.Column(db.String(50)) reimbursed_status = db.Column(db.String(50)) @property def full_name(self): return '{} {}'.format(self.first_name or '', self.last_name or '') @property def invoice_period(self): return '{} {}'.format( self.invoice_year or '', self.invoice_quarter or '')
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default='default.jpg') password = db.Column(db.String(60), nullable=False) register_on = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) activate_on = db.Column(db.DateTime) roles_id = db.Column(db.Integer, db.ForeignKey('role.id'), nullable=False, default=1) guru = db.relationship('Kehadiran', lazy='dynamic', backref='guru') def get_reset_token(self, expires_sec=1800): s = Serializer(app.config['SECRET_KEY'], expires_sec) return s.dumps({'user_id': self.id}).decode('utf-8') @staticmethod def verify_reset_token(token): s = Serializer(app.config['SECRET_KEY']) try: user_id = s.loads(token)['user_id'] except: return None return User.query.get(user_id) def __repr__(self): return "User('{self.username}', '{self.email}', '{self.image_file}')"
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return f"Post('{self.title}', '{self.date_posted}')"
class Comments(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=False) email = db.Column(db.String(120)) website = db.Column(db.String(255)) comment = db.Column(db.Text, nullable=False) reply_id = db.Column(db.Integer, db.ForeignKey('comments.id')) date_comment = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) publish = db.Column(db.Boolean()) post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False) children = db.relationship('Comments', backref=db.backref('reply', remote_side=[id])) def avatar(self, size): digest = md5(self.email.lower().encode('utf-8')).hexdigest() return f'https://www.gravatar.com/avatar/{digest}?d=identicon&s={size}' def __repr__(self): return "Comments('{self.comment}', '{self.date_comment}')"
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(255), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) on_update = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow) content = db.Column(db.Text, nullable=False) image_thumb = db.Column(db.String(255), nullable=False, default='default.jpg') slug = db.Column(db.String(255), nullable=False) publish = db.Column(db.Boolean(), nullable=False, default=True) headline = db.Column(db.Boolean(), nullable=False) dibaca = db.Column(db.Integer, nullable=False, default=0) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) kategori_id = db.Column(db.Integer, db.ForeignKey('kategori.id'), nullable=False) tags = db.relationship('Tag', secondary=post_tags, lazy='dynamic', backref='tagger') comments = db.relationship('Comments', backref='post_comment', lazy='dynamic') def __repr__(self): return "Post('{self.title}', '{self.date_posted}')"
class Kategori(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=False) slug = db.Column(db.String(255), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) posts = db.relationship('Post', backref='category', lazy=True) def __repr__(self): return "Post('{self.nama_kategori}', '{self.date_posted}')"
class PracticeRegistration(db.Model): id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String, db.ForeignKey(Practice.code)) date_created = db.Column(db.DateTime, nullable=False) practice = db.relationship(Practice) def __init__(self, *args, **kwargs): self.code = kwargs.get('code') self.date_created = datetime.datetime.now()
class Reply(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, nullable=False) date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=True) post_id = db.Column(db.Integer, nullable=False) u_name = db.Column(db.String, db.ForeignKey('user.name'), nullable=False) def __repr__(self): return f"Post('{self.user}', '{self.date}', '{self.post_id}')"
class Recruit(db.Model): id = db.Column(db.String(50), primary_key=True) practice_registration_id = db.Column( db.Integer, db.ForeignKey(PracticeRegistration.id)) practice_registration = db.relationship( PracticeRegistration, backref=db.backref('recruits', cascade="all, delete-orphan")) user_id = db.Column(db.Integer, db.ForeignKey(User.id)) user = db.relationship( User, backref=db.backref('recruits', cascade="all, delete-orphan")) nhs_number = db.Column(db.String(20), nullable=False) date_of_birth = db.Column(db.Date, nullable=False) date_recruited = db.Column(db.Date, nullable=False) date_created = db.Column(db.DateTime, nullable=False) status = db.relationship( "RecruitStatus", uselist=False, back_populates="recruit") def __init__(self, *args, **kwargs): self.practice_registration_id = kwargs.get('practice_registration').id self.user_id = kwargs.get('user').id self.nhs_number = kwargs.get('nhs_number') self.date_of_birth = kwargs.get('date_of_birth') self.date_recruited = kwargs.get('date_recruited') self.date_created = datetime.datetime.now() self.id = uuid.uuid1() @property def date_of_birth_day(self): return self.date_of_birth.day @property def date_of_birth_month(self): return self.date_of_birth.month @property def date_of_birth_year(self): return self.date_of_birth.year
class Guru(db.Model): id = db.Column(db.Integer, primary_key=True) nama = db.Column(db.String(255), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) tgl_lahir = db.Column(db.DateTime, nullable=False) agama_id = db.Column(db.Integer, db.ForeignKey('agama.id'), nullable=False) jenis_kelamin_id = db.Column(db.Integer, db.ForeignKey('jenis_kelamin.id'), nullable=False) alamat = db.Column(db.Text, nullable=False) image_thumb = db.Column(db.String(255), nullable=False, default='default.jpg') slug = db.Column(db.String(255), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) jadwal_mapel = db.relationship('JadwalMapel', backref='jadwal_guru', lazy=True)
class Page(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(255), nullable=False) content = db.Column(db.Text, nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) on_update = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow) slug = db.Column(db.String(255), nullable=False) publish = db.Column(db.Boolean(), nullable=False, server_default='1') user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return "Post('{self.title}', '{self.date_posted}')"
class Diagram(db.Model): __tablename__ = 'diagram' diagram_id = db.Column(db.Integer, primary_key=True) diagram_name = db.Column(db.String(256), unique=True) diagram_type = db.Column(db.String) diagram_script = db.Column(db.Text) script_path = db.Column(db.String) image_path = db.Column(db.String) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) tag_id = db.Column(db.Integer, db.ForeignKey('tag.id')) create_time = db.Column(db.DateTime, default=datetime.utcnow) update_time = db.Column(db.DateTime, default=datetime.utcnow) def __repr__(self): return "<Diagram diagram_name={}, diagram_script={}, image_path={}".format( self.diagram_name, self.diagram_script, self.image_path)
class Assignment(db.Model): id = db.Column(db.Integer, primary_key=True) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) submitted_doc = db.Column(db.String, nullable=True) doc_name = db.Column(db.String, nullable=True) post = db.Column(db.Integer, nullable=False) st_name = db.Column(db.String, db.ForeignKey('user.name'), nullable=False) def __repr__(self): return f"Post('{self.st_name}', '{self.date_posted}')"
class RecruitSummary(db.Model): __tablename__ = 'etl_recruit_summary' practice_code = db.Column(db.String(500), db.ForeignKey(Practice.code), primary_key=True, nullable=True) practice = db.relationship("Practice", back_populates="recruit_summary") recruited = db.Column(db.Integer) excluded = db.Column(db.Integer) excluded_percentage = db.Column(db.Float) withdrawn = db.Column(db.Integer) withdrawn_percentage = db.Column(db.Float) last_recruited_date = db.Column(db.Date)
class company(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(200), nullable=False) email = db.Column(db.String(100)) location = db.Column(db.String(1000)) description = db.Column(db.String(4000), nullable=False) image_file = db.Column(db.String(200), nullable=False, default='company.jpg') date_joined = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) owner_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return f"company('{self.name}', '{self.date_joined}')"
class Target(db.Model): __tablename__ = 'target' id = db.Column(db.Integer, primary_key=True) target = db.Column(db.String(255)) targetset_id = db.Column(db.Integer, db.ForeignKey('targetset.id')) def __init__(self, target, targetset_id): self.target = target self.targetset_id = targetset_id def __repr__(self): #return '<Targets %d>'.format(self.id) return f'{self.targetset_id}: {self.target}' def __str__(self): return f'{self.target}'
class Recruit(db.Model): __tablename__ = 'etl_recruit' status = db.Column(db.String(100)) nhs_number = db.Column(db.String(20), nullable=False) study_id = db.Column(db.String(100)) practice_code = db.Column(db.String(100), db.ForeignKey("etl_practice_detail.code"), nullable=True) first_name = db.Column(db.String(100)) last_name = db.Column(db.String(100)) date_of_birth = db.Column(db.Date, nullable=False) civicrm_contact_id = db.Column(db.Integer) civicrm_case_id = db.Column(db.Integer, primary_key=True) recruited_date = db.Column(db.Date, nullable=False) invoice_year = db.Column(db.Integer) invoice_quarter = db.Column(db.String(50)) reimbursed_status = db.Column(db.String(50)) exclusion_reason = db.relationship("ExclusionReason", uselist=False, back_populates="recruit") @property def exclusion_reason_stripped(self): re_tag = re.compile(r'(<!--.*?-->|<[^>]*>)') re_nbsp = re.compile(r'( )') re_amp = re.compile(r'(&)') if self.exclusion_reason: return re_amp.sub('&', re_nbsp.sub('', re_tag.sub('', self.exclusion_reason.details or ''))).strip() else: return '' @property def exclusion_text(self): if len(self.exclusion_reason_stripped) > 0: return f"Excluded: {self.exclusion_reason_stripped}" else: return 'Excluded' @property def full_name(self): return '{} {}'.format(self.first_name or '', self.last_name or '') @property def invoice_period(self): return '{} {}'.format( self.invoice_year or '', self.invoice_quarter or '', ).strip()
class Delegate(db.Model): __tablename__ = 'etl_delegate' practice_code = db.Column(db.String, primary_key=True) instance = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(500)) role = db.Column(db.String(500)) gcp_trained = db.Column(db.Boolean) gv_trained = db.Column(db.Boolean) on_delegation_log_yn = db.Column(db.Boolean) gv_start_del_log = db.Column(db.Date) gv_end_del_log = db.Column(db.Date) gv_phone_a = db.Column(db.String(100)) gv_phone_b = db.Column(db.String(100)) contact_email_add = db.Column(db.String(500), db.ForeignKey(User.email), nullable=True) user = db.relationship(User) primary_contact_yn = db.Column(db.Boolean)
class jobs(db.Model): id = db.Column(db.Integer, primary_key=True) job_title = db.Column(db.String(200), nullable=False) job_type = db.Column(db.String(100)) job_category = db.Column(db.String(100)) tags = db.Column(db.String(100)) job_description = db.Column(db.String(1000)) location = db.Column(db.String(4000), nullable=False) min_salary = db.Column(db.Integer) max_salary = db.Column(db.Integer) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) deadline = db.Column(db.DateTime) employer_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return f"jobs('{self.title}', '{self.date_posted}')"
class Delegate(db.Model): __tablename__ = 'etl_delegationLog' practice_code = db.Column( db.String, db.ForeignKey(Practice.code), primary_key=True) practice = db.relationship(Practice, back_populates="delegates") instance = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(500)) role = db.Column(db.String(500)) gcp_training = db.Column(db.Boolean) gv_trained = db.Column(db.Boolean) on_delegation_log_yn = db.Column(db.Boolean) gv_start_del_log = db.Column(db.Date) gv_end_del_log = db.Column(db.Date) gv_phone_a = db.Column(db.String(100)) gv_phone_b = db.Column(db.String(100)) contact_email_add = db.Column(db.String(500)) primary_contact_yn = db.Column(db.Boolean)
class StaffMember(db.Model): id = db.Column(db.Integer, primary_key=True) practice_registration_id = db.Column( db.Integer, db.ForeignKey(PracticeRegistration.id)) first_name = db.Column(db.String, nullable=False) last_name = db.Column(db.String, nullable=False) date_created = db.Column(db.DateTime, nullable=False) practice_registration = db.relationship( PracticeRegistration, backref=db.backref('staff', cascade="all, delete-orphan")) def __init__(self, *args, **kwargs): self.practice_registration_id = kwargs.get('practice_registration').id self.first_name = kwargs.get('first_name') self.last_name = kwargs.get('last_name') self.date_created = datetime.datetime.now() def full_name(self): return '{} {}'.format(self.first_name or '', self.last_name or '')
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default='default.jpg') password = db.Column(db.String(60), nullable=False) biografi = db.Column(db.String(255)) roles_id = db.Column(db.Integer, db.ForeignKey('role.id')) active = db.Column(db.Boolean(), nullable=False, default=False) register_on = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) posts = db.relationship('Post', backref='author', lazy=True) pages = db.relationship('Page', backref='author_pages', lazy=True) kategori = db.relationship('Kategori', backref='categories', lazy=True) def __init__(self, **kwargs): super(User, self).__init__(**kwargs) if self.role is None: if self.email == current_app.config['ADMIN_BLOG']: self.active = True self.role = Role.query.filter_by(name='admin').first() else: self.role = Role.query.filter_by(name='writer').first() def get_reset_token(self, expires_sec=1800): s = Serializer(current_app.config['SECRET_KEY'], expires_sec) return s.dumps({'user_id': self.id}).decode('utf-8') @staticmethod def verify_reset_token(token): s = Serializer(current_app.config['SECRET_KEY']) try: user_id = s.loads(token)['user_id'] except: return None return User.query.get(user_id) def __repr__(self): return "User('{self.username}', '{self.email}', '{self.image_file}')"
name = db.Column(db.String(20), nullable=False) users = db.relationship('User', backref='role', lazy=True) @staticmethod def insert_roles(): roles = ['admin', 'moderator', 'writer'] for r in roles: role = Role.query.filter_by(name=r).first() if role is None: role = Role(name=r) db.session.add(role) db.session.commit() # Create M2M table post_tags = db.Table('post_tags', db.Model.metadata, db.Column('post_id', db.Integer, db.ForeignKey('post.id')), db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')) ) class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(255), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) on_update = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow) content = db.Column(db.Text, nullable=False) image_thumb = db.Column(db.String(255), nullable=False, default='default.jpg') slug = db.Column(db.String(255), nullable=False) publish = db.Column(db.Boolean(), nullable=False, default=True) headline = db.Column(db.Boolean(), nullable=False) dibaca = db.Column(db.Integer, nullable=False, default=0) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __init__(self, *args, **kwargs): self.name = kwargs.get('name') self.description = kwargs.get('description') 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'))) practice_registrations_users = db.Table( 'practice_registrations_users', db.Column( 'user_id', db.Integer(), db.ForeignKey('user.id')), db.Column( 'practice_registration_id', db.Integer(),