Exemple #1
0
class Conferences(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    acronym = db.Column(db.String(50))
    name = db.Column(db.String(50))
    city = db.Column(db.String(50))
    country = db.Column(db.String(50))
    venue = db.Column(db.String(50))
    start_date = db.Column(db.Date())
    end_date = db.Column(db.Date())

    def set_fields(self, fields):
        self.acronym = fields.get('acronym')
        self.name = fields.get('name')
        self.city = fields.get('city')
        self.country = fields.get('country')
        self.venue = fields.get('venue')
        self.start_date = datetime.datetime.strptime(
            fields.get('start_date'),
            "%d/%m/%Y").date() if fields.get('start_date') else None
        self.end_date = datetime.datetime.strptime(
            fields.get('end_date'),
            "%d/%m/%Y").date() if fields.get('end_date') else None

    def serialize(self):
        return dict(id=self.id,
                    acronym=self.acronym,
                    name=self.name,
                    city=self.city,
                    country=self.country,
                    venue=self.venue,
                    start_date=self.start_date.strftime('%d/%m/%Y')
                    if self.start_date else None,
                    end_date=self.end_date.strftime('%d/%m/%Y')
                    if self.end_date else None)
class Users(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20))
    email = db.Column(db.String(50), unique=True)
    password = db.Column(db.String(50))
    name = db.Column(db.String(250))
    birth_date = db.Column(db.Date())
    gender = db.Column(db.String(1))
    address = db.Column(db.String(250))
    push_notification_token = db.Column(db.Text(), nullable=True)
    type = db.Column(db.Integer, db.ForeignKey('user_type.id'))
    program_id = db.Column(db.Integer,
                           db.ForeignKey('program.id'),
                           nullable=True)
    image_path = db.Column(db.Text(), nullable=True)
    course_sections = db.relationship('CourseSectionStudents',
                                      cascade="save-update, merge, delete")

    def set_fields(self, fields):
        self.username = fields.get('username')
        self.email = fields.get('email')
        self.password = self.password if self.password else fields.get(
            'password')
        self.name = fields.get('name')
        self.gender = fields.get('gender')
        self.address = fields.get('address')
        self.birth_date = datetime.datetime.strptime(
            fields.get('birth_date'),
            "%m-%d-%Y").date() if fields.get('birth_date') else None
        self.program_id = fields.get('program_id')
        self.type = self.type if self.type else fields.get('type')

    def save_image(self, file):
        file_name, _format = str(file.filename).rsplit('.', 1)
        user_name, domain = str(self.email).split('@', maxsplit=1)

        if not _format in settings.ALLOWED_EXTENSIONS:
            _format = 'jpg'

        files = {'image_file': file}
        headers = {"enctype": "multipart/form-data"}

        r = requests.post(
            'http://eliakimdjango.pythonanywhere.com/save_profile_image',
            files={
                'file':
                (user_name + str(random.randint(1000, 10000)) + '.' + _format,
                 file, headers, {
                     'Expires': '0'
                 })
            },
            data={'old_file_path': self.image_path})
        # r = requests.post('http://127.0.0.1:2000/save_profile_image',
        #                   files={'file': (self.username + str(random.randint(1000, 10000)) + '.' + _format, file,
        #                                   headers, {'Expires': '0'})},
        #                   data={'old_file_path': self.image_path})
        if r.status_code == 200:
            self.image_path = r.json()['result']
            return True
