Пример #1
0
class Voter(db.Model):
    '''
		Contains details of a voter
	'''

    __tablename__ = 'Voter'

    voterId = db.Column(db.Integer,
                        db.ForeignKey('ElectoralRoll.voterId'),
                        nullable=False,
                        primary_key=True)
    electionId = db.Column(db.Integer,
                           db.ForeignKey('Elections.electionId'),
                           nullable=False,
                           primary_key=True)
    otp = db.Column(db.Integer, nullable=True)

    def __repr__(self):
        return 'Voter: < ' + self.voterId + ':' + self.electionId + ':' + self.otp + '>'

    def __init__(self, id, electionId, otp):
        self.voterId = id
        self.electionId = electionId
        self.otp = otp

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }
Пример #2
0
class Coordinator(db.Model):

	__tablename__ = 'Coordinator'

	userId = db.Column(db.String(10), db.ForeignKey('User.pecfestId'), primary_key=True)
	password = db.Column(db.String(10), nullable=False)
	level = db.Column(db.String(10), nullable=False)

	def __str__(self):
		return "[" + self.userId + "] " + self.level
Пример #3
0
class User(db.Model):
    '''
		Contain details of a user.
	'''

    __tablename__ = 'User'

    pecfestId = db.Column(db.String(10), primary_key=True)
    name = db.Column(db.String(256), nullable=False)
    college = db.Column(db.String(256), nullable=False)
    email = db.Column(db.String(100), nullable=False)
    mobile = db.Column(db.String(10), nullable=False)
    gender = db.Column(db.String(10), nullable=False)
    accomodation = db.Column(db.String(255), nullable=False)
    verified = db.Column(db.Integer, nullable=False)
    smsCounter = db.Column(db.Integer, default=0)

    def __repr__(self):
        return 'User: <' + self.pecfestId + ':' + self.name + '>'

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }
Пример #4
0
class SentSMS(db.Model):

    __tablename__ = 'sent_sms'

    id = db.Column(db.Integer, primary_key=True)
    smsId = db.Column(db.String(255), nullable=False)
    mobile = db.Column(db.String(10), nullable=False)
    smsType = db.Column(db.Integer, nullable=False)

    # 1 for pending, 2 for delivered, 3 for rejected
    status = db.Column(db.Integer, nullable=False)
class Notifications(db.Model):
    __tablename__ = 'Notifications'

    notificationId = db.Column(db.String(10), primary_key=True)
    notificationTitle = db.Column(db.String(100), nullable=False)
    notificationDetails = db.Column(db.String(4096), nullable=True)
    eventId = db.Column(db.Integer,
                        db.ForeignKey('Event.eventId'),
                        nullable=False)
    notificationType = db.Column(db.String(10), nullable=False)

    notif_rel = relationship('Event')
Пример #6
0
class OTPs(db.Model):

    __tablename__ = 'OTPs'

    mobile = db.Column(db.String(10), primary_key=True)
    otp = db.Column(db.String(6), nullable=False)

    def __repr__(self):
        return 'ID: <' + self.mobile + ':' + self.otp + '>'

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }
Пример #7
0
class QuestionAttempt(db.Model):
    """Maps quiz attempt to quiz questions, mark if correct"""

    __tablename__ = 'question_attempts'

    id = db.Column(db.Integer, primary_key=True)

    question_id = db.Column(db.Integer,
                            db.ForeignKey('questions.id', ondelete='cascade'))

    quiz_attempt_id = db.Column(
        db.Integer, db.ForeignKey('quiz_attempts.id', ondelete='cascade'))

    answer_given = db.Column(db.Text)

    correct = db.Column(db.Boolean)
Пример #8
0
class QuizAttempt(db.Model):
    """Quiz attempts by a user"""

    __tablename__ = 'quiz_attempts'

    id = db.Column(db.Integer, primary_key=True)

    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', ondelete='cascade'))

    quiz_id = db.Column(db.Integer,
                        db.ForeignKey('quizzes.id', ondelete='cascade'))

    timestamp = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

    num_correct = db.Column(db.Integer)

    questions = db.relationship("QuestionAttempt", backref='quiz_attempt')
Пример #9
0
class Candidate(db.Model):
    '''
		Info about candidates
	'''
    __tablename__ = "Candidate"

    voterId = db.Column(db.Integer,
                        db.ForeignKey('ElectoralRoll.voterId'),
                        nullable=False)
    electionId = db.Column(db.Integer,
                           db.ForeignKey('Elections.electionId'),
                           nullable=False)
    name = db.Column(db.String(100), nullable=False)
    manifesto = db.Column(db.Text, nullable=True)
    uId = db.Column(db.Integer, primary_key=True, autoincrement=True)

    def __repr__(self):
        return 'Candidate: < ' + str(self.electionId) + ':' + str(
            self.uId) + ':' + str(
                self.voterId) + ':' + self.name + ':' + self.manifesto + '>'

    def __init__(self, electionId, voterId, name, manifesto):
        self.voterId = voterId
        self.name = name
        self.manifesto = manifesto
        self.electionId = electionId

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }

    def get_uId(self):
        return self.uId

    def get_voterId(self):
        return self.voterId

    def get_name(self):
        return self.name

    def get_manifesto(self):
        return self.manifesto
