Пример #1
0
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")
Пример #2
0
 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)
Пример #4
0
 def test_selElementFromSessionTest(self):
     expected = {'model'       : Folder,
                 'id'          : 12,
                 'selRowIndex' : 55,
                 }
     b = 'foldertab'
     p = 1
     self.assertEqual(getSelElementFromSession(self.session, b, p), expected)
Пример #5
0
    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
Пример #6
0
    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
Пример #9
0
    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
Пример #10
0
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")