Ejemplo n.º 1
0
class HoursField(models.TextField):
    description = "List of HoursListings"
    __metaclass__ = models.SubfieldBase

    def __init__(self, *args, **kwargs):
        self.pickler = CSVPickler()
        super(HoursField, self).__init__(*args, **kwargs)

    def to_python(self, value):
        value = super(HoursField, self).to_python(value)
        if isinstance(value, list) or value is None:
            return value
        return [HoursListing(*pair) for pair in self.pickler.from_csv(value)]

    def get_prep_value(self, value):
        if value is None:
            prepped = value
        else:
            tuples = [(v.days.strip(), v.hours.strip()) for v in value]
            prepped = self.pickler.to_csv(tuples)
        return super(HoursField, self).get_prep_value(prepped)

    # TODO: do a custom widget/field for this
    def formfield(self, **kwargs):
        return super(HoursField, self).formfield(**kwargs)
Ejemplo n.º 2
0
class Parking(ViewModel):
    '''
    Object to handle parking options.
    '''
    choices = (('street', 'Street'),
               ('lot', 'Lot'),
               ('garage', 'Garage'),
               ('valet', 'Valet'))

    def __init__(self):
        self.parking_options = []
        self.pickler = CSVPickler()

    def add_option(self, option):
        if option not in [c[0] for c in Parking.choices]:
            raise ValueError('Invalid parking option')
        self.parking_options.append(option)

    def to_data(self):
        choice_map = dict(Parking.choices)
        return [choice_map[option_key] for option_key in self.parking_options]

    @classmethod
    def deserialize(cls, data):
        inst = Parking()
        inst.parking_options = [row[0] for row in inst.pickler.from_csv(data)]
        return inst

    def serialize(self):
        return self.pickler.to_csv([[opt] for opt in self.parking_options])

    def __str__(self):
        return self.serialize()
Ejemplo n.º 3
0
 def __init__(self):
     self.parking_options = []
     self.pickler = CSVPickler()
Ejemplo n.º 4
0
 def __init__(self, *args, **kwargs):
     self.pickler = CSVPickler()
     super(HoursField, self).__init__(*args, **kwargs)