Ejemplo n.º 1
0
def ajaxSelRowIndexToSession(request):
    if 'client_request' in request.POST:
        # Розбираємо дані від клієнта:
        try:
            d = parseClientRequest(request.POST)
        except ValueError as err:
            # запит від клієнта містить невідповідні дані:
            print('ajaxSelRowIndexToSession:', err.args)
            s = 'ajaxSelRowIndexToSession: %s %s %s' % err.args
            return HttpResponseBadRequest(s)
        browTabName = d.get('browTabName')
        parent_id = d.get('parent_id')
        # Формуємо дані для зберігання в сесії:
        selElement = {}
        selElement['model'] = d.get('model')
        selElement['id'] = d.get('id')
        selElement['selRowIndex'] = d.get('selRowIndex')
        # Записуємо в сесію:
        setSelElementToSession(request.session,
                               browTabName=browTabName,
                               parent_id=parent_id,
                               selElement=selElement)
        # Посилаємо відповідь клієнту:
        response_dict = {'server_response': selElement}
        # return JsonResponse(response_dict)    # дає помилку в pythonanywhere.com
        return HttpResponse(json.dumps(response_dict),
                            content_type="application/json")
    else:
        return HttpResponseBadRequest("ajaxSelRowIndexToSession: "
                                      "No 'client_request' in request.POST")
Ejemplo n.º 2
0
def ajaxSelRowIndexToSession(request):
    if 'client_request' in request.POST:
        # Розбираємо дані від клієнта:
        try:
            d = parseClientRequest(request.POST)
        except ValueError as err:
            # запит від клієнта містить невідповідні дані:
            print('ajaxSelRowIndexToSession:', err.args)
            s = 'ajaxSelRowIndexToSession: %s %s %s' % err.args
            return HttpResponseBadRequest(s)
        browTabName = d.get('browTabName')
        parent_id   = d.get('parent_id')
        # Формуємо дані для зберігання в сесії:
        selElement = {}
        selElement['model'      ] = d.get('model'      )
        selElement['id'         ] = d.get('id'         )
        selElement['selRowIndex'] = d.get('selRowIndex')
        # Записуємо в сесію:
        setSelElementToSession(request.session,
                                            browTabName=browTabName,
                                            parent_id=parent_id,
                                            selElement=selElement)
        # Посилаємо відповідь клієнту:
        response_dict = {'server_response': selElement }
        # return JsonResponse(response_dict)    # дає помилку в pythonanywhere.com
        return HttpResponse(json.dumps(response_dict), content_type="application/json")
    else:
        return HttpResponseBadRequest("ajaxSelRowIndexToSession: "
                                      "No 'client_request' in request.POST")
Ejemplo n.º 3
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
Ejemplo n.º 4
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
Ejemplo n.º 5
0
 def test_selElementToSessionTest_2(self):
     b = 'foldertab'
     p = 1
     expected = {'foldertab':
                      {'1':
                          {'model'       : None,
                           'id'          : None,
                           'selRowIndex' : None,
                          },
                      },
                 }
     setSelElementToSession(self.session, b, p)
     self.assertEqual(self.session['Selections'], expected)
 def test_selElementToSessionTest_2(self):
     b = 'foldertab'
     p = 1
     expected = {
         'foldertab': {
             '1': {
                 'model': None,
                 'id': None,
                 'selRowIndex': None,
             },
         },
     }
     setSelElementToSession(self.session, b, p)
     self.assertEqual(self.session['Selections'], 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
Ejemplo n.º 8
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
Ejemplo n.º 9
0
 def test_selElementToSessionTest(self):
     b = 'foldertab'
     p = 1
     s = {'model'      : Folder,
         'id'          : 12,
         'selRowIndex' : 55,
         }
     expected = {'foldertab':
                      {'1':
                          {'model'       : Folder,
                           'id'          : 12,
                           'selRowIndex' : 55,
                          },
                      },
                 }
     setSelElementToSession(self.session, b, p, s)
     self.assertEqual(self.session['Selections'], expected)
     p = '1'
     setSelElementToSession(self.session, b, p, s)
     self.assertEqual(self.session['Selections'], expected)
Ejemplo n.º 10
0
 def test_selElementToSessionTest(self):
     b = 'foldertab'
     p = 1
     s = {
         'model': Folder,
         'id': 12,
         'selRowIndex': 55,
     }
     expected = {
         'foldertab': {
             '1': {
                 'model': Folder,
                 'id': 12,
                 'selRowIndex': 55,
             },
         },
     }
     setSelElementToSession(self.session, b, p, s)
     self.assertEqual(self.session['Selections'], expected)
     p = '1'
     setSelElementToSession(self.session, b, p, s)
     self.assertEqual(self.session['Selections'], expected)