summaryrefslogtreecommitdiff
path: root/app/unused_apps/garden/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/unused_apps/garden/models.py')
-rw-r--r--app/unused_apps/garden/models.py153
1 files changed, 153 insertions, 0 deletions
diff --git a/app/unused_apps/garden/models.py b/app/unused_apps/garden/models.py
new file mode 100644
index 0000000..56e8c30
--- /dev/null
+++ b/app/unused_apps/garden/models.py
@@ -0,0 +1,153 @@
+import datetime
+
+from django.contrib.gis.db import models
+
+from utils.util import render_images, markdown_to_html
+
+
+PLANT_FAMILY = (
+ (0, 'Tomatoes'),
+ (1, 'Cucumbers'),
+ (2, 'Watermelons'),
+ (3, 'Pumkins'),
+ (4, 'Cantelope'),
+ (5, 'Kale'),
+ (6, 'Okra'),
+ (7, 'Collards'),
+ (8, 'Arugula'),
+ (9, 'Butter Lettuce'),
+ (10, 'Basil'),
+ (11, 'Lemongrass'),
+ (12, 'Thyme'),
+ (13, 'Mint'),
+)
+
+
+class Plant(models.Model):
+ """
+ Model to hold Plant Definitions
+ """
+ name = models.CharField(max_length=200)
+ family = models.IntegerField(choices=PLANT_FAMILY, default=0)
+ scientific_name = models.CharField(max_length=200, null=True, blank=True)
+ edible = models.BooleanField(default=False)
+ date_created = models.DateTimeField(default=datetime.datetime.now)
+ growth_time = models.PositiveIntegerField()
+ germination_time = models.PositiveIntegerField()
+ seperation = models.PositiveIntegerField()
+ notes = models.TextField(null=True, blank=True)
+ CONDITIONS = (
+ (0, 'Direct Sun'),
+ (1, 'Part Sun'),
+ (2, 'Shade'),
+ )
+ conditions = models.IntegerField(choices=CONDITIONS, default=0)
+ PLANT_TYPE= (
+ (0, 'Vegetable'),
+ (1, 'Herb'),
+ (2, 'Berry'),
+ (3, 'Nut'),
+ )
+ conditions = models.IntegerField(choices=PLANT_TYPE, default=0)
+ organic = models.BooleanField(default=True)
+ heirloom = models.BooleanField(default=True)
+ annual = models.BooleanField(default=True)
+
+ class Meta:
+ ordering = ('-date_created',)
+ get_latest_by = 'date_created'
+
+ def __str__(self):
+ return self.name
+
+
+class Seed(models.Model):
+ plant = models.ForeignKey(Plant, on_delete=models.CASCADE)
+ brand = models.CharField(max_length=200)
+ date_created = models.DateTimeField(default=datetime.datetime.now)
+ estimated_growth_time = models.PositiveIntegerField()
+ estimated_germination_time = models.PositiveIntegerField()
+ organic = models.BooleanField(default=True)
+ notes = models.TextField(null=True, blank=True)
+
+ class Meta:
+ ordering = ('-date_created',)
+ get_latest_by = 'date_created'
+
+ def __str__(self):
+ return self.plant.name
+
+
+class Planting(models.Model):
+ plant = models.ForeignKey(Plant, on_delete=models.CASCADE)
+ number_of_plants = models.PositiveIntegerField()
+ seed = models.ForeignKey(Seed, on_delete=models.CASCADE, null=True, blank=True)
+ START_AREA = (
+ (0, 'Indoors'),
+ (1, 'Direct Sow'),
+ (2, 'Greenhouse'),
+ (2, 'Purchased Seedling'),
+ )
+ seed_start_area = models.IntegerField(choices=START_AREA, default=0)
+ date_seed_started = models.DateField(null=True, blank=True)
+ date_seed_sprouted = models.DateField(null=True, blank=True)
+ date_hardened_off = models.DateField(null=True, blank=True)
+ date_planted = models.DateField()
+ GARDEN_PLOT = (
+ (0, 'Far Plot Mound'),
+ (1, 'Far Plot ground'),
+ (2, 'Herb Plot ground'),
+ (2, 'Herb Plot bed'),
+ )
+ garden_area = models.IntegerField(choices=GARDEN_PLOT, default=0)
+ OUTCOME = (
+ (0, 'Unknown'),
+ (1, 'Success'),
+ (2, 'Moderate Success'),
+ (3, 'Fail'),
+ )
+ outcome = models.IntegerField(choices=OUTCOME, default=0)
+ notes = models.TextField(null=True, blank=True)
+
+ class Meta:
+ ordering = ('-date_seed_started',)
+ get_latest_by = 'date_seed_started'
+
+ def __str__(self):
+ return self.plant.name
+
+ @property
+ def get_previous_admin_url(self):
+ n = self.get_previous_by_pub_date()
+ return reverse('admin:%s_%s_change' %(self._meta.app_label, self._meta.model_name), args=[n.id] )
+
+ @property
+ def get_next_admin_url(self):
+ model = apps.get_model(app_label=self._meta.app_label, model_name=self._meta.model_name)
+ try:
+ return reverse('admin:%s_%s_change' %(self._meta.app_label, self._meta.model_name), args=[self.get_next_by_pub_date().pk] )
+ except model.DoesNotExist:
+ return ''
+
+
+ @property
+ def family(self):
+ return self.plant.get_family_display()
+
+
+ def save(self, *args, **kwargs):
+ created = self.pk is None
+ if not created:
+ md = render_images(self.notes)
+ self.body_html = markdown_to_html(md)
+ super(Planting, self).save(*args, **kwargs)
+
+
+class Guild(models.Model):
+ name = models.CharField(max_length=200, blank=True)
+ plant = models.ManyToManyField(Plant)
+ seperation = models.PositiveIntegerField()
+ notes = models.TextField(null=True, blank=True)
+
+ def __str__(self):
+ return self.name