Exemple #1
0
        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
Exemple #2
0
    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
Exemple #4
0
 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()])