Exemple #1
0
class Project(db.Document):
    project = db.StringField(verbose_name="Project",
                             max_length=255,
                             unique=True,
                             required=True)
    description = db.StringField(verbose_name="Description")
    dateofcreation = db.DateTimeField(default=datetime.datetime.now)
    url = db.StringField(max_length=255, unique=True, required=True)
    tasks = db.ListField(db.EmbeddedDocumentField('Task'))

    @property
    def completed(self):
        projectDetails = Project.objects().get(url=self.url)
        count = 0
        for i in projectDetails.tasks:
            if i.completed == True:
                count += 1
        return count

    @property
    def remaining(self):
        projectDetails = Project.objects().get(url=self.url)
        count = 0
        for i in projectDetails.tasks:
            if i.completed == False:
                count += 1
        return count
Exemple #2
0
class Show(db.Document):
    slug = db.StringField(required=True)
    title = db.StringField(required=True)
    artists_slug = db.ListField(StringField())
    attendance_count = db.IntField(min_value=0, required=False, default=0)
    cover_image = db.StringField(required=False)
    description = db.StringField(required=False)
    datetime_usa = db.StringField(required=False)
    location = db.ReferenceField(Location, required=False, dbref=False)
    website = db.StringField(required=False)

    artists_list = None

    @property
    def artists(self):
        if not self.artists_list is None:
            return self.artists_list
        return Band.objects.filter(slug__in=self.artists_slug)

    @property
    def datetime(self):
        return datetime.strftime(
            datetime.strptime(self.datetime_usa[:19], "%Y-%m-%d %H:%M:%S"),
            '%d/%m')

    def __eq__(self, other):
        return self.slug == other.slug

    def __unicode__(self):
        return self.title
Exemple #3
0
class User(UserMixin, db.Document):
    meta = {"collection": "users"}
    id = db.StringField(default=lambda: str(uuid.uuid4()), primary_key=True)

    active = db.BooleanField(default=True)

    # User authentication information
    email = db.EmailField()
    password = db.StringField()

    # User information
    username = db.StringField(default="")

    # User image
    image = db.StringField(default="default.jpg")

    # Relationships
    posts = db.ListField(db.StringField(), default=[])

    def get_reset_token(self, expires_sec=1800):
        s = Serializer(app.config["SECRET_KEY"], expires_sec)
        return s.dumps({"user_id": self.id}).decode("utf-8")

    @staticmethod
    def verify_reset_token(token):
        s = Serializer(app.config["SECRET_KEY"])
        try:
            user_id = s.loads(token)["user_id"]
        except:
            return None
        return User.objects.get(id=user_id)
Exemple #4
0
class Question(db.Document):
    slug = db.StringField(required=True)
    question = db.StringField(required=True)
    answers = db.ListField(EmbeddedDocumentField(Answer))

    def __eq__(self, other):
        return self.slug == other.slug

    def __unicode__(self):
        return self.question
Exemple #5
0
class Band(db.Document):
    slug = db.StringField(required=True)
    name = db.StringField(required=True)
    aliases = db.ListField(StringField(required=True))
    users = db.ListField(ReferenceField(User, dbref=False))
    shows = db.ListField(ReferenceField(Show, dbref=False))
    musicians = db.ListField(ReferenceField(User, dbref=False))
    products = db.ListField(ReferenceField(Product, dbref=False))
    photo_url = db.StringField(required=False)
    tags_list = db.ListField(StringField())
    similares_slug = db.ListField(StringField())
    history_content = db.StringField(required=False)

    @property
    def similares(self):
        if len(self.similares_slug) == 0:
            self.update_data()
        return Band.objects.filter(slug__in=self.similares_slug)

    @property
    def tags(self):
        if len(self.tags_list) == 0:
            self.update_data()
        return self.tags_list

    @property
    def photo(self):
        if not self.photo_url:
            self.update_data()
        return self.photo_url

    @property
    def history(self):
        if not self.history_content:
            self.update_data()
        read_more_on_position = self.history_content.find("Read more")
        if read_more_on_position == -1:
            return self.history_content.strip()
        return self.history_content[:read_more_on_position].strip()

    def update_data(self):
        lastfm_module = get_lastfm_module()
        controller = get_controllers_module()

        band_data = lastfm_module.get_band_data(band=self)
        self.photo_url = band_data["image"][3]['#text']

        if type(band_data["tags"]) is dict:
            tags = band_data["tags"]["tag"]
            if not type(tags) is list:
                tags = [tags]

            self.tags_list = [tag["name"] for tag in tags]

        if type(band_data["similar"]) is dict:
            similares = band_data["similar"]["artist"]
            if not type(similares) is list:
                similares = [similares]

            for similar_band in similares:
                band = controller.get_or_create_band(
                    {"name": similar_band["name"]})
                self.similares_slug.append(band.slug)

        self.history_content = re.sub('<[^>]*>', '',
                                      band_data["bio"]["content"])

        self.save()

    def timeline_as_dict(self):
        return {
            "headline":
            unicode(self.name),
            "type":
            "default",
            "text":
            u"<p>%s</p>" % self.history,
            "asset": {
                "media": self.photo
            },
            "date": [{
                "startDate":
                "%s" % str(datetime.now().date()).replace("-", ","),
                "headline":
                "Contribua",
                "text":
                u"<p>Clique no botão acima escrito 'Contribua com a timeline' e escreva os acontecimentos que você mais gosta sobre a banda.</p>",
                "tag":
                u"%s, Contribua" % self.name,
                "classname":
                "contribua",
                "asset": {
                    "media": self.photo
                }
            }]
        }

    def __eq__(self, other):
        return self.slug == other.slug

    def __unicode__(self):
        return self.name
Exemple #6
0
class Prediction(db.Document):
    meta = {'collection': 'predictions'}
    predictionResults = db.ListField(required=True)
    rawPredictionResults = db.ListField(required=True)
    date = db.DateTimeField(required=True)