~zaber/openobject-addons/zaber-custom-base_report_creator

« back to all changes in this revision

Viewing changes to base_report_creator/base_report_creator.py

  • Committer: Aki Mimoto
  • Date: 2013-05-07 15:02:50 UTC
  • Revision ID: aki+launchpad@zaber.com-20130507150250-tcyuxaue9g8orvo8
[IMP] Initial commit of theproventech's base_report_creator fixes for 6.1 (to work in web client)

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
from osv import fields, osv
23
23
from tools.translate import _
24
24
from tools import ustr
 
25
import string
25
26
 
26
27
class report_result(osv.osv):
27
28
    """
59
60
            for f in report.field_ids:
60
61
                if f.field_id.model:
61
62
                    fields['field'+str(i)] = models[f.field_id.model][f.field_id.name]
 
63
                    if f.field_name:
 
64
                        fields['field'+str(i)]['string'] = f.field_name
 
65
                    if f.field_type:
 
66
                        fields['field'+str(i)]['type'] = f.field_type
62
67
                    i += 1
63
68
                else:
64
69
                    fields['column_count'] = {'readonly': True, 'type': 'integer', 'string': 'Count', 'size': 64, 'name': 'column_count'}
73
78
        """
74
79
        if context is None:
75
80
            context = {}
76
 
 
 
81
        
77
82
        data = context and context.get('report_id', False) or False
78
83
        if (not context) or 'report_id' not in context:
79
84
            return super(report_result, self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
86
91
        for f in report.field_ids:
87
92
            if f.field_id.model:
88
93
                fields['field'+str(i)] = models[f.field_id.model][f.field_id.name]
 
94
                if f.field_name:
 
95
                    fields['field'+str(i)]['string'] = f.field_name
 
96
                if f.field_type:
 
97
                    fields['field'+str(i)]['type'] = f.field_type
89
98
                i += 1
90
99
            else:
91
100
                fields['column_count'] = {'readonly': True, 'type': 'integer', 'string': 'Count', 'size': 64, 'name': 'column_count'}
150
159
        arch += '</%s>' % (view_type,)
151
160
        result = {
152
161
            'arch': arch,
153
 
            'fields': fields
 
162
            'fields': fields,
 
163
            'type': view_type,
154
164
        }
155
165
        result['toolbar'] = {
156
166
            'print': [],
176
186
        result = cr.dictfetchall()
177
187
        return result
178
188
 
 
189
    def __export_row(self, cr, uid, row, fields_to_export, context):
 
190
        exp_row = [row[key] for key in fields_to_export]
 
191
        return [exp_row]
 
192
 
 
193
    def export_data(self, cr, uid, ids, fields_to_export, context=None):
 
194
        # This data can never be re-imported - so just export as raw data
 
195
        if context is None:
 
196
            context = {}
 
197
        fields_to_export = [f != '.id' and f or 'id' for f in fields_to_export]
 
198
        datas = []
 
199
        for row in self.read(cr, uid, ids, fields_to_export,context):
 
200
            datas += self.__export_row(cr, uid, row, fields_to_export, context)
 
201
        return {'datas': datas}
 
202
        
179
203
    def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
180
204
        """
181
205
        overrides  orm search method.
442
466
        'sql_query': fields.function(_sql_query_get, method=True, type="text", string='SQL Query', store=True),
443
467
        'group_ids': fields.many2many('res.groups', 'base_report_creator_group_rel', 'report_id', 'group_id', 'Authorized Groups'),
444
468
        'menu_id': fields.many2one('ir.ui.menu', "Menu", readonly=True),
 
469
        'manual_sql_query': fields.text('Manual SQL Query'),
 
470
        'manual_sql_query_enable': fields.boolean('Enable Manual SQL Query', help='Use manually specified SQL Query'),
 
471
        'manual_sql_query_date_range': fields.boolean('Use date range in manual SQL query',
 
472
                                                      help='Prompt for date range when running report, use $from_date and $to_date '
 
473
                                                      'to set the date in in the Manual SQL Query.'),
445
474
    }
446
475
    _defaults = {
447
476
        'type': lambda *args: 'list',
475
504
            view_mode += ',' + rep.view_type2
476
505
        if rep.view_type3:
477
506
            view_mode += ',' + rep.view_type3
478
 
        value = {
 
507
        repview = {
479
508
            'name': rep.name,
480
509
            'view_type': 'form',
481
510
            'view_mode': view_mode,
484
513
            'context': "{'report_id':%d}" % (rep.id,),
485
514
            'nodestroy': True,
486
515
        }
 
516
        
 
517
        if rep.manual_sql_query_enable and rep.manual_sql_query_date_range:
 
518
            # Divert to wizard here
 
519
            value = {
 
520
                'name': 'Enter date range for %s' % (rep.name),
 
521
                'view_type': 'form',
 
522
                'view_mode': 'form',
 
523
                'res_model': 'base_report_creator.date_wizard',
 
524
                'type': 'ir.actions.act_window',
 
525
                'context': "{'report_id':%d}" % (rep.id,),
 
526
                'target': 'new',
 
527
            }
 
528
        else:
 
529
            value = repview
487
530
 
488
531
        return value
489
532
 
584
627
        'calendar_mode': fields.selection([('', '/'),
585
628
                                           ('date_start', 'Starting Date'),
586
629
                                           ('date_end', 'Ending Date'), ('date_delay', 'Delay'), ('date_stop', 'End Date'), ('color', 'Unique Colors')], 'Calendar Mode'),
 
630
        'field_name': fields.char('Custom Field Name', size=100),
 
631
        'field_type': fields.char('Custom Field Type', size=100),
587
632
    }
588
633
    _defaults = {
589
634
        'group_method': lambda *args: 'group',