def __recursive_object_hook__(o): def __regular_t2a__(p): return dict([(int(key), dict([(TimeSlot.__from_string__(timeslot), [Activity.__from_string__(activity) for activity in activities]) for timeslot, activities in timeslot2activites.iteritems()])) for key, timeslot2activites in p.iteritems()]) if isinstance(o, list): return [__recursive_object_hook__(value) for value in o] elif "__nephrologist__" in o: nephrologist = o["__nephrologist__"] id = int(nephrologist["id"]) if "id" in nephrologist else None name = str(nephrologist["name"].encode("latin-1")) if "name" in nephrologist else None activities = [Activity.__from_string__(flag) for flag in nephrologist["activities"] if "activities" in nephrologist] holidays = [__recursive_object_hook__(value) for value in nephrologist["holidays"] if "holidays" in nephrologist] preferences = __recursive_object_hook__(nephrologist["preferences"]) if "preferences" in nephrologist else None aversions = __recursive_object_hook__(nephrologist["aversions"]) if "aversions" in nephrologist else None counters = __recursive_object_hook__(nephrologist["initial_counters"]) if "initial_counters" in nephrologist else None return Nephrologist(id, name, activities, holidays, preferences, aversions, counters) elif "__date__" in o: return datetime.strptime(o["__date__"], "%Y-%m-%d").date() elif "__preferences__" in o: return Preferences(__regular_t2a__(o["__preferences__"])) elif "__aversions__" in o: return Aversions(__regular_t2a__(o["__aversions__"])) elif "__counter__" in o: return Counter(dict([(Activity.__from_string__(key), value) for key, value in o["__counter__"].iteritems()])) else: return o
def __init__(self, _id, _name, _activities=Activity.flags(), _holidays=None, _preferences=None, _aversions=None, _counters=None): if not _id: raise UserWarning("id can not be None.") elif not isinstance(_id, int): raise UserWarning("id must be of type {}".format(int)) self.id = _id if not _name: raise UserWarning("name can not be None.") elif not isinstance(_name, str): raise UserWarning("name must be of type {}".format(str)) self.name = _name if not _activities: raise UserWarning("activities can not be None.") elif not isinstance(_activities, list): raise UserWarning("activities must be of type {}".format(list)) # the activities the nephrologist can be allocated on self.activities = _activities if _activities else [Activity.NONE] if _holidays and not isinstance(_holidays, list): raise UserWarning("holidays should be of type {}".format(list)) self.holidays = _holidays if _holidays else [ ] # contains all personal off days (datetime) if _preferences and not isinstance(_preferences, Preferences): raise UserWarning( "preferences should be of type {}".format(Preferences)) # contains all personal preferences that bind a nephrologist to a TimeSlot and a particular activity self.preferences = _preferences if _preferences else Preferences() if _aversions and not isinstance(_aversions, dict): raise UserWarning( "aversions should be of type {}".format(Aversions)) # contains all personal aversions that a nephrologist has to a TimeSlot and a particular activity self.aversions = _aversions if _aversions else Aversions() if _counters and not isinstance(_counters, Counter): raise UserWarning("counters must be of type {}".format(Counter)) self.initial_counters = _counters if _counters else Counter() self.individual_counters = Counter() + self.initial_counters
def __init__(self, _id, _name, _activities=Activity.flags(), _holidays=None, _preferences=None, _aversions=None, _counters=None): if not _id: raise UserWarning("id can not be None.") elif not isinstance(_id, int): raise UserWarning("id must be of type {}".format(int)) self.id = _id if not _name: raise UserWarning("name can not be None.") elif not isinstance(_name, str): raise UserWarning("name must be of type {}".format(str)) self.name = _name if not _activities: raise UserWarning("activities can not be None.") elif not isinstance(_activities, list): raise UserWarning("activities must be of type {}".format(list)) # the activities the nephrologist can be allocated on self.activities = _activities if _activities else [Activity.NONE] if _holidays and not isinstance(_holidays, list): raise UserWarning("holidays should be of type {}".format(list)) self.holidays = _holidays if _holidays else [] # contains all personal off days (datetime) if _preferences and not isinstance(_preferences, Preferences): raise UserWarning("preferences should be of type {}".format(Preferences)) # contains all personal preferences that bind a nephrologist to a TimeSlot and a particular activity self.preferences = _preferences if _preferences else Preferences() if _aversions and not isinstance(_aversions, dict): raise UserWarning("aversions should be of type {}".format(Aversions)) # contains all personal aversions that a nephrologist has to a TimeSlot and a particular activity self.aversions = _aversions if _aversions else Aversions() if _counters and not isinstance(_counters, Counter): raise UserWarning("counters must be of type {}".format(Counter)) self.initial_counters = _counters if _counters else Counter() self.individual_counters = Counter() + self.initial_counters
def __regular_t2a__(p): return dict([(int(key), dict([(TimeSlot.__from_string__(timeslot), [Activity.__from_string__(activity) for activity in activities]) for timeslot, activities in timeslot2activites.iteritems()])) for key, timeslot2activites in p.iteritems()])