Changeset 96

Show
Ignore:
Timestamp:
04/04/08 03:41:12 (6 months ago)
Author:
njriley
Message:

Labels; auto-populate price; fix ordering and list display for trays.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sucrose/trunk/www/src/sucrose/machine/models.py

    r92 r96  
    1515                                       null=True, blank=True, editable=False) 
    1616    tray_slot_size = models.CharField(max_length=39, choices=SLOT_SIZE_CHOICES) 
    17     caffeine = models.IntegerField(null=True, blank=True) 
    18     calories = models.IntegerField(null=True, blank=True) 
    19     sugar = models.IntegerField(null=True, blank=True) 
    20     carbohydrates = models.IntegerField(null=True, blank=True) 
    21     fiber = models.IntegerField(null=True, blank=True) 
    22     sodium = models.IntegerField(null=True, blank=True) 
    23     fat = models.IntegerField(null=True, blank=True) 
    24     saturated_fat = models.IntegerField(null=True, blank=True) 
    25     protein = models.IntegerField(null=True, blank=True) 
    26     cholesterol = models.IntegerField(null=True, blank=True) 
     17    caffeine = models.IntegerField('caffeine (mg)', null=True, blank=True) 
     18    calories = models.IntegerField('Calories', null=True, blank=True) 
     19    sugar = models.IntegerField('sugar (g)', null=True, blank=True) 
     20    carbohydrates = models.IntegerField('carbohydrate (g)', null=True, blank=True) 
     21    fiber = models.IntegerField('fiber (g)', null=True, blank=True) 
     22    sodium = models.IntegerField('sodium (mg)', null=True, blank=True) 
     23    fat = models.IntegerField('fat (g)', null=True, blank=True) 
     24    saturated_fat = models.IntegerField('saturated fat (g)', null=True, blank=True) 
     25    protein = models.IntegerField('protein (g)', null=True, blank=True) 
     26    cholesterol = models.IntegerField('cholesterol (mg)', null=True, blank=True) 
    2727 
    2828    def __unicode__(self): 
     
    3131    class Meta: 
    3232        db_table = u'items' 
    33         ordering = ['name'] 
     33        ordering = ('name',) 
    3434 
    3535    class Admin: 
     
    4040            ('Nutrition Facts', {'fields': 
    4141                                 ('caffeine', 'calories', 
    42                                   'sugar', 'carbohydrates', 'fiber', 'sodium', 
    43                                   'fat', 'saturated_fat', 'protein', 
    44                                   'cholesterol')}), 
     42                                  'fat', 'saturated_fat', 'cholesterol', 
     43                                  'sodium', 'carbohydrates', 'fiber', 
     44                                  'sugar', 'protein', 
     45                                  )}), 
    4546            ) 
    4647 
     
    5253class Tray(models.Model): 
    5354    tray_id = models.AutoField(primary_key=True) 
    54     item = models.ForeignKey(Item, null=True, blank=True) 
     55    item = models.ForeignKey(Item, null=True, blank=True, 
     56                             help_text='If changed, price will be updated upon save.') 
    5557    machine_tray_id = models.IntegerField('tray', unique=True, editable=False) 
     58    # XXX tray_slot_size? tray_capacity? 
    5659    quantity = models.IntegerField() 
    5760    machine = models.CharField(unique=True, max_length=24, editable=False, 
     
    5962    cur_price = models.DecimalField('price', max_digits=4, decimal_places=2) 
    6063 
     64    def save(self): 
     65        # XXX hack, should be done with JavaScript in admin 
     66        if Tray.objects.get(tray_id=self.tray_id).item != self.item: 
     67            self.cur_price = self.item.price 
     68        super(Tray, self).save() 
     69 
    6170    def __unicode__(self): 
    6271        return '%s tray %d' % (self.get_machine_display(), 
    6372                               self.machine_tray_id) 
     73    __unicode__.short_description = 'Tray' 
    6474 
    6575    class Meta: 
    6676        db_table = u'trays' 
    67         ordering = ['machine_tray_id'] 
     77        ordering = ('machine', 'machine_tray_id') 
    6878 
    6979    class Admin: 
    70         # list_filter = ('machine',) 
    71         list_display = ('machine', 'machine_tray_id', 'item', 
    72                         'quantity', 'cur_price') 
    73         list_display_links = ('machine', 'machine_tray_id', 'item') 
     80        list_filter = ('machine',) 
     81        list_display = ('__unicode__', 'item', 'quantity', 'cur_price') 
     82        list_display_links = ('__unicode__', 'item') 
     83        ordering = ('machine_tray_id',) # admin only supports one