Пример #10
0
class QuizQuestion(db.Model):
    """Map quiz questions to a quiz"""

    __tablename__ = 'quiz_questions'

    id = db.Column(
        db.Integer,
        primary_key=True
    )

    question_id = db.Column(
        db.Integer,
        db.ForeignKey('questions.id', ondelete='cascade')
    )

    quiz_id = db.Column(
        db.Integer,
        db.ForeignKey('quizzes.id', ondelete='cascade')
    )
Пример #11
0
class EventRegistration(db.Model):

    __tablename__ = 'Registration'

    id = db.Column(db.Integer, primary_key=True)
    eventId = db.Column(db.Integer,
                        db.ForeignKey('Event.eventId'),
                        nullable=False)
    memberId = db.Column(db.String(10),
                         db.ForeignKey('User.pecfestId'),
                         nullable=False)
    leaderId = db.Column(db.String(10),
                         db.ForeignKey('User.pecfestId'),
                         nullable=False)

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }
Пример #12
0
class Elections(db.Model):
    '''
		Contains Details of all elections
	'''

    __tablename__ = "Elections"

    electionId = db.Column(db.Integer,
                           nullable=False,
                           primary_key=True,
                           autoincrement=True)
    electionName = db.Column(db.String(1000), nullable=False)
    description = db.Column(db.Text, nullable=True)
    startTime = db.Column(db.DateTime, nullable=False)
    endTime = db.Column(db.DateTime, nullable=False)
    hostId = db.Column(db.Integer, nullable=False)

    def __repr__(self):
        return 'Electons: < ' + self.hostId + ':' + self.electionId + ':' + self.electionName + ':' + self.description + ':' + self.startTime + ':' + self.endTime + '>'

    def __init__(self, hostId, electionId, electionName, description,
                 startTime, endTime):
        self.electionId = electionId
        self.electionName = electionName
        self.description = description
        self.startTime = startTime
        self.endTime = endTime
        self.hostId = hostId

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }
Пример #13
0
class ElectoralRoll(db.Model):
    '''
		Contains Master Details
	'''

    __tablename__ = 'ElectoralRoll'

    voterId = db.Column(db.Integer, nullable=False, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    branch = db.Column(db.String(100), nullable=False)
    year = db.Column(db.Integer, nullable=False)
    email = db.Column(db.String(256), nullable=False, unique=True)
    contact = db.Column(db.String(10), nullable=False, unique=True)

    def __repr__(self):
        return 'ElectoralRoll: < ' + self.voterId + ':' + self.name + ':' + self.branch + ':' + self.year + ':' + self.email + ':' + self.contact + '>'

    def __init__(self, voterId, name, branch, year, email, contact):
        self.voterId = voterId
        self.name = name
        self.branch = branch
        self.year = year
        self.email = email
        self.contact = contact

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }
Пример #14
0
class Vote(db.Model):

	'''
		Contains info about the Vote count 
	'''

	__tablename__ = "Vote"

	electionId = db.Column ( db.Integer, db.ForeignKey('Elections.electionId'),nullable=False, primary_key=True)
	uId = db.Column ( db.Integer,db.ForeignKey('Candidate.uId'), nullable=False , primary_key=True)
	count = db.Column (db.Integer, nullable=False)


	def __repr__(self):
		return 'Vote: < ' + self.electionId + ':' + self.uId + ':' + self.count + '>'

	def __init__(self, uId, electionId, count):
		self.uId = uId
		self.electionId = electionId
		self.count = 0

	def as_dict(self):
		return { c.name : getattr(self, c.name) for c in self.__tablename__.columns}
Пример #15
0
class Question(db.Model):
    """Quiz question"""

    __tablename__ = 'questions'

    id = db.Column(
        db.Integer,
        primary_key=True
    )

    url = db.Column(
        db.Text
    )

    correct_answer = db.Column(
        db.Text
    )

    wrong_answer_1 = db.Column(
        db.Text
    )

    wrong_answer_2 = db.Column(
        db.Text
    )

    wrong_answer_3 = db.Column(
        db.Text
    )

    slug = db.Column(
        db.Text
    )

    search_slug = db.Column(
        db.Text,
        default=search_slug
    )

    attempts = db.relationship(
        'QuestionAttempt',
        backref='question'
    )
