def presence_top_5_users_monthly_view(month): # pylint: disable=invalid-name """ Return 5 users from top of mean presence by month. """ months = calendar.month_name[1:] if month not in months: abort(404) data_xml = get_data_xml() data = get_data() result = [] for user_id in data_xml: result.append( { 'avatar': data_xml[user_id]['avatar'], 'user_id': user_id, 'name': data_xml[user_id]['name'], 'mean': mean_by_month( data.get(user_id, []) )[months.index(month)], } ) return sorted( result, key=lambda sort_by: sort_by['mean'], reverse=True )[:5]
def test_get_data_xml(self): """ Test parsing of XML file. """ data = utils.get_data_xml() self.assertIsInstance(data, dict) self.assertItemsEqual(data.keys(), [10, 12, 15]) self.assertEqual(data[10]['name'], 'John Doe')
def test_memoize(self): """ Test memorize data and updating if expired. """ utils.get_data() self.assertIn('get_data', utils.CACHE) self.assertIn('value', utils.CACHE['get_data']) self.assertIn('time', utils.CACHE['get_data']) utils.CACHE['get_data']['time'] = 0 utils.get_data() self.assertNotEqual(utils.CACHE['get_data']['time'], 0) utils.get_data_xml() self.assertEqual(len(utils.CACHE), 2) self.assertIn('get_data_xml', utils.CACHE) future_time = tm() + 100 utils.CACHE['get_data'] = {'time': future_time, 'value': 'test'} utils.get_data() self.assertEqual(utils.CACHE['get_data']['value'], 'test')
def test_get_data_xml(self): """ Test parsing of XML file. """ data = utils.get_data_xml() self.assertIsInstance(data, dict) self.assertItemsEqual(data.keys(), [10, 11, 176, 170, 26, 141]) self.assertItemsEqual(data[26].keys(), ['avatar', 'name']) self.assertTrue(data[26]['avatar'].startswith('https://host:443/')) self.assertEqual(data[176]['name'], 'Adrian K.')
def user_image_view(user_id): """ Return avatar value for selected user. """ data_xml = get_data_xml() if user_id not in data_xml: log.debug('User %s not found!', user_id) abort(404) return data_xml[user_id]['avatar']
def users_view(): """ Users listing for dropdown. """ data_xml = get_data_xml() return [ { 'user_id': user_id, 'name': data_xml[user_id]['name'], 'avatar': data_xml[user_id]['avatar'] } for user_id in data_xml]
def users_view(): """ Users listing for dropdown. """ locale.setlocale(locale.LC_COLLATE, "pl_PL.UTF-8") data = get_data_xml() return sorted([ { 'user_id': i, 'name': user.get('name'), 'avatar': user.get('avatar'), } for i, user in data.items() ], key=lambda x: x.get('name'), cmp=locale.strcoll)
def users_view(): """ Users listing for dropdown. """ data_xml = get_data_xml() result = [ { 'user_id': user_id, 'name': data_xml[user_id]['name'], 'avatar': data_xml[user_id]['avatar'] } for user_id in data_xml ] locale.setlocale(locale.LC_COLLATE, 'pl_PL.UTF-8') return sorted( result, cmp=locale.strcoll, key=lambda sort_by: sort_by['name'] )
def overtime_in_quarter(quarter_id): """ Returns top 3 users with most overtime hours in given quarter. """ data = get_data() users = get_data_xml() quarters = group_quarters(data) result = overtime_hours_in_quarter(data, quarters[quarter_id]) return sorted( [ ( users.get(user_id, {'name': 'User {}'.format(user_id)}), hours, ) for user_id, hours in result.items() if hours > 0 ], key=lambda x: x[1], reverse=True )[:3]
def users_view_xml(): """ Users listing for dropdown (from XML). """ return get_data_xml()