def get_data_length(self): this_folder_id = self.this_folder_id this_folder = Folder.objects.get(id=this_folder_id) self.table_data_length = len(Folder.objects.filter(parent=this_folder)) \ + len(Report.objects.filter(parent=this_folder)) self.parents_data_length = len(get_parents(this_folder)) self.data_length = self.table_data_length \ + self.parents_data_length \ + 1 # довжина списку з даними return self.data_length
def test_visitor_can_go_to_parent_links(self): # Користувач може перейти по лінках над таблицею this_folder = Folder.objects.get(id=self.this_folder_id) folders = get_parents(this_folder) folders.append(this_folder) for folder in folders: link_parent_selector = '#parent-folders-navigation' link_text = '%s' % folder url_name = 'folders:folder-contents' kwargs = {'pk': folder.pk} self.check_go_to_link(self.this_url, link_parent_selector, link_text, url_name=url_name, kwargs=kwargs) print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def get_context_data(self, **kwargs): # Материнська тека context = super().get_context_data(**kwargs) context['folder'] = self.object context['parents'] = get_parents(self.object) parent_id = self.object.id browTabName = 'folders_contents' # назва таблиці (для сесії і ajax) # Беремо з сесії масив параметрів виділеного елемента # для даного parent_id: selElement = getSelElementFromSession(self.request.session, browTabName, parent_id=parent_id) selElementModel = selElement.get('model') selElementID = selElement.get('id') if selElementModel and selElementID: # відомі параметри виділеного рядка sel_model_id = {'id': selElementID, 'model': selElementModel} else: # вперше відвідуємо цю теку sel_model_id = {} # Готуємо 2D-масив всіх даних таблиці # Одночасно шукаємо порядковий номер виділеного рядка bta = FolderContentsArray() arr, sel_index = bta.get_qs_array(self.qs, sel_model_id) cap = bta.get_table_headers() # Значення передадуться в шаблон: context['browTabName'] = browTabName context['selRowIndex'] = sel_index context['selElementModel'] = sel_model_id.get('model') context['selElementID'] = sel_model_id.get('id') context['cap'] = cap # список заголовків таблиці # context['arr'] = arr # 2D-масив даних таблиці: # Одночасно передаємо цей же 2D-масив для обробки js. # Дата ще на етапі формування масиву вже перетворена # в isoformat, прийнятний для JSON. json_arr = json.dumps(arr) context['json_arr'] = json_arr # Записуємо в сесію: selElement['selRowIndex'] = sel_index selElement['model'] = sel_model_id.get('model') selElement['id'] = sel_model_id.get('id') setSelElementToSession(self.request.session, browTabName, parent_id=parent_id, selElement=selElement) return context
def test_get_parents(self): root = DummyFolder().create_dummy_root_folder() f2 = DummyFolder().create_dummy_folder(parent=root) f3 = DummyFolder().create_dummy_folder(parent=f2) r1 = DummyFolder().create_dummy_report(parent=root) r2 = DummyFolder().create_dummy_report(parent=f2) r3 = DummyFolder().create_dummy_report(parent=f3) self.assertEqual(get_parents(root), []) self.assertEqual(get_parents(f2), [root]) self.assertEqual(get_parents(f3), [root, f2]) self.assertEqual(get_parents(r1), [root]) self.assertEqual(get_parents(r2), [root, f2]) self.assertEqual(get_parents(r3), [root, f2, f3])