class StudentAttendance(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    section_time_id = db.Column(db.Integer, db.ForeignKey('section_times.id'))
    course_section_student_id = db.Column(
        db.Integer, db.ForeignKey('course_section_students.id'))
    status = db.Column(db.String(1))
    section_time_date = db.Column(db.Date())
    course_section_student = db.relationship("CourseSectionStudents")
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    first_name = db.Column(db.String(20))
    last_name = db.Column(db.String(20))
    gender = db.Column(db.String(20), nullable=False)
    birth_date = db.Column(db.Date())
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    posts = db.relationship('Posts', backref='traveler', lazy='dynamic')
    followed = db.relationship('Follow', foreign_keys=[Follow.follower_id], backref=db.backref('follower', lazy='joined'),
                               lazy='dynamic', cascade='all, delete-orphan')
    followers = db.relationship('Follow',
                                foreign_keys=[Follow.followed_id],
                                backref=db.backref('followed', lazy='joined'),
                                lazy='dynamic',
                                cascade='all, delete-orphan')
    subscribes = db.relationship('Subscribe', foreign_keys=[Subscribe.user_id], backref=db.backref('subscriber', lazy='joined'),
                               lazy='dynamic', cascade='all, delete-orphan')
    notifications = db.relationship('Notification', foreign_keys=[Notification.user_id], backref=db.backref('user', lazy='joined'),
                               lazy='dynamic', cascade='all, delete-orphan')
    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"

    def follow(self, user):
        if not self.is_following(user):
            f = Follow(follower=self, followed=user)
            db.session.add(f)

    def unfollow(self, user):
        f = self.followed.filter_by(followed_id=user.id).first()
        if f:
            db.session.delete(f)

    def is_following(self, user):
        if user.id is None:
            return False

        return self.followed.filter_by(
            followed_id=user.id).first() is not None

    def is_followed_by(self, user):
        if user.id is None:
            return False

        return self.followers.filter_by(
            follower_id=user.id).first() is not None
Exemple #5
0
class CureCenterProfile(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    member_id = db.Column(db.Integer,
                          db.ForeignKey('member.id'),
                          nullable=False)
    member_name = db.relationship('Member', uselist=False, lazy=True)
    nick_name = db.Column(db.String(30))
    suffix = db.Column(db.String(30))
    birthday = db.Column(db.Date())
    group_id = db.Column(db.Integer, db.ForeignKey('group.id'), nullable=False)
    group = db.relationship('Group',
                            backref='member_group',
                            uselist=False,
                            lazy=True)
    is_internal = db.Column(db.Boolean)
    is_qura_funded = db.Column(db.Boolean)
    image_url = db.Column(db.String(120))
    onyen = db.Column(db.String(30))
    staff_designation = db.Column(db.String(30))
    positions = db.relationship('Position', backref='member', lazy=True)

    def __repr__(self):
        return f"<CureCenterProfile(member='{self.member_name}')>"
Exemple #6
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, unique=True, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    first_name = db.Column(db.String(20))
    last_name = db.Column(db.String(20))
    gender = db.Column(db.String(20))
    birth_date = db.Column(db.Date())
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    image_file = db.Column(db.String(30))
    bio = db.Column(db.String(240))
    travels = db.relationship('Travel',
                              backref='traveler',
                              lazy='dynamic',
                              cascade='all, delete-orphan',
                              passive_deletes=True)
    followed = db.relationship('Follow',
                               foreign_keys=[Follow.follower_id],
                               backref=db.backref('follower', lazy='joined'),
                               lazy='dynamic',
                               cascade='all, delete-orphan',
                               passive_deletes=True)
    followers = db.relationship('Follow',
                                foreign_keys=[Follow.followed_id],
                                backref=db.backref('followed', lazy='joined'),
                                lazy='dynamic',
                                cascade='all, delete-orphan',
                                passive_deletes=True)
    subscribed_travels = db.relationship('Subscribe',
                                         backref=db.backref('subscriber',
                                                            lazy='joined'),
                                         lazy='dynamic',
                                         cascade='all, delete-orphan',
                                         passive_deletes=True)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"

    def to_json(self):
        json_user = {
            'id': self.id,
            'username': self.username,
            'followers': len(self.followers.all()),
            'followed': len(self.followed.all()),
            'subscribed_travels': len(self.subscribed_travels.all()),
            'bio': self.bio,
            'first_name': self.first_name,
            'last_name': self.last_name
        }
        return json_user

    def get_posts_as_list(self):
        userPosts = [i.to_json() for i in self.travels]
        return userPosts

    def get_posts_as_list_with_sub(self, other_user):
        userPosts = [
            i.to_json_with_sub_check(other_user) for i in self.travels
        ]
        return userPosts

    def getfollowers(self):
        userfollowers = [i.to_json() for i in self.followers]
        return userfollowers

    def getfollowings(self):
        userfollowed = [i.to_json() for i in self.followed]
        return userfollowed
Exemple #7
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    first_name = db.Column(db.String(20))
    last_name = db.Column(db.String(20))
    gender = db.Column(db.String(20), nullable=False)
    birth_date = db.Column(db.Date())
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    image_file = db.Column(db.String(20),
                           nullable=False,
                           default='default.jpg')
    travels = db.relationship('Travel',
                              backref='traveler',
                              lazy='dynamic',
                              cascade='all, delete-orphan')
    followed = db.relationship('Follow',
                               foreign_keys=[Follow.follower_id],
                               backref=db.backref('follower', lazy='joined'),
                               lazy='dynamic',
                               cascade='all, delete-orphan')

    followers = db.relationship('Follow',
                                foreign_keys=[Follow.followed_id],
                                backref=db.backref('followed', lazy='joined'),
                                lazy='dynamic',
                                cascade='all, delete-orphan')
    subcribed_posts = db.relationship('Subscriptions',
                                      backref='subcribed_posts',
                                      lazy='dynamic',
                                      cascade='all, delete-orphan')
    notifications = db.relationship('Notifications',
                                    backref='notifications',
                                    lazy='dynamic',
                                    cascade='all, delete-orphan')

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"

    def update(self, data):
        for attr in data:
            setattr(self, attr, data[attr])
        db.session.commit()

    def follow(self, user):
        if not self.is_following(user):
            f = Follow(follower=self, followed=user)
            db.session.add(f)
            db.session.commit()

    def unfollow(self, user):
        f = self.followed.filter_by(followed_id=user.id).first()
        if f:
            db.session.delete(f)
            db.session.commit()

    def is_following(self, user):
        if user.id is None:
            return False
        return self.followed.filter_by(followed_id=user.id).first() is not None

    def is_followed_by(self, user):
        if user.id is None:
            return False
        return self.followers.filter_by(
            follower_id=user.id).first() is not None

# def get_followers(self):
#    User.query.join(User.followers).filter_by(followed_id=self.id).all()

    def is_subscribed(self, post):
        if post.id is None:
            return False
        return self.subcribed_posts.filter_by(
            post_id=post.id).first() is not None

    def subscribe(self, post):
        if not self.is_subscribed(post):
            f = Subscriptions(user_id=self.id, post_id=post.id)
            db.session.add(f)
            db.session.commit()

    def unsubscribe(self, post):
        found_post = self.subcribed_posts.filter_by(post_id=post.id).first()
        if found_post:
            db.session.delete(found_post)
            db.session.commit()

    '''
    def show_notification(self, notification):
        found_notification = self.notifications.filter_by(
            notification_id = notification.notification_id).first()
        if found_notification.showed:
            Notifications.update().where(
                notification_id == found_notification.notification_id).values(showed=True)
    '''

    def delete_notification(self, notification):
        found_notification = self.notifications.filter_by(
            notification_id=notification.notification_id).first()
        if found_notification:
            db.session.delete(found_notification)
            db.session.commit()