Ejemplo n.º 1
0
class Tag(db.Model):

    __tablename__ = "tags"

    tag_id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    gratitude_id = db.Column(db.Integer,
                             db.ForeignKey('gratitudes.gratitude_id'),
                             nullable=False)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.user_id'),
                        nullable=False)

    gratitude = db.relationship('Gratitude', backref='tags')
    user = db.relationship('User', backref="tags")

    @classmethod
    def add_new_tag(cls, gratitude_id, user_id):
        """Adds new tag to the db. """

        tag = Tag(gratitude_id=gratitude_id, user_id=user_id)

        db.session.add(tag)
        db.session.commit()

        return tag
Ejemplo n.º 2
0
class Transition(db.Model, TimestampMixin):
    __tablename__ = 'transitions'
    __table_args__ = {'sqlite_autoincrement': True}
    id = db.Column(db.BigInteger, primary_key=True)
    settlement_id = db.Column(db.BigInteger, db.ForeignKey('settlement.id'), nullable=False)
    product_id = db.Column(db.BigInteger, db.ForeignKey('product.id'), nullable=False)
    price = db.Column(db.Integer, nullable=False)
Ejemplo n.º 3
0
class Feedback(db.Model):
    """."""

    __tablename__ = "feedback"

    feedback_id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.user_id'),
                        nullable=False)
    email = db.Column(db.String(255), nullable=False)
    addressed = db.Column(db.Boolean, default=False, nullable=False)
    category_id = db.Column(db.Integer,
                            db.ForeignKey('feedback_categories.category_id'),
                            nullable=False)
    new_vendor_name = db.Column(db.String(32))
    new_program_name = db.Column(db.String(32))
    outgoing_name = db.Column(db.String(32))
    receiving_name = db.Column(db.String(32))
    new_numerator = db.Column(db.Integer)
    new_denominator = db.Column(db.Integer)
    feedback = db.Column(db.Text, nullable=False)

    user = db.relationship('User', backref=db.backref('feedback'))
    user = db.relationship('FeedbackCategory', backref=db.backref('feedback'))

    def __repr__(self):
        """Provide helpful representation when printed."""

        return "<from {}: {}>".format(
            self.email,
            self.feedback,
        )
Ejemplo n.º 4
0
class Vote(Base):
    account_id = db.Column(db.Integer,
                           db.ForeignKey('account.id'),
                           nullable=True)
    issue_id = db.Column(db.Integer, db.ForeignKey('issue.id'), nullable=True)

    cast = db.Column(db.Boolean)
Ejemplo n.º 5
0
class TransactionHistory(db.Model):
    """Transactions that impact program balance."""

    __tablename__ = "transaction_history"

    transaction_id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    action_id = db.Column(db.Integer, db.ForeignKey('actions.action_id'), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.user_id'), nullable=False)
    program_id = db.Column(db.Integer, db.ForeignKey('programs.program_id'), nullable=False)
    beginning_balance = db.Column(db.Integer, nullable=False)
    ending_balance = db.Column(db.Integer, nullable=False)
    created_at = db.Column(db.DateTime, default=db.func.current_timestamp())

    user = db.relationship('User', backref=db.backref('transaction_history'))
    program = db.relationship('Program', backref=db.backref('transaction_history'))
    action = db.relationship('Action', backref=db.backref('transaction_history'))

    def __repr__(self):
        """Provide helpful representation when printed."""

        return "<{} |user: {} |program: {} | beg: {} end: {} | {}>".format(self.transaction_id,
                                                                           self.user_id,
                                                                           self.program_id,
                                                                           self.beginning_balance,
                                                                           self.ending_balance,
                                                                           self.created_at,
                                                                           )
Ejemplo n.º 6
0
class Comment(db.Model):
    """Class for user comments on gratitudes."""

    __tablename__ = "comments"

    comment_id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    text = db.Column(db.Text, nullable=False)
    gratitude_id = db.Column(db.Integer,
                             db.ForeignKey('gratitudes.gratitude_id'),
                             nullable=False)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.user_id'),
                        nullable=False)

    gratitude = db.relationship('Gratitude', backref='comments')
    user = db.relationship('User', backref='users')

    @classmethod
    def add_new_comment(cls, text, gratitude_id, user_id):
        """Adds new comment to the db."""

        comment = Comment(text=text,
                          gratitude_id=gratitude_id,
                          user_id=user_id)

        db.session.add(comment)
        db.session.commit()

        return comment
