class ExerciseStatus(Table): _name = 'exercise_status' _schema = [ Column('exercise', ForeignKey('exercise')), Column('users', ForeignKey('users')), Column('status', String(20)), ]
class LessonStatus(Table): _name = 'lesson_status' _schema = [ Column('lesson', ForeignKey('lesson')), Column('users', ForeignKey('users')), Column('status', String(20)), ]
class QuizQuestions(Table): _name = 'quiz_questions' _schema = [ Column('quiz', ForeignKey('quiz')), Column('question', ForeignKey('question')), Column('question_order', Integer(), default=0), ]
class LiveQuizAnsware(Table): _name = 'live_quiz_answare' _schema = [ Column('live_quiz', ForeignKey('live_quiz')), Column('question', ForeignKey('question')), Column('answare', CodeString(5000)), ]
class Absence(Table): _name = 'absence' _schema = [ Column('lesson', ForeignKey('lesson')), Column('users', ForeignKey('users')), Column('absent', Boolean(), default=True), ]
def migrate_1to2(engine): ''' Add updated and updated_by columns to keep track of which users are updating inventory ''' updated = Column('updated', Integer) updated_by = Column('updated_by', String) try: add_column(engine, 'user', updated) except Exception: pass try: add_column(engine, 'user', updated_by) except Exception: pass try: add_column(engine, 'group', updated) except Exception: pass try: add_column(engine, 'group', updated_by) except Exception: pass try: add_column(engine, 'facility', updated) except Exception: pass try: add_column(engine, 'facility', updated_by) except Exception: pass return engine
class LessonFeedback(Table): _name = 'lesson_feedback' _schema = [ Column('users', ForeignKey('users')), Column('lesson', ForeignKey('lesson')), Column('feedback', String(5000)), ]
class QuestionAnsware(Table): _name = 'question_answare' _schema = [ Column('users', ForeignKey('users')), Column('question', ForeignKey('question')), Column('answare', CodeString(5000)), ] _unique = ['users', 'question']
class EventSponsor(Table): _name = 'event_sponsor' _schema = [ Column('order_number', Integer()), Column('event', ForeignKey('event')), Column('sponsor', ForeignKey('sponsor')), Column('rank', String(255)), ]
class Feedback(Table): _name = 'seat' _schema = [ Column('id', Integer, primary_key=True), Column('row', String(255)), Column('number', String(10000)), Column('users', ForeignKey('users')), ]
class ExerciseAnsware(Table): _name = 'lesson_status' _schema = [ Column('exercise', ForeignKey('exercise')), Column('users', ForeignKey('users')), Column('answare', CodeString(5000)), Column('status', String(20)), ]
class UserReview(Table): _name = 'user_review' _schema = [ Column('users', ForeignKey('users')), Column('reviewer', ForeignKey('users')), Column('score', Integer()), ] _unique = ['users', 'reviewer']
class LiveQuizQuestion(Table): _name = 'live_quiz_questions' _schema = [ Column('live_quiz', ForeignKey('live_quiz')), Column('question', ForeignKey('question')), Column('question_order', Integer(), default=0), ] _unique = ['live_quiz', 'question_order']
class ExerciseAnsware(Table): _name = 'exercise_answare' _schema = [ Column('exercise', ForeignKey('exercise')), Column('users', ForeignKey('users')), Column('answare', CodeString(5000)), Column('first_answare', CodeString(5000), default=""), Column('status', String(20)), ]
class Seat(Table): _name = 'seat' _schema = [ Column('id', Integer, primary_key=True), Column('row', String(255)), Column('number', Integer()), Column('users', ForeignKey('users'), unique=True), Column('i_need_help', Boolean(), default=False), ]
class EventMeetings(Table): _name = 'event_meetings' _schema = [ Column('order_number', Integer()), Column('event', ForeignKey('event')), Column('lesson', ForeignKey('lesson')), Column('date', DateTime(), default=datetime.utcnow), Column('lesson_active', Boolean(), default=False), ]
class Feedback(Table): _name = 'feedback' _schema = [ Column('lesson_review', String(10000)), Column('teacher_review', String(10000)), Column('material', Integer()), Column('teacher', ForeignKey('users')), Column('users', ForeignKey('users')), ]
class LessonFeedbackAnswer(Table): _name = 'lesson_feedback_answer' _schema = [ Column('id', Integer, primary_key=True), Column('author', ForeignKey('users')), Column('answers', CodeString(10000)), Column('question', ForeignKey('lesson_feedback_question')), Column('lesson', ForeignKey('lesson')) ]
class AbsenceMeta(Table): _name = 'absence_meta' _schema = [ Column('id', Integer, primary_key=True), Column('row', String(255)), Column('code', String(10)), Column('active', Boolean(), default=True), Column('users', ForeignKey('users')), ]
def new_db_from_pandas(self, frame, table=None, data=None, load=True, **kwargs): """Create a new db partition from a pandas data frame. If the table does not exist, it will be created """ import pandas as pd import numpy as np from orm import Column from dbexceptions import ConfigurationError # Create the table from the information in the data frame. with self.bundle.session: sch = self.bundle.schema t = sch.add_table(table) if frame.index.name: id_name = frame.index.name else: id_name = 'id' sch.add_column(t, id_name, datatype=Column.convert_numpy_type( frame.index.dtype), is_primary_key=True) for name, type_ in zip([row for row in frame.columns], [ row for row in frame.convert_objects(convert_numeric=True, convert_dates=True).dtypes ]): sch.add_column(t, name, datatype=Column.convert_numpy_type(type_)) sch.write_schema() p = self.new_partition(table=table, data=data, **kwargs) if load: pk_name = frame.index.name with p.inserter(table) as ins: for i, row in frame.iterrows(): d = dict(row) d[pk_name] = i ins.insert(d) return p
class Config(Table): _name = 'config' _schema = [ Column('id', Integer, primary_key=True), Column('reg_active', Boolean(), default=True), Column('room_raws', Integer(), default=10), Column('room_columns', Integer(), default=10), ] @classmethod async def get_registration(cls): config = await cls.get_by_id(1) return config.reg_active
class Lesson(Table): _name = 'lesson' _schema = [ Column('id', Integer, primary_key=True), Column('lesson_no', Integer()), Column('title', String(255)), Column('description', String(10000)), Column('author', ForeignKey('users'), default=DEFAULT_USER), Column('file', String(255), required=False), Column('time_created', DateTime(), default=datetime.utcnow), Column('active', Boolean(), default=False), Column('quiz', ForeignKey('quiz'), required=False), Column('live_quiz', ForeignKey('live_quiz'), required=False), ]
class Sponsor(Table): _name = 'sponsor' _schema = [ Column('id', Integer(), primary_key=True), Column('name', String(255)), Column('description', String(5000)), Column('logo', String(255), required=False, default=''), Column('webpage', String(255), required=False, default=''), Column('linkedin', String(255), required=False), Column('twitter', String(255), required=False), Column('facebook', String(255), required=False), Column('city', String(255), required=False), Column('country', String(255), required=False), ]
class EventUsers(Table): _name = 'event_users' _soft_restricted_keys = ['score', 'notes'] _schema = [ Column('event', ForeignKey('event')), Column('users', ForeignKey('users')), Column('confirmation', String(10), default='noans'), Column('accepted', Boolean(), default=False), Column('bring_power_cord', Boolean(), default=False), Column('attend_weekly', Boolean(), default=False), Column('notes', String(5000), default=''), Column('score', Float(), default=0, required=False), Column('i_helped', Boolean(), default=False), Column('helped', String(5000), required=False), ]
class Feedback(Table): _name = 'feedback' _schema = [ Column('lesson_review', String(10000)), Column('teacher_review', String(10000)), Column('material', Integer()), Column('teacher', ForeignKey('users')), Column('users', ForeignKey('users')), # O tym czy dobrze było zorganizowane # Czy polecilbys nasze warsztaty znajomym # Czy moglibyśmy lepiej się reklamować # Czy jakieś zagadnienia były za mało poruszone Albo za dużo # Czego brakowało # https://docs.google.com/forms/d/e/1FAIpQLSctlgSwoKQoB_3Hc5bfu3RYLbz0TNKQmg23jnc8MJ3wwRJn7g/viewform ]
class LessonFeedbackQuestion(Table): _name = 'lesson_feedback_question' _schema = [ Column('id', Integer, primary_key=True), Column('author', ForeignKey('users'), default=DEFAULT_USER), Column('type', String(50)), Column('description', String(5000)), Column('answers', CodeString(10000)) ] @classmethod async def get_by_lesson_id(cls, lid): return await cls.get_by_join("lesson_feedback_meta", lesson=lid, id=StringLiteral("question"))
def new_db_from_pandas(self,frame,table=None,data=None,load=True, **kwargs): """Create a new db partition from a pandas data frame. If the table does not exist, it will be created """ from orm import Column # from dbexceptions import ConfigurationError # Create the table from the information in the data frame. with self.bundle.session: sch = self.bundle.schema t = sch.add_table(table) if frame.index.name: id_name = frame.index.name else: id_name = 'id' sch.add_column(t,id_name, datatype=Column.convert_numpy_type(frame.index.dtype),is_primary_key=True) for name, type_ in zip([row for row in frame.columns], [row for row in frame.convert_objects(convert_numeric=True, convert_dates=True).dtypes]): sch.add_column( t, name, datatype=Column.convert_numpy_type(type_)) sch.write_schema() p = self.new_partition(table=table, data=data, **kwargs) if load: pk_name = frame.index.name with p.inserter(table) as ins: for i, row in frame.iterrows(): d = dict(row) d[pk_name] = i ins.insert(d) return p
class Quiz(Table): _name = 'quiz' _schema = [ Column('id', Integer, primary_key=True), Column('title', String(255)), Column('description', String(10000)), Column('users', ForeignKey('users'), default=1), Column('time_created', DateTime(), default=datetime.utcnow), ] async def get_question(self, question_order=0): if question_order + 1 >= await self.get_question_amount(): return {'last': True, 'msg': 'That was last question in the quiz.'} qq = await QuizQuestions.get_first_by_many_field_value( quiz=self.id, question_order=question_order) return await Question.get_by_id(qq.question) async def get_question_amount(self): return len(await QuizQuestions.get_by_field_value('quiz', self.id))
class Question(Table): _name = 'question' _schema = [ Column('id', Integer, primary_key=True), Column('question', String(1000)), Column('answares', CodeString(2000), default=''), Column('possible_answare', String(1000), default=''), Column('qtype', String(50), default='plain'), Column('img', String(255), required=False, default=''), Column('users', ForeignKey('users'), default=DEFAULT_USER), Column('time_created', DateTime(), default=datetime.utcnow), ]
class AbsenceMeta(Table): _name = 'absence_meta' _schema = [ Column('id', Integer, primary_key=True), Column('lesson', ForeignKey('lesson')), Column('code', String(10)), Column('active', Boolean(), default=True), Column('users', ForeignKey('users')), Column('time_created', DateTime(), default=datetime.utcnow), Column('time_ended', DateTime()), ]
class Exercise(Table): _name = 'exercise' _schema = [ Column('id', Integer, primary_key=True), Column('title', String(255)), Column('task', CodeString(10000)), Column('possible_answare', CodeString(1000), required=False), Column('author', ForeignKey('users'), default=1), Column('time_created', DateTime(), default=datetime.utcnow), Column('lesson', ForeignKey('lesson')), ]