示例#1
0
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Question import Question
from flask_peewee.admin import ModelAdmin


class Option(db.Model):
    text = TextField()
    question = ForeignKeyField(Question)

    def __unicode__(self):
        return self.text

    def as_json(self):
        return {'text': self.text}


class OptionAdmin(ModelAdmin):
    columns = ('text', 'question')


model_classes.append((Option, OptionAdmin))
示例#2
0
文件: Comment.py 项目: vojto/riddle
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Questionnaire import Questionnaire
from flask_peewee.admin import ModelAdmin

class Comment(db.Model):
    author = CharField()
    subject = CharField()
    body = TextField()
    questionnaire = ForeignKeyField(Questionnaire)
    datetime = DateTimeField()

class CommentAdmin(ModelAdmin):
    columns = ('subject', 'body', 'questionnaire')

model_classes.append((Comment, CommentAdmin))
示例#3
0
文件: Option.py 项目: vojto/riddle
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Question import Question
from flask_peewee.admin import ModelAdmin

class Option(db.Model):
    text = TextField()
    question = ForeignKeyField(Question)

    def __unicode__(self):
        return self.text

    def as_json(self):
      return {
        'text': self.text
      }

class OptionAdmin(ModelAdmin):
    columns = ('text', 'question')

model_classes.append((Option, OptionAdmin))

示例#4
0
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Teacher import Teacher
from flask_peewee.admin import ModelAdmin


class Category(db.Model):
    name = CharField()
    teacher = ForeignKeyField(Teacher)

    def __unicode__(self):
        return self.name


class CategoryAdmin(ModelAdmin):
    columns = ('name', 'teacher')


model_classes.append((Category, CategoryAdmin))
示例#5
0
from flask_peewee.admin import ModelAdmin

class Questionnaire(db.Model):
    name = CharField()
    public_id = CharField()
    category = ForeignKeyField(Category)

    def __unicode__(self):
        return "%s (ID: %s)" % (self.name, self.public_id)

    def presented_question(self):
        Question = riddle.models.Question.Question
        try:
            return Question.select().where(Question.questionnaire == self, Question.presented == True).get()
        except Question.DoesNotExist:
            return None

    class Meta:
        indexes = (
            (('public_id',), True),
            (('name', 'category'), False)
        )

class QuestionnaireAdmin(ModelAdmin):
    columns = ('name', 'public_id', 'category')


model_classes.append((Questionnaire, QuestionnaireAdmin))


示例#6
0
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Questionnaire import Questionnaire
from riddle.models.Student import Student
from flask_peewee.admin import ModelAdmin


class Rating(db.Model):
    like = BooleanField()
    student = ForeignKeyField(Student)
    questionnaire = ForeignKeyField(Questionnaire)


class RatingAdmin(ModelAdmin):
    columns = ('like', 'questionnaire')


model_classes.append((Rating, RatingAdmin))
示例#7
0
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Question import Question
from riddle.models.Option import Option
from riddle.models.Student import Student
from flask_peewee.admin import ModelAdmin


class Answer(db.Model):
    text = TextField(null=True)
    option = ForeignKeyField(Option, null=True)
    question = ForeignKeyField(Question)
    student = ForeignKeyField(Student)


class AnswerAdmin(ModelAdmin):
    columns = ('id', 'text', 'option', 'student')


model_classes.append((Answer, AnswerAdmin))
示例#8
0
            'questionnaire_id': self.questionnaire.id,
            'last_ping': self.last_ping
        })

    @classmethod
    def update_latest(cls, student, questionnaire):
        now = datetime.now()
        try:
            pres = cls.get(cls.student == student,
                           cls.questionnaire == questionnaire)
            pres.last_ping = now
        except cls.DoesNotExist:
            pres = cls(student=student,
                       questionnaire=questionnaire,
                       last_ping=now)
        pres.save()

    @classmethod
    def count_active(cls, questionnaire):
        reference_time = datetime.now() + timedelta(seconds=-15)
        query = cls.select().where(cls.questionnaire == questionnaire,
                                   cls.last_ping > reference_time)
        return query.count()


class StudentPresenceAdmin(ModelAdmin):
    columns = ('student_id', 'questionnaire_id', 'last_ping')


model_classes.append((StudentPresence, StudentPresenceAdmin))
示例#9
0
文件: Category.py 项目: vojto/riddle
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Teacher import Teacher
from flask_peewee.admin import ModelAdmin

class Category(db.Model):
    name = CharField()
    teacher = ForeignKeyField(Teacher)

    def __unicode__(self):
        return self.name

class CategoryAdmin(ModelAdmin):
    columns = ('name', 'teacher')

model_classes.append((Category, CategoryAdmin))

示例#10
0
    questionnaire = ForeignKeyField(Questionnaire)

    def __unicode__(self):
        return self.description

    def present(self):
        """Presents question while un-presenting all other questions in questionnaire"""
        Question.update(presented=False).where(
            Question.questionnaire == self.questionnaire).execute()
        self.presented = True
        self.save()

    def options(self):
        from riddle.models.Option import Option
        return [o for o in Option.select().where(Option.question == self)]

    def as_json(self):
        return {
            'description': self.description,
            'type': self.typ,
            'presented': self.presented,
            'options': [o.as_json() for o in self.options()]
        }


class QuestionAdmin(ModelAdmin):
    columns = ('description', 'typ', 'presented', 'questionnaire', 'id')


model_classes.append((Question, QuestionAdmin))
示例#11
0
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Questionnaire import Questionnaire
from flask_peewee.admin import ModelAdmin


class Comment(db.Model):
    author = CharField()
    subject = CharField()
    body = TextField()
    questionnaire = ForeignKeyField(Questionnaire)
    datetime = DateTimeField()


class CommentAdmin(ModelAdmin):
    columns = ('subject', 'body', 'questionnaire')


model_classes.append((Comment, CommentAdmin))
示例#12
0
文件: Answer.py 项目: vojto/riddle
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Question import Question
from riddle.models.Option import Option
from riddle.models.Student import Student
from flask_peewee.admin import ModelAdmin

class Answer(db.Model):
    text = TextField(null=True)
    option = ForeignKeyField(Option, null=True)
    question = ForeignKeyField(Question)
    student = ForeignKeyField(Student)

class AnswerAdmin(ModelAdmin):
    columns = ('id', 'text', 'option', 'student')

model_classes.append((Answer, AnswerAdmin))
示例#13
0
    active = BooleanField()
    superuser = BooleanField()

    def __unicode__(self):
        return '%s (%s)' % (self.username, self.fullname)

    def as_json(self):
        return {
            'username': self.username,
            'fullname': self.fullname,
            'email': self.email
        }


class TeacherAdmin(ModelAdmin):
    columns = ('username', 'fullname', 'password', 'superuser')

    def save_model(self, instance, form, adding=False):
        orig_password = instance.password

        user = super(TeacherAdmin, self).save_model(instance, form, adding)

        if orig_password != form.password.data:
            user.set_password(form.password.data)
            user.save()

        return user


model_classes.append((Teacher, TeacherAdmin))
示例#14
0
文件: Rating.py 项目: vojto/riddle
from riddle import app, db, model_classes
from peewee import *
from riddle.models.Questionnaire import Questionnaire
from riddle.models.Student import Student
from flask_peewee.admin import ModelAdmin

class Rating(db.Model):
    like = BooleanField()
    student = ForeignKeyField(Student)
    questionnaire = ForeignKeyField(Questionnaire)

class RatingAdmin(ModelAdmin):
    columns = ('like', 'questionnaire')

model_classes.append((Rating, RatingAdmin))
示例#15
0
    def to_json(self):
      return json.dumps({
        'student_id': self.student.id,
        'questionnaire_id': self.questionnaire.id,
        'last_ping': self.last_ping
      })

    @classmethod
    def update_latest(cls, student, questionnaire):
      now = datetime.now()
      try:
        pres = cls.get(cls.student == student, cls.questionnaire == questionnaire)
        pres.last_ping = now
      except cls.DoesNotExist:
        pres = cls(student=student, questionnaire=questionnaire, last_ping=now)
      pres.save()

    @classmethod
    def count_active(cls, questionnaire):
      reference_time = datetime.now() + timedelta(seconds=-15)
      query = cls.select().where(cls.questionnaire == questionnaire, cls.last_ping > reference_time)
      return query.count()



class StudentPresenceAdmin(ModelAdmin):
    columns = ('student_id', 'questionnaire_id', 'last_ping')

model_classes.append((StudentPresence, StudentPresenceAdmin))

示例#16
0
文件: Teacher.py 项目: vojto/riddle
    superuser = BooleanField()

    def __unicode__(self):
        return '%s (%s)' % (self.username, self.fullname)

    def as_json(self):
        return {
            'username': self.username,
            'fullname': self.fullname,
            'email': self.email
        }

class TeacherAdmin(ModelAdmin):
    columns = ('username', 'fullname', 'password', 'superuser')

    def save_model(self, instance, form, adding=False):
        orig_password = instance.password

        user = super(TeacherAdmin, self).save_model(instance, form, adding)

        if orig_password != form.password.data:
            user.set_password(form.password.data)
            user.save()

        return user


model_classes.append((Teacher, TeacherAdmin))


示例#17
0
文件: Question.py 项目: vojto/riddle
    questionnaire = ForeignKeyField(Questionnaire)

    def __unicode__(self):
        return self.description

    def present(self):
        """Presents question while un-presenting all other questions in questionnaire"""
        Question.update(presented=False).where(Question.questionnaire == self.questionnaire).execute()
        self.presented = True
        self.save()

    def options(self):
        from riddle.models.Option import Option

        return [o for o in Option.select().where(Option.question == self)]

    def as_json(self):
        return {
            "description": self.description,
            "type": self.typ,
            "presented": self.presented,
            "options": [o.as_json() for o in self.options()],
        }


class QuestionAdmin(ModelAdmin):
    columns = ("description", "typ", "presented", "questionnaire", "id")


model_classes.append((Question, QuestionAdmin))
示例#18
0
文件: Student.py 项目: vojto/riddle
from riddle import app, db, model_classes
from peewee import *
from flask_peewee.admin import ModelAdmin
import json


class Student(db.Model):
    name = CharField()
    session_id = CharField()

    def __unicode__(self):
        return self.name

    def to_json(self):
        data = {"name": self.name, "session_id": self.session_id, "id": self.id}
        return json.dumps(data)


class StudentAdmin(ModelAdmin):
    columns = ("name", "session_id")


model_classes.append((Student, StudentAdmin))
示例#19
0
from riddle import app, db, model_classes
from peewee import *
from flask_peewee.admin import ModelAdmin
import json


class Student(db.Model):
    name = CharField()
    session_id = CharField()

    def __unicode__(self):
        return self.name

    def to_json(self):
        data = {
            'name': self.name,
            'session_id': self.session_id,
            'id': self.id
        }
        return json.dumps(data)


class StudentAdmin(ModelAdmin):
    columns = ('name', 'session_id')


model_classes.append((Student, StudentAdmin))