From d3beef74e68eda21e5128ef6dbd50088b1f45da8 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Sat, 4 Aug 2012 19:04:03 +0200 Subject: [PATCH] Add more models --- manager/admin.py | 10 ++++--- manager/models.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 4 deletions(-) diff --git a/manager/admin.py b/manager/admin.py index 5f620f47e..efcc9e543 100644 --- a/manager/admin.py +++ b/manager/admin.py @@ -12,7 +12,7 @@ # # You should have received a copy of the GNU Affero General Public License -from manager.models import Exercise, ExerciseComment, ExerciseCategory +from manager.models import Exercise, ExerciseComment, ExerciseCategory, Day, TrainingSchedule, Set from django.contrib import admin class ExerciseCommentInline(admin.TabularInline): #admin.StackedInline @@ -25,6 +25,10 @@ class ExerciseAdmin(admin.ModelAdmin): inlines = [ExerciseCommentInline] - + +admin.site.register(TrainingSchedule) +admin.site.register(Set) +admin.site.register(Day) + admin.site.register(Exercise, ExerciseAdmin) -admin.site.register(ExerciseCategory) \ No newline at end of file +admin.site.register(ExerciseCategory) diff --git a/manager/models.py b/manager/models.py index 95a62e18e..464e79d49 100644 --- a/manager/models.py +++ b/manager/models.py @@ -14,7 +14,39 @@ # along with Workout Manager. If not, see . from django.db import models +import calendar +class TrainingSchedule(models.Model): + """Model for a training schedule + """ + creation_date = models.DateField('creation date', auto_now_add=True) + comment = models.CharField(max_length=100) + + def __unicode__(self): + """Return a more human-readable representation + """ + return str(self.creation_date) + + +# Mhh... +DAYS_OF_WEEK_CHOICES = [] +cal = calendar.Calendar() +for i in cal.iterweekdays(): + DAYS_OF_WEEK_CHOICES.append((int(i), calendar.day_name[i])) + +class Day(models.Model): + """Model for a training day + """ + CHOICES = DAYS_OF_WEEK_CHOICES + + training = models.ForeignKey(TrainingSchedule) + description = models.CharField(max_length=100) + day = models.IntegerField(max_length=1, choices=CHOICES) + + def __unicode__(self): + """Return a more human-readable representation + """ + return "%s for TP %s" % (self.description, unicode(self.training)) class ExerciseCategory(models.Model): """Model for an exercise category @@ -25,11 +57,12 @@ class ExerciseCategory(models.Model): """Return a more human-readable representation """ return self.name - + class Exercise(models.Model): """Model for an exercise """ category = models.ForeignKey(ExerciseCategory) + name = models.CharField(max_length=200) def __unicode__(self): @@ -37,6 +70,40 @@ class Exercise(models.Model): """ return self.name +class Settings(models.Model): + """Settings for an exercise (weight, reps, etc.) + """ + + sets = models.ForeignKey('Set') + exercises = models.ForeignKey(Exercise) + weight = models.IntegerField() + reps = models.IntegerField() + comment = models.CharField(max_length=100) + + + #def __unicode__(self): + #"""Return a more human-readable representation + #""" + #return "settings for %s for TP %s" % (self.description, unicode(self.training)) + +class Set(models.Model): + """Model for a set of exercises + """ + + excersise_day = models.ForeignKey(Day) + exercises = models.ManyToManyField(Exercise, through=Settings) + order = models.IntegerField(max_length=1) + + def __unicode__(self): + """Return a more human-readable representation + """ + return "Set %d for %s" % (self.order, unicode(self.excersise_day)) + + + + + + class ExerciseComment(models.Model): """Model for an exercise comment """