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
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
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
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
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
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()
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