Beispiel #1
0
class Attempt(BaseModel):
    member = models.ReferenceField(Member)
    challenge = models.ReferenceField(Challenge)
    recorded_time_secs = models.IntegerField()
    activity_timestamp = models.TimeStampField()
    activity_id = models.IntegerField(blank=True)

    @staticmethod
    def add(effort, member, challenge):
        a = Attempt.objects.create(
            id=effort.id,
            member=member,
            challenge=challenge,
            recorded_time_secs=effort.elapsed_time.total_seconds(),
            activity_timestamp=effort.start_date_local,
            activity_id=effort.activity.id,
            audit_inserted=datetime.utcnow())
        a.save
        Activity.add(Activity.CHALLENGE_ATTEMPTED,
                     member_id=member.id,
                     challenge_id=challenge.id,
                     attempt_id=a.id)

        return a

    def jsonify(self):
        return {
            "id": self.id,
            "member_id": self.member.id,
            "challenge_id": self.challenge.id,
            "recorded_time_secs": self.recorded_time_secs,
            "activity_timestamp": self.activity_timestamp,
            "activity_id": self.activity_id
        }
Beispiel #2
0
class Challenge(BaseModel):
    date_from = models.TimeStampField()
    date_to = models.TimeStampField()
    segment_id = models.IntegerField()
    segment_name = models.TextField()
    audit_inserted = models.TimeStampField(datetime.now())

    @staticmethod
    def add(segment, year, month):
        """Takes a stravalib.model.Segment object and adds it as the target challenege to cover the given month of the given year"""
        _, end_day = calendar.monthrange(year, month)

        date_from = datetime.combine(date(year, month, 1), datetime.min.time())
        date_to = datetime.combine(date(year, month, end_day),
                                   datetime.min.time())

        c = Challenge.objects.create(segment_id=segment.id,
                                     segment_name=segment.name,
                                     date_from=date_from,
                                     date_to=date_to,
                                     audit_inserted=datetime.utcnow())
        c.save()
        Activity.add(Activity.CHALLENGE_ADDED, challenge_id=c.id)

        return c

    def jsonify(self):
        return {
            "id": self.id,
            "date_from": self.date_from,
            "date_to": self.date_to,
            "segment_id": self.segment_id,
            "segment_name": self.segment_name
        }
Beispiel #3
0
class Member(BaseModel):
    last_name = models.TextField()
    first_name = models.TextField()
    refresh_token = models.TextField(blank=True)
    access_token = models.TextField(blank=True)
    access_token_expiry = models.IntegerField(blank=True)

    @staticmethod
    def add(athlete,
            refresh_token=None,
            access_token=None,
            access_token_expiry=None):
        """Takes a stravalib.model.Athlete object and adds it """
        m = Member.objects.create(id=athlete.id,
                                  last_name=athlete.lastname,
                                  first_name=athlete.firstname,
                                  refresh_token=refresh_token,
                                  access_token=access_token,
                                  access_token_expiry=access_token_expiry,
                                  audit_inserted=datetime.utcnow())
        m.save()
        Handicap.add(m)
        Activity.add(Activity.MEMBER_CONNECTED, member_id=m.id)

        return m

    def update_handicap(self, new_handicap):
        Handicap.add(self, new_handicap)

    def jsonify(self):
        return {
            "id": self.id,
            "first_name": self.first_name,
            "last_name": self.last_name
        }
Beispiel #4
0
class Usage(models.Model):
    date = models.TextField()
    machine_id = models.TextField()
    name = models.TextField()
    times = models.ListField(default=list())
    total_time = models.IntegerField(default=0)

    class Meta:
        collection_name = USAGE_COLLECTION
Beispiel #5
0
class Handicap(BaseModel):
    member = models.ReferenceField(Member)
    handicap = models.IntegerField(default=1)

    @staticmethod
    def add(member, handicap=1):
        h = Handicap.objects.create(member=member,
                                    handicap=handicap,
                                    audit_inserted=datetime.utcnow())
        h.save()

        return h
Beispiel #6
0
class NewClass(NewBaseClass):
    age = models.IntegerField(default=0)
Beispiel #7
0
        class TestModelClass(models.Model):
            name = models.TextField()
            age = models.IntegerField()

            class Meta:
                collection_name = 'tmc'
Beispiel #8
0
 class TestModelClassParent(models.Model):
     name = models.TextField()
     age = models.IntegerField()
Beispiel #9
0
        class AClass(models.Model):
            name = models.TextField()
            age = models.IntegerField()

            class Meta:
                abstract = True
Beispiel #10
0
 class AClass(models.Model):
     name = models.TextField()
     age = models.IntegerField()