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()