def ajaxStartRowIndexFromSession(request): if 'client_request' in request.POST: # Розбираємо дані від клієнта: try: d = parseClientRequest(request.POST) except ValueError as err: # запит від клієнта містить невідповідні дані: print('ajaxStartRowIndexFromSession:', err) s = 'ajaxStartRowIndexFromSession: %s %s %s' % err.args return HttpResponseBadRequest(s) browTabName = d.get('browTabName') parent_id = d.get('parent_id') # Беремо з сесії масив параметрів виділеного елемента # для даної таблиці і для даного parent_id (якщо є): selElement = getSelElementFromSession(request.session, browTabName=browTabName, parent_id=parent_id) # Посилаємо відповідь клієнту: response_dict = {'server_response': selElement} # return JsonResponse(response_dict) # дає помилку в pythonanywhere.com return HttpResponse(json.dumps(response_dict), content_type="application/json") else: return HttpResponseBadRequest("ajaxStartRowIndexFromSession: " "No 'client_request' in request.POST")
def test_selElementFromSessionTest4(self): expected = {'model' : None, 'id' : None, 'selRowIndex' : None, } b = 'foldertab' self.assertEqual(getSelElementFromSession(self.session, b), expected)
def test_selElementFromSessionTest4(self): expected = { 'model': None, 'id': None, 'selRowIndex': None, } b = 'foldertab' self.assertEqual(getSelElementFromSession(self.session, b), expected)
def test_selElementFromSessionTest(self): expected = {'model' : Folder, 'id' : 12, 'selRowIndex' : 55, } b = 'foldertab' p = 1 self.assertEqual(getSelElementFromSession(self.session, b, p), expected)
def get_context_data(self, **kwargs): # Материнська тека context = super().get_context_data(**kwargs) browTabName = 'users_table' # назва таблиці (для сесії і ajax) # Беремо з сесії масив параметрів виділеного елемента # parent_id='' у даному випадку selElement = getSelElementFromSession(self.request.session, browTabName) selElementModel = selElement.get('model') selElementID = selElement.get('id') if selElementModel and selElementID: # відомі параметри виділеного рядка sel_model_id = {'id': selElementID, 'model': selElementModel} else: # вперше відвідуємо цю таблицю sel_model_id = {} # TODO-використати цей фрагмент для новостворених словників/ключів # if self.session_id is not None: # if not params: # params = {'sessionId': self.session_id} # elif 'sessionId' not in params: # params['sessionId'] = self.session_id # Готуємо 2D-масив всіх даних таблиці # Одночасно шукаємо порядковий номер виділеного рядка bta = UsersTableArray() 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. j_arr = deepcopy(arr) # arr - змінюваний об'єкт! for i in j_arr: if j_arr[i][5]: j_arr[i][5] = j_arr[i][5].isoformat() json_arr = json.dumps(j_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, selElement=selElement) return context
def test_selElementFromSessionTest(self): expected = { 'model': Folder, 'id': 12, 'selRowIndex': 55, } b = 'foldertab' p = 1 self.assertEqual(getSelElementFromSession(self.session, b, p), expected)
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 ajaxStartRowIndexFromSession(request): if 'client_request' in request.POST: # Розбираємо дані від клієнта: try: d = parseClientRequest(request.POST) except ValueError as err: # запит від клієнта містить невідповідні дані: print('ajaxStartRowIndexFromSession:', err) s = 'ajaxStartRowIndexFromSession: %s %s %s' % err.args return HttpResponseBadRequest(s) browTabName = d.get('browTabName') parent_id = d.get('parent_id') # Беремо з сесії масив параметрів виділеного елемента # для даної таблиці і для даного parent_id (якщо є): selElement = getSelElementFromSession(request.session, browTabName=browTabName, parent_id=parent_id) # Посилаємо відповідь клієнту: response_dict = {'server_response': selElement } # return JsonResponse(response_dict) # дає помилку в pythonanywhere.com return HttpResponse(json.dumps(response_dict), content_type="application/json") else: return HttpResponseBadRequest("ajaxStartRowIndexFromSession: " "No 'client_request' in request.POST")