Ejemplo n.º 7
0
class Question(Base):
    text = db.Column(db.String(128), nullable=False)

    issue_id = db.Column(db.Integer, db.ForeignKey('issue.id'), nullable=True)
    answer_id = db.Column(db.Integer, db.ForeignKey('answer.id'), nullable=True)

    options = db.relationship("Option")
    responses = db.relationship("Response")
Ejemplo n.º 8
0
class Answer(Base):
    text = db.Column(db.String(128), nullable=False)

    # currently one-to-one with question, possibly should be many-to-many with question?
    issue_id = db.Column(db.Integer, db.ForeignKey('issue.id'), nullable=True)
    option_id = db.Column(db.Integer,
                          db.ForeignKey('option.id'),
                          nullable=True)
Ejemplo n.º 9
0
class GradoAsignatura(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    grado_id = db.Column(db.Integer, db.ForeignKey("grado.id"), nullable=False)
    asignatura_id = db.Column(db.Integer,
                              db.ForeignKey("asignatura.id"),
                              nullable=False)

    def __init__(self, grado_id, asignatura_id):
        self.grado_id = grado_id
        self.asignatura_id = asignatura_id
Ejemplo n.º 10
0
class FoundQR(db.Model):
    """ a qrcode found by a team """
    team_id = db.Column(db.Integer, db.ForeignKey('team.id'), primary_key=True)
    qr_id = db.Column(db.String, db.ForeignKey('qr_code.id'), primary_key=True)

    qr = db.relationship('QRCode',
                         backref=db.backref('teams', cascade='all, delete'))

    def __repr__(self):
        return f'<FoundQR {self.team.name} found {self.qr}>'
Ejemplo n.º 11
0
class Response(Base):
    question_id = db.Column(db.Integer,
                            db.ForeignKey('question.id'),
                            nullable=True)
    option_id = db.Column(db.Integer,
                          db.ForeignKey('option.id'),
                          nullable=True)
    account_id = db.Column(db.Integer,
                           db.ForeignKey('account.id'),
                           nullable=True)
Ejemplo n.º 12
0
class Collection(db.Model):
    __tablename__ = 'collections'
    
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    attraction_id = db.Column(db.Integer, db.ForeignKey('attractions.id'), nullable=False)
    
    def __init__(self, user_id, attraction_id):
        self.user_id = user_id
        self.attraction_id = attraction_id
Ejemplo n.º 13
0
class Task(Base):
    issue_id = db.Column(db.Integer, db.ForeignKey('issue.id'), nullable=True)

    # account which has taken responsibility for the task.
    account_id = db.Column(db.Integer,
                           db.ForeignKey('account.id'),
                           nullable=True)

    # Front end should
    text = db.Column(db.String(1000), nullable=False)
    date_created = db.Column(db.DateTime, default=db.func.current_timestamp())
    due_date = db.Column(db.DateTime, nullable=False)
Ejemplo n.º 14
0
class Curso(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    jornada_id = db.Column(db.Integer,
                           db.ForeignKey("jornada.id"),
                           nullable=False)
    grado_id = db.Column(db.Integer, db.ForeignKey("grado.id"), nullable=False)
    letra = db.Column(db.String(1), nullable=False)

    def __init__(self, jornada_id, grado_id, letra):
        self.grado_id = grado_id
        self.jornada_id = jornada_id
        self.letra = letra
Ejemplo n.º 15
0
class Connection(db.Model):
    """Class for Connections; like an association table for Users to Users relationships?"""

    __tablename__ = "connections"

    connection_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    follower_user_id = db.Column(db.Integer, db.ForeignKey('users.user_id'))
    following_user_id = db.Column(db.Integer, db.ForeignKey('users.user_id'))

    def __repr__(self):
        return "<Connection ID: {}, Follower: {}, Following: {}>".format(
            self.connection_id,
            self.follower_user_id,
            self.following_user_id,
        )

    @classmethod
    def add_connection_to_db(cls, follower_user_id, following_user_id):
        """Given the follower and following user ids, adds connection to db."""

        try:
            connection = Connection.query.filter_by(
                follower_user_id=follower_user_id,
                following_user_id=following_user_id,
            ).one()
            flash("You're already following that user!")

        except NoResultFound:
            connection = Connection(
                follower_user_id=follower_user_id,
                following_user_id=following_user_id,
            )
            db.session.add(connection)
            db.session.commit()
            print "Added new connection object to the db."
            following = User.query.get(following_user_id)
            flash("You're now following {} {}".format(following.first_name,
                                                      following.last_name))

    @classmethod
    def delete_connection(cls, follower_user_id, following_user_id):
        """Delete a connection between users."""

        try:
            connection = Connection.query.filter_by(
                follower_user_id=follower_user_id,
                following_user_id=following_user_id,
            ).one()
            db.session.delete(connection)
            db.session.commit()

        except NoResultFound:
            print "That connection was not in the db."
Ejemplo n.º 16
0
class Profesor(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    usuario_id = db.Column(db.Integer,
                           db.ForeignKey("usuario.id"),
                           nullable=True)
    jornada_id = db.Column(db.Integer,
                           db.ForeignKey("jornada.id"),
                           nullable=False)

    def __init__(self, usuario_id, jornada_id):
        self.usuario_id = usuario_id
        self.jornada_id = jornada_id
Ejemplo n.º 17
0
class AsignaturaProfesor(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    grado_asignatura_id = db.Column(db.Integer,
                                    db.ForeignKey("grado_asignatura.id"),
                                    nullable=False)
    profesor_id = db.Column(db.Integer,
                            db.ForeignKey("profesor.id"),
                            nullable=False)

    def __init__(self, grado_asignatura_id, profesor_id):
        self.grado_asignatura_id = grado_asignatura_id
        self.profesor_id = profesor_id
Ejemplo n.º 18
0
class BloqueJornada(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    bloque_id = db.Column(db.Integer,
                          db.ForeignKey("bloque.id"),
                          nullable=False)
    jornada_id = db.Column(db.Integer,
                           db.ForeignKey("jornada.id"),
                           nullable=False)

    def __init__(self, bloque_id, jornada_id):
        self.bloque_id = bloque_id
        self.jornada_id = jornada_id
Ejemplo n.º 19
0
class Comment(db.Model):
    __tablename__ = 'comments'

    id = db.Column(db.Integer, primary_key=True)
    repliee_id = db.Column(db.Integer, index=True)
    time = db.Column(db.DateTime)
    content = db.Column(db.Text)

    replier_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    video_id = db.Column(db.Integer, db.ForeignKey('videos.id'))

    def __repr__(self):
        return '<Comment %r>' % self.content
Ejemplo n.º 20
0
class ShadowDimension(Dimension):
    id = db.Column(db.Integer, db.ForeignKey(Dimension.id), primary_key=True)

    __tablename__ = 'shadow_dimension'
    __mapper_args__ = {'polymorphic_identity': __tablename__}

    _referenced_object_id = db.Column(db.Integer,
                                      db.ForeignKey(ConcreteDimension.id))
    _referenced_object = db.relationship(ConcreteDimension,
                                         foreign_keys=[_referenced_object_id],
                                         backref='copies')

    shadow = True

    def __init__(self, dimension, **kwargs):
        self._referenced_object = dimension
        super(ShadowDimension, self).__init__(**kwargs)

        for question in dimension.questions:
            if not isinstance(question, ConcreteQuestion):
                question = question.concrete
            s_question = ShadowQuestion(question)
            self.questions.append(s_question)

    @property
    def concrete_id(self):
        if self._referenced_object is None:
            return None
        return self._referenced_object.id

    @property
    def concrete(self):
        if self._referenced_object is None:
            return None
        return self._referenced_object

    @property
    def reference_id(self):
        return self._referenced_object.reference_id

    @property
    def original_language(self) -> BabelLanguage:
        return self._referenced_object.original_language

    @property
    def name(self) -> str:
        return self._referenced_object.name

    @property
    def name_translations(self) -> Dict[str, str]:
        return self._referenced_object.name_translations
Ejemplo n.º 21
0
class Picture(db.Model):
    team_id = db.Column(db.Integer, db.ForeignKey('team.id'), primary_key=True)
    objective_id = db.Column(db.Integer,
                             db.ForeignKey('objective.id'),
                             primary_key=True)

    filename = db.Column(db.String, nullable=False)
    status = db.Column(db.Integer, nullable=False)

    objective = db.relationship('Objective',
                                backref=db.backref('teams',
                                                   cascade='all, delete'))

    def __repr__(self):
        return f'<Picture for {self.objective} by {self.team.name}, status={self.status}>'
Ejemplo n.º 22
0
class PropertyUpdatedTrackerEntry(TrackerEntry):
    """
    Stores the old and new values for a property of a certain
    survey item. Also stores a href to that item as well as the name of the
    item.
    """
    id = db.Column(db.Integer,
                   db.ForeignKey(TrackerEntry.id, ondelete='CASCADE'),
                   primary_key=True)

    # polymorphic config
    __tablename__ = 'property_updated_tracker_entry'
    __mapper_args__ = {'polymorphic_identity': __tablename__}

    # columns
    item_name = db.Column(db.String(50))
    property_name = db.Column(db.String(50))
    _values = db.Column(MUTABLE_HSTORE)

    # foreign keys
    item_id = db.Column(
        db.Integer,
        db.ForeignKey('survey_base.id', onupdate='CASCADE',
                      ondelete='CASCADE'))

    # relationships
    item = db.relationship('SurveyBase',
                           uselist=False,
                           foreign_keys=[item_id],
                           backref=backref('property_updated_tracker_entries',
                                           cascade='all, delete'))

    def __init__(self, dataclient: DataClient, item_name: str,
                 item: 'SurveyBase', property_name, previous_value, new_value,
                 **kwargs):
        super(PropertyUpdatedTrackerEntry, self).__init__(dataclient, **kwargs)
        self.item_name = ellipse(item_name, 50)
        self.item = item
        self.property_name = ellipse(property_name, 50)
        self._values = {'previous': str(previous_value), 'new': str(new_value)}

    @property
    def previous_value(self):
        return self._values['previous']

    @property
    def new_value(self):
        return self._values['new']
class BookCopy(db.Model):
    book_copy_id = db.Column(db.Integer, primary_key=True)
    book_id = db.Column(db.Integer,
                        db.ForeignKey('book.book_id'),
                        nullable=False)
    is_checked_out = db.Column(db.Boolean, nullable=False, default=False)

    def __repr__(self):
        return (
            "<BookCopy(book_copy_id='%s',book_id='%s',is_checked_out='%s'>" %
            (self.book_copy_id, self.book_id, self.is_checked_out))

    def to_dict(self):
        """
        Method to convert a book copy to a python dictionary data object
        :return: dict
        """
        print('Book Copy to_dict')
        copy_dict = {
            'book_copy_id': self.book_copy_id,
            'book_id': self.book_id,
            'is_checked_out': self.is_checked_out,
        }
        return copy_dict

    def update(self, **kwargs):
        """
        Method to update a book copy's attributes
        :param kwargs: A dict of valid key-value pairs
        :return: None
        """
        print('BookCopy.update()')
        for key, value in kwargs.items():
            setattr(self, key, value)
Ejemplo n.º 24
0
class Gratitude(db.Model):
    """Creating class for gratitude entries."""

    __tablename__ = "gratitudes"

    gratitude_id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    text = db.Column(db.Text, nullable=False)
    entry_id = db.Column(db.Integer,
                         db.ForeignKey('entries.entry_id'),
                         nullable=False)

    entry = db.relationship('Entry', backref='gratitudes')

    @classmethod
    def add_new_gratitude(cls, text, entry_id):
        """Adds new gratitude to the db. """

        gratitude = Gratitude(text=text, entry_id=entry_id)

        db.session.add(gratitude)
        db.session.commit()

        return gratitude

    @classmethod
    def get_gratitudes_by_entry(cls, entry_id):
        """Returns all gratitudes associated with a given entry."""

        return Gratitude.query.filter_by(entry_id=entry_id).all()
Ejemplo n.º 25
0
class Booking(db.Model):
    __tablename__ = 'bookings'
    
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.String(50), nullable=False)
    time = db.Column(db.String(50), nullable=False)
    price = db.Column(db.Integer, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    attraction_id = db.Column(db.Integer, db.ForeignKey('attractions.id'), nullable=False)
    
    def __init__(self, date, time, price, user_id, attraction_id):
        self.date = date
        self.time = time
        self.price = price
        self.user_id = user_id
        self.attraction_id = attraction_id
Ejemplo n.º 26
0
class Note(db.Model):
    note_title = db.Column(db.String, primary_key=True)
    note = db.Column(db.String, nullable=False)
    book_id = db.Column(db.Integer,
                        db.ForeignKey('book.book_id'),
                        nullable=False)

    def __repr__(self):
        return '<Note %r : %r %r>' % (self.note_title, self.note, self.book_id)

    def to_dict(self):
        """
        Method to convert a Note object to a dict object representation
        :return: dict representation of a Note
        """
        a_dict = {
            'note_title': self.note_title,
            'note': self.note,
            'book_id': self.book_id
        }

        return a_dict

    def update(self, **kwargs):
        """
        Method to update a Note's attributes
        :param kwargs: A dict of valid key-value pairs
        :return: None
        """
        for key, value in kwargs.items():
            setattr(self, key, value)
Ejemplo n.º 27
0
class Note(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String(60), nullable=False)
    notebook_id = db.Column(db.Integer,
                            db.ForeignKey("notebook.id"),
                            nullable=False)
    notebook = db.relationship("Notebook", back_populates="notes")
Ejemplo n.º 28
0
class ConcreteDimension(Dimension):
    id = db.Column(db.Integer, db.ForeignKey(Dimension.id), primary_key=True)

    __tablename__ = 'concrete_dimension'
    __mapper_args__ = {'polymorphic_identity': __tablename__}

    # columns
    name_translations = db.Column(MUTABLE_HSTORE)
    name = translation_hybrid(name_translations)
    original_language = db.Column(db.Enum(BabelLanguage), nullable=False)

    shadow = False

    def __init__(self, name: str, **kwargs):
        self.original_language = g._language
        super(ConcreteDimension, self).__init__(name=name, **kwargs)
        self.reference_id = SurveyBase.generate_reference_id(self)

    @staticmethod
    def from_shadow(shadow):
        d = ConcreteDimension("")
        d.name_translations = shadow.name_translations
        d.original_language = shadow.original_language
        d.randomize_question_order = shadow.randomize_question_order
        d.owners = shadow.owners
        d.reference_id = shadow.reference_id

        for s_question in shadow.questions:
            c_question = ConcreteQuestion.from_shadow(s_question)
            d.questions.append(c_question)

        return d
Ejemplo n.º 29
0
class ItemAddedTrackerEntry(TrackerEntry):
    """
    TrackerEntry that indicates that a new item has been added to a survey.
    """
    id = db.Column(db.Integer,
                   db.ForeignKey(TrackerEntry.id, ondelete='CASCADE'),
                   primary_key=True)

    # polymorphic config
    __tablename__ = 'item_added_tracker_entry'
    __mapper_args__ = {'polymorphic_identity': __tablename__}

    # columns
    parent_item_name = db.Column(db.String(50))
    added_item_name = db.Column(db.String(50))

    # foreign keys
    parent_item_id = db.Column(
        db.Integer,
        db.ForeignKey('survey_base.id', onupdate='CASCADE',
                      ondelete='CASCADE'))
    added_item_id = db.Column(
        db.Integer,
        db.ForeignKey('survey_base.id', onupdate='CASCADE',
                      ondelete='CASCADE'))

    # relationships
    parent_item = db.relationship('SurveyBase',
                                  uselist=False,
                                  foreign_keys=[parent_item_id],
                                  backref=backref(
                                      'item_added_parent_tracker_entries',
                                      cascade='all, delete'))
    added_item = db.relationship('SurveyBase',
                                 uselist=False,
                                 foreign_keys=[added_item_id],
                                 backref=backref('item_added_tracker_entries',
                                                 cascade='all, delete'))

    def __init__(self, dataclient, parent_item_name: str,
                 parent_item: 'SurveyBase', added_item_name: str,
                 added_item: 'SurveyBase', **kwargs):
        super(ItemAddedTrackerEntry, self).__init__(dataclient, **kwargs)
        self.parent_item_name = ellipse(parent_item_name, 50)
        self.added_item_name = ellipse(added_item_name, 50)
        self.parent_item = parent_item
        self.added_item = added_item
Ejemplo n.º 30
0
class Settlement(db.Model, TimestampMixin):
    __tablename__ = 'settlement'
    __table_args__ = {'sqlite_autoincrement': True}
    id = db.Column(db.BigInteger, primary_key=True)
    gift_code_id = db.Column(db.BigInteger,
                             db.ForeignKey('gift_code.id'),
                             nullable=False)
    transition = db.relationship('Transition')