예제 #1
0
class EventDance(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    dance_id = db.Column(db.Integer, db.ForeignKey('dance.id'))
    event_id = db.Column(db.Integer, db.ForeignKey('event.id'))

    def __init__(self, dance_id, event_id):
        self.dance_id = dance_id
        self.event_id = event_id
예제 #2
0
class EventTag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    tag_id = db.Column(db.Integer, db.ForeignKey('tag.id'))
    event_id = db.Column(db.Integer, db.ForeignKey('event.id'))

    def __init__(self, tag_id, event_id):
        self.tag_id = tag_id
        self.event_id = event_id
예제 #3
0
class EventPromoter(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    promo_id = db.Column(db.Integer, db.ForeignKey('promoter.id'))
    event_id = db.Column(db.Integer, db.ForeignKey('event.id'))

    def __init__(self, promo_id, event_id):
        self.promo_id = promo_id
        self.event_id = event_id
예제 #4
0
class UserPromoter(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    promo_id = db.Column(db.Integer, db.ForeignKey('promoter.id'))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __init__(self, promo_id, user_id):
        self.promo_id = promo_id
        self.user_id = user_id
예제 #5
0
class LogEntry(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    timestamp = db.Column(db.String(30))
    message = db.Column(db.String(140))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __init__(self, message):
        self.message = message
        self.timestamp = strftime("%d-%m-%Y %H:%M:%S")
        self.user_id = 1
예제 #6
0
class Venue(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60))
    latitude = db.Column(db.Float, default=51.508530)
    longitude = db.Column(db.Float, default=-0.076132)
    venueevents = db.relationship('Event', backref='venue', lazy='dynamic')

    def __init__(self, name, latitude=51.509, longitude=-0.076):
        self.name = name
        self.latitude = latitude
        self.longitude = longitude
예제 #7
0
class Dance(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60))
    possibletags = db.relationship('Tag', backref='dance', lazy='dynamic')

    # danceevents = db.relationship('Event', backref='dances', lazy='dynamic')

    def __init__(self, name):
        self.name = name

    def hastags(self):
        if self.possibletags.count():
            return True
        return False
예제 #8
0
class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    color = db.Column(db.Integer)
    dance_id = db.Column(db.Integer, db.ForeignKey('dance.id'))

    # taggedevents = db.relationship('Event', backref='tags', lazy='dynamic')

    def __init__(self, name, dance_id, color=Color.GREY):
        self.name = name
        self.color = color.value
        self.dance_id = dance_id

    def style(self):
        color = Color(self.color)
        return "tagged tag-%s" % color.name.lower()
예제 #9
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(64), unique=True)
    _password = db.Column(db.String(128))
    email = db.Column('email', db.String(50), unique=True, index=True)
    registered_on = db.Column('registered_on', db.DateTime)
    active = db.Column('active', db.Boolean)
    is_promoter = db.Column('is_promoter', db.Boolean, default=False)
    is_admin = db.Column('is_admin', db.Boolean, default=False)
    promotesfor = relationship("Promoter",
                               secondary=UserPromoter.__table__,
                               backref="promoterusers")

    def __init__(self,
                 username="******",
                 password="******",
                 email="default",
                 is_admin=False,
                 is_promoter=False):
        self.username = username
        self.password = password
        self.email = email
        self.registered_on = datetime.datetime.utcnow()
        self.active = True
        self.is_admin = is_admin
        self.is_promoter = is_promoter

    @hybrid_property
    def password(self):
        return self._password

    @password.setter
    def _set_password(self, plaintext):
        self._password = bcrypt.generate_password_hash(plaintext)

    def is_correct_password(self, plaintext):
        return bcrypt.check_password_hash(self._password, plaintext)

    def get_id(self):
        return str(self.id)

    def is_active(self):
        """True, as all users are active. unless theyve been deactivated"""
        return self.active

    def is_authenticated(self):
        """Return True if the user is authenticated."""
        return True  #self.authenticated

    def is_anonymous(self):
        """False, as anonymous users aren't supported."""
        return False

    def is_admin_user(self):
        return self.is_admin

    def is_promoter_user(self):
        return self.is_promoter

    def is_valid_promoter_for(self, event):
        for p in self.promotesfor:
            if p in event.promoters:
                return True
        return False

    def __repr__(self):
        return '<User %r>' % (self.username)
예제 #10
0
class Promoter(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60))

    def __init__(self, name):
        self.name = name
예제 #11
0
class Event(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(70))
    description = db.Column(db.Text)
    status = db.Column(db.Integer)

    venue_id = db.Column(db.Integer, db.ForeignKey('venue.id'))

    startat = db.Column(db.Time)
    endat = db.Column(db.Time)
    date = db.Column(db.Date)
    day = db.Column(db.Integer)

    tags = relationship("Tag",
                        secondary=EventTag.__table__,
                        backref="taggedevents")
    promoters = relationship("Promoter",
                             secondary=EventPromoter.__table__,
                             backref="promoterevents")
    dances = relationship("Dance",
                          secondary=EventDance.__table__,
                          backref="danceevents")

    flyerlink = db.Column(db.String(100))

    def get_next_date(self):
        if self.status == 1:
            return self.date
        elif self.status == 2:
            return self.day
        else:
            return self.date

    def __init__(self,
                 title,
                 venue_id,
                 description,
                 startat,
                 endat,
                 day=1,
                 status=1,
                 date=datetime.datetime.utcnow().date()):
        self.title = title
        self.description = description
        self.status = Status.ONE_OFF.value
        self.venue_id = venue_id
        self.startat = startat
        self.endat = endat
        self.day = day
        self.date = date
        self.status = status

    def getNextDate(self):
        if self.status == 1:
            return self.date
        elif self.status == 2:

            today = datetime.datetime.today().weekday() + 1
            inc = (self.day - today) % 7
            nextdate = datetime.datetime.utcnow() + datetime.timedelta(
                days=inc)
            return nextdate.date()
        else:
            return self.date

    def setFlyerLink(self, file):
        msg = ''
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            msg = ('No selected file')
            # return redirect(request.url)
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            if not os.path.exists(
                    os.path.join(app.config['UPLOAD_FOLDER'], str(self.id))):
                os.makedirs(
                    os.path.join(app.config['UPLOAD_FOLDER'], str(self.id)))
            file.save(
                os.path.join(app.config['UPLOAD_FOLDER'], str(self.id),
                             filename))
            # return redirect(url_for('uploaded_file',
            #                         filename=filename))
            self.flyerlink = os.path.join(app.config['SERVE_FOLDER'],
                                          str(self.id), filename)
        return msg