Esempio n. 1
0
    def __init__(self, priority_size=100, priority_init=None, replace=True):
        # Experience_ID to Priority_ID (the node number in Heap) mapping
        self.e2p = {}
        # Priority_ID (the node number in Heap) to Experience_ID mapping
        self.p2e = {}
        # If the node should be replaced when inserting
        self.replace = replace

        if priority_init is None:
            self.priority_queue = {}
            self.size = 0
            self.max_size = priority_size
        else:
            # not yet tested
            self.priority_queue = priority_init
            self.size = len(self.priority_queue)
            self.max_size = None or self.size

            # map(func, list) returns a list after applying the function to all the elements
            # The following is a list of (priority_IDs, experience_IDs)
            experience_list = list(
                map(lambda x: self.priority_queue[x], self.priority_queue))
            # Create the node_number --> Experience_ID and Experience_ID --> node_number mapping
            self.p2e = utility.list_to_dict(experience_list)
            self.e2p = utility.exchange_key_value(self.p2e)
            for i in range(int(self.size / 2), -1, -1):
                self.down_heap(i)
Esempio n. 2
0
    def reload(self):
        # not yet test
        self.priority_queue = priority_init
        self.size = len(self.priority_queue)
        self.max_size = None or self.size

        experience_list = list(
            map(lambda x: self.priority_queue[x], self.priority_queue))
        self.p2e = utility.list_to_dict(experience_list)
        self.e2p = utility.exchange_key_value(self.p2e)
        for i in range(int(self.size / 2), -1, -1):
            self.down_heap(i)
Esempio n. 3
0
    def _set_mc_objs(self):
        '''Download all the necessary Mailchimp Object lists.'''
        def _call(clss, url_fnc):
            return mc_objs_api_call(clss,
                                    url_fnc(self.data_center, self.list_id),
                                    self.api_key)

        self.member_list = _call(Member, get_members_url)
        self.merge_field_dict = list_to_dict(
            _call(MergeField, get_merge_fields_url), 'tag')
        self.interest_category_list = _call(InterestCategory,
                                            get_interest_categories_url)

        self.interest_dict = {}
        for category in self.interest_category_list:
            self.interest_dict[category['id']] = mc_objs_api_call(
                Interest,
                get_interests_url(self.data_center, self.list_id,
                                  category['id']), self.api_key)
    def __init__(self, priority_size=100, priority_init=None, replace=True):
        self.e2p = {}
        self.p2e = {}
        self.replace = replace

        if priority_init is None:
            self.priority_queue = {}
            self.size = 0
            self.max_size = priority_size
        else:
            # not yet test
            self.priority_queue = priority_init
            self.size = len(self.priority_queue)
            self.max_size = None or self.size

            experience_list = list(map(lambda x: self.priority_queue[x], self.priority_queue))
            self.p2e = utility.list_to_dict(experience_list)
            self.e2p = utility.exchange_key_value(self.p2e)
            for i in range(int(self.size / 2), -1, -1):
                self.down_heap(i)
    def __init__(self, priority_size=100, priority_init=None, replace=True):
        self.e2p = {}
        self.p2e = {}
        self.replace = replace

        if priority_init is None:
            self.priority_queue = {}
            self.size = 0
            self.max_size = priority_size
        else:
            # not yet test
            self.priority_queue = priority_init
            self.size = len(self.priority_queue)
            self.max_size = None or self.size

            experience_list = list(map(lambda x: self.priority_queue[x], self.priority_queue))
            self.p2e = utility.list_to_dict(experience_list)
            self.e2p = utility.exchange_key_value(self.p2e)
            for i in range(int(self.size / 2), -1, -1):
                self.down_heap(i)
Esempio n. 6
0
    def get_table_dict(self):
        '''
        Return the table as a list of dicts, where "fields" is a dict of
        fields and each field is represented as a string.
        '''

        self.interest_dict_dict = {}
        for k, dict_ in self.interest_dict.items():
            self.interest_dict_dict[k] = list_to_dict(dict_, 'id')

        table = []
        for member in self.member_list:
            fields = {}
            for field in ['email_address', 'status']:
                fields[field] = member[field]

            for category in self.interest_category_list:
                interest_dict = self.interest_dict_dict[category['id']]
                interest_strings = []
                for id_, member_has_interest in member['interests'].items():
                    if member_has_interest:
                        interest = interest_dict.get(id_)
                        if interest is not None:
                            interest_strings.append(interest['name'])
                fields[category['title']] = (', ').join(interest_strings)

            for tag, merge_field in self.merge_field_dict.items():
                merge_field_type = merge_field['type']
                field_value = member['merge_field_dict'][tag]
                fields[tag] = get_display_repr(field_value, merge_field_type,
                                               self.country_dict)

            table.append({
                'fields': fields,
                'profile_link': self._make_edit_link(member['web_id']),
                'id': member['id']
            })

        return table