Пример #16
0
class User(db.Model):
    """User in the system."""

    __tablename__ = 'users'

    id = db.Column(
        db.Integer,
        primary_key=True,
    )

    username = db.Column(
        db.Text,
        nullable=False,
        unique=True,
    )

    password = db.Column(
        db.Text,
        nullable=False,
    )

    num_quizzes_created = db.Column(db.Integer, default=0)

    quizzes = db.relationship('Quiz',
                              secondary="quiz_attempts",
                              backref='taken_by')

    attempts = db.relationship('QuizAttempt', backref='taken_by')

    def __repr__(self):
        return f"<User #{self.id}: {self.username}>"

    def is_new_quiz_eligible(self):
        """User may request creation of one new quiz
        for every 10 different quizzes taken."""
        return self.num_quizzes_created * 10 + 10 <= len(self.quizzes)

    @classmethod
    def signup(cls, username, password):
        """Sign up user. Hashes password and adds user to system."""

        hashed_pwd = bcrypt.generate_password_hash(password).decode('UTF-8')

        user = User(username=username, password=hashed_pwd)

        db.session.add(user)
        db.session.commit()
        return user

    @classmethod
    def authenticate(cls, username, password):
        """Find user with `username` and `password`.
        If can't find matching user (or if password is wrong), returns False.
        """

        user = cls.query.filter_by(username=username).first()

        if user:
            is_auth = bcrypt.check_password_hash(user.password, password)
            if is_auth:
                return user

        return False
Пример #17
0
class Notifications(db.Model):
    __tablename__ = 'Notifications'

    token = db.Column(db.String(50), primary_key=True)
Пример #18
0
class Participant(db.Model):

    __tablename__ = 'Participant'

    pecfestId = db.Column(db.String(10), primary_key=True)
    firstName = db.Column(db.String(256), nullable=False)
    lastName = db.Column(db.String(256), nullable=False)
    collegeName = db.Column(db.String(256), nullable=False)
    emailId = db.Column(db.String(100), nullable=False)
    mobileNumber = db.Column(db.String(10), nullable=False)
    gender = db.Column(db.String(10), nullable=False)
    accomodation = db.Column(db.String(10), nullable=False)
    verified = db.Column(db.Integer, nullable=False)
    smsCounter = db.Column(db.Integer, default=0)
    password = db.Column(db.String(300), nullable=False)

    def __repr__(self):
        return 'User: <' + self.pecfestId + ':' + self.password + '>'

    def set_password(self, password):
        self.password = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password, password)

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }
Пример #19
0
class Event(db.Model):

    __tablename__ = 'Event'

    eventId = db.Column(db.Integer, primary_key=True, nullable=False)
    name = db.Column(db.String(100), unique=True, nullable=False)
    coordinators = db.Column(db.String(4096))
    location = db.Column(db.String(200))
    day = db.Column(db.Integer)
    time = db.Column(db.String(50))
    prize = db.Column(db.String(256))
    minSize = db.Column(db.Integer, default=0)
    maxSize = db.Column(db.Integer, default=0)

    eventType = db.Column(db.Integer, nullable=False)
    category = db.Column(db.Integer, default=0)
    clubId = db.Column(db.String(10), default=0)
    details = db.Column(db.String(4096))
    shortDescription = db.Column(db.String(300))

    imageUrl = db.Column(db.String(255), default='')
    rulesList = db.Column(db.String(4096))

    pdfUrl = db.Column(db.String(255), nullable=False)

    def __repr__(self):
        return 'Event: <' + self.eventName + '>'

    def as_dict(self):
        return {
            c.name: getattr(self, c.name)
            for c in self.__tablename__.columns
        }
Пример #20
0
class Session(db.Model):

    __tablename__ = 'Session'

    sessionKey = db.Column(db.String(10), primary_key=True)
    userId = db.Column(db.String(10), nullable=False)
Пример #21
0
class Quiz(db.Model):
    """Quiz"""

    __tablename__ = 'quizzes'

    id = db.Column(
        db.Integer,
        primary_key=True
    )

    num_questions = db.Column(db.Integer)

    family = db.Column(
        db.Text, 
        nullable=False
    )

    num_by_family = db.Column(
        db.Integer,
        default=num_by_family
    )

    created_on = db.Column(
        db.DateTime,
        default = datetime.utcnow
    )

    created_by = db.Column(
        db.Text,
        default = 'system'
    )

    questions = db.relationship(
        'Question',
        secondary="quiz_questions",
        backref='part_of'
    )

    attempts = db.relationship(
        'QuizAttempt',
        backref='quiz'
    )

    @classmethod
    def create(cls, family):
        """Create new quiz from identified family.
        If error in quiz creation, return False"""

        questions = create_quiz(family)

        if not questions:
            return False

        quiz = Quiz(num_questions=10, family=family)
        db.session.add(quiz)
        db.session.commit()

        for question in questions:
            new_question = Question(**question)
            new_question.family = family
            db.session.add(new_question)
            db.session.commit()
            quiz.questions.append(new_question)

        db.session.commit()
        return quiz