Ejemplo n.º 1
0
    def run(self, request, context):
        report_data = context.report

        if context.id:
            try:
                report = CreadocReport.objects.get(pk=context.id)
            except CreadocReport.DoesNotExist:
                raise ApplicationLogicException((
                    u'Шаблон с id={} отсутствует!'
                ).format(context.id))
        else:
            report_guid = str(uuid.uuid4())

            report = CreadocReport()
            report.name = context.name
            report.guid = report_guid
            report.save()

        reports_dir = os.path.dirname(report.path)
        if not os.path.exists(reports_dir):
            os.makedirs(reports_dir)

        with open(report.path, 'w+') as f:
            f.write(report_data.encode('utf-8'))

        return PreJsonResult({
            'success': True,
            'report_id': report.id,
        })
Ejemplo n.º 2
0
 def run(self, request, context):
     parent_id = utils.extract_int(request, 'node')
     if parent_id < 1:
         parent_id = None
     filter = request.REQUEST.get('filter')
     result = self.parent.get_nodes(parent_id, filter)
     return PreJsonResult(result)
Ejemplo n.º 3
0
    def run(self, request, context):
        try:
            result = self.parent.get_row(context.id)
        except self.parent._nofound_exception:
            return OperationResult.by_message(MSG_DOESNOTEXISTS % context.id)

        return PreJsonResult(result)
Ejemplo n.º 4
0
 def run(self, request, context):
     parent_id = utils.extract_int(request, 'id')
     offset = utils.extract_int(request, 'start')
     limit = utils.extract_int(request, 'limit')
     filter = request.REQUEST.get('filter')
     result = self.parent.get_rows(
         parent_id, offset, limit, filter)
     return PreJsonResult(result)
Ejemplo n.º 5
0
    def run(self, request, context):
        base = self.parent
        is_get_data = context.isGetData
        # Получаем объект по id
        try:
            obj = base.get_row(context.id)
        except base._nofound_exception:
            return OperationResult.by_message(MSG_DOESNOTEXISTS % context.id)

        # Разница между новым и созданным объектов в том,
        # что у нового нет id или он пустой
        create_new = True
        if isinstance(obj, dict) and obj.get('id') is not None:
            create_new = False
        elif hasattr(obj, 'id') and getattr(obj, 'id') is not None:
            create_new = False
        if create_new and base.add_window:
            win = utils.bind_object_from_request_to_form(
                request, base.get_row, base.add_window)
        else:
            win = utils.bind_object_from_request_to_form(
                request, base.get_row, base.edit_window)

        if not win.title:
            win.title = base.title
        win.form.url = base.save_action.get_absolute_url()
        # укажем адрес для чтения данных
        win.data_url = base.edit_window_action.get_absolute_url()

        # проверим право редактирования
        if not self.parent.has_sub_permission(request.user,
                                              self.parent.PERM_EDIT, request):
            exclude_list = ['close_btn', 'cancel_btn']
            win.make_read_only(True, exclude_list)

        # У окна может быть процедура доп. конфигурации
        # под конкретный справочник
        if (hasattr(win, 'configure_for_dictpack')
                and callable(win.configure_for_dictpack)):
            win.configure_for_dictpack(action=self,
                                       pack=self.parent,
                                       request=request,
                                       context=context)

        if not is_get_data:
            # если запрашивали не данные - вернем окно
            return ExtUIScriptResult(base.get_edit_window(win))
        else:
            # если просили данные, то выжмем их из окна обратно в объект,
            # т.к. в окне могли быть и другие данных (не из этого объекта)
            data_object = {}
            # т.к. мы не знаем какие поля должны быть у объекта - создадим
            # все, которые есть на форме
            all_fields = win.form._get_all_fields(win)
            for field in all_fields:
                data_object[field.name] = None
            win.form.to_object(data_object)
            return PreJsonResult({'success': True, 'data': data_object})
Ejemplo n.º 6
0
    def run(self, request, context):
        data_source = CR.source(context.guid)
        if data_source is None:
            raise ApplicationLogicException((
                u'Источник данных с идентификатором {} отсутствует'
            ).format(context.source_guid))

        result = data_source.load(context.params)

        return PreJsonResult({data_source.alias: result})
Ejemplo n.º 7
0
    def run(self, request, context):
        confirm = request.REQUEST.get(u'confirm')

        # Подтверждение выхода
        if confirm == u'true':
            logout(request)
            return PreJsonResult({})
        # Возвращаем форму
        msg_box = MessageBox(u'', u'Вы действительно хотите выйти из системы?',
                             MessageBox.ICON_QUESTION, MessageBox.BTN_YESNO)
        msg_box.handler_yes = u'''
        Ext.Ajax.request({
            url: '%(url)s',
            params: {'confirm': true},
            success: function(response){
                var json = Ext.util.JSON.decode(response.responseText);
                window.location = json.redirect ? json.redirect : '/';
            }
        });
        ''' % {
            'url': self.get_absolute_url()
        }
        return HttpResponse(msg_box.get_script())
Ejemplo n.º 8
0
    def run(self, request, context):
        offset = utils.extract_int(request, 'start')
        limit = utils.extract_int(request, 'limit')
        filter = request.REQUEST.get('filter')
        direction = request.REQUEST.get('dir')
        user_sort = request.REQUEST.get('sort')
        if direction == 'DESC':
            user_sort = '-' + user_sort
        dict_list = []
        for item in self.parent.list_columns:
            if isinstance(item, (list, tuple)):
                dict_list.append(item[0])
            elif isinstance(item, dict) and item.get('data_index'):
                dict_list.append(item['data_index'])

        if (hasattr(self.parent, 'modify_rows_query')
                and callable(self.parent.modify_rows_query)):
            rows = self.parent.get_rows_modified(offset, limit, filter,
                                                 user_sort, request, context)
        else:
            rows = self.parent.get_rows(offset, limit, filter, user_sort)
        return PreJsonResult(rows,
                             self.parent.secret_json,
                             dict_list=dict_list)
Ejemplo n.º 9
0
 def run(self, request, context):
     result = self.parent.get_nodes_like_rows(
         context.filter, context.branch_id)
     return PreJsonResult(result)
Ejemplo n.º 10
0
 def run(self, request, context):
     return PreJsonResult(self.parent.get_last_used(self))
Ejemplo n.º 11
0
 def run(self, request, context):
     id = utils.extract_int(request, 'id')
     result = self.parent.get_node(id)
     return PreJsonResult(result)
Ejemplo n.º 12
0
 def run(self, request, context):
     parent_id = context.node if context.node > 0 else None
     return PreJsonResult(
         self.parent.get_nodes(request, context, parent_id, context.filter))
Ejemplo n.º 13
0
    def run(self, request, context):
        rows = CreadocReport.objects.filter(state=True).order_by('created_at')

        return PreJsonResult({'rows': list(rows), 'count': rows.count()})