def users_view():
    """
    Users listing for dropdown consisting of user_id, name and image url. If user data can be found
    in USERS_XML_FILE, user's actual name is used and image_url is added. Otherwise, id is used and
    avatar_url is set to null.
    """
    data = get_data()
    users_data = get_user_data()

    named_users = []
    unnamed_users = []

    for i in data.keys():
        try:
            named_users.append({
                'user_id': i,
                'name': users_data[i]['name'],
            })
        except KeyError:
            unnamed_users.append({
                'user_id': i,
                'name': 'User {}'.format(str(i)),
            })
    named_users.sort(key=lambda user_name: user_name['name'],
                     cmp=locale.strcoll)
    # Users without names should be sorted by ID which is part of their 'names' like User 10.
    unnamed_users.sort(key=lambda user_id: int(user_id['name'].split()[1]))
    return named_users + unnamed_users
def get_user_avatar_url(user_id):
    """
    Fetches avatar url from USERS_XML_FILE for given user. 404 if its not found.
    """
    user_data = get_user_data()
    try:
        return user_data[int(user_id)]['avatar_url']
    except KeyError:
        abort(404)
 def test_get_user_data(self):
     """
     Test parsing of user XML file.
     """
     data = utils.get_user_data()
     self.assertIsInstance(data, dict)
     self.assertItemsEqual(data.keys(), [10, 11, ])
     self.assertIn('name', data[11])
     self.assertEqual(data[11]['name'], u'Nowak B.')
def users_view():
    """
    Users listing for dropdown.
    """
    data = get_data()
    users = get_user_data()
    return [
        {'user_id': i,
         'name': users[i]['name'] if i in users else 'User {0}'.format(str(i)),
         'avatar': users[i]['avatar'] if i in users else ''}
        for i in data.keys()
    ]
 def test_get_user_data(self):
     """
     Test parsing of user XML file.
     """
     data = utils.get_user_data()
     self.assertIsInstance(data, dict)
     self.assertItemsEqual(data.keys(), ['users', 'server'])
     self.assertDictEqual(data['users'][1], {
         u'id': 176,
         u'name': u'Adrian K.',
         u'avatar': u'/api/images/users/176'
     })
     self.assertEqual(data['server'], u'https://intranet.stxnext.pl:443')
def users_view():
    """
    Users listing for dropdown.
    """
    data = utils.get_data()
    users_info = utils.get_user_data()

    return_data = [
        {
            'user_id': user_id,
            'name': user_data['name'],
            'avatar': user_data['avatar']
        }
        for user_id, user_data in users_info.iteritems() if user_id in data
    ]

    return return_data
    def test_get_user_data(self):
        """
        Test get_user_data_method() extracts users from test_users.xml file.
        """
        expected_result = {
            10: {
                'avatar_url': '/api/images/users/10',
                'name': 'Maciej Z.'
            },
            12: {
                'avatar_url': '/api/images/users/12',
                'name': 'Patryk G.'
            },
            11: {
                'avatar_url': '/api/images/users/11',
                'name': 'Maciej D.'
            }
        }
        result = utils.get_user_data()

        self.assertEqual(expected_result, result)
    def test_get_user_data(self, mock_open):
        """
        Test test_get_user_data.
        """
        test_lines = u"""
<intranet>
    <server>
        <host>intranet.stxnext.pl</host>
        <port>443</port>
        <protocol>https</protocol>
    </server>
    <users>
        <user id="141">
            <avatar>/api/images/users/141</avatar>
            <name>John Travolta</name>
        </user>
        <user id="176">
            <avatar>/api/images/users/176</avatar>
            <name>Adrian Kruszewski</name>
        </user>
    </users>
</intranet>
"""
        mock_open.return_value.__enter__.return_value = StringIO(test_lines)
        data = utils.get_user_data()

        self.assertIsInstance(data, dict)
        self.assertItemsEqual(data.keys(), [141, 176])
        self.assertItemsEqual(data[141].get('name'), 'John Travolta')
        self.assertItemsEqual(data[176].get('name'), 'Adrian Kruszewski')
        self.assertItemsEqual(
            data[141].get('avatar'),
            'https://intranet.stxnext.pl/api/images/users/141'
        )
        self.assertItemsEqual(
            data[176].get('avatar'),
            'https://intranet.stxnext.pl/api/images/users/176'
        )
def users_api2_view():
    """
    Users listing for dropdown new api.
    """
    return get_user_data()