diff options
| author | apa-tiny <apa@tinyerp.com> | 2010-03-16 11:30:23 +0530 |
|---|---|---|
| committer | apa-tiny <apa@tinyerp.com> | 2010-03-16 11:30:23 +0530 |
| commit | a76b058db60682e9c9cebaa33dfb967867eea96e (patch) | |
| tree | b1c8ef85992e36220f3882f501fe7a16b2c5c098 /addons/document | |
| parent | 188492607ce730f3aa47c439df20c5fdef8b30d5 (diff) | |
[MOVE]:moved report_document into the document module.
bzr revid: apa@tinyerp.com-20100316060023-uspgbzztn0hlg2lm
Diffstat (limited to 'addons/document')
| -rw-r--r-- | addons/document/__init__.py | 5 | ||||
| -rw-r--r-- | addons/document/__terp__.py | 17 | ||||
| -rw-r--r-- | addons/document/report/__init__.py | 21 | ||||
| -rw-r--r-- | addons/document/report/document_report.py | 171 | ||||
| -rw-r--r-- | addons/document/report/document_report_view.xml | 294 | ||||
| -rw-r--r-- | addons/document/security/ir.model.access.csv | 8 |
6 files changed, 506 insertions, 10 deletions
diff --git a/addons/document/__init__.py b/addons/document/__init__.py index 547205b1313..694989bdd79 100644 --- a/addons/document/__init__.py +++ b/addons/document/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # @@ -15,7 +15,7 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## @@ -26,5 +26,6 @@ import document_directory import directory_content import directory_report import document +import report # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document/__terp__.py b/addons/document/__terp__.py index a9d7026776b..2ffb708738c 100644 --- a/addons/document/__terp__.py +++ b/addons/document/__terp__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # @@ -15,7 +15,7 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## @@ -24,14 +24,14 @@ 'name': 'Integrated Document Management System', 'version': '1.99', 'category': 'Generic Modules/Others', - 'description': """This is a complete document management system: + 'description': """This is a complete document management system: * User Authentication * Document Indexation - ATTENTION: - - When you install this module in a running company that have already PDF files stored into the database, - you will lose them all. - - After installing this module PDF's are not longer stored into the database, + ATTENTION: + - When you install this module in a running company that have already PDF files stored into the database, + you will lose them all. + - After installing this module PDF's are not longer stored into the database, but in the servers rootpad like /server/bin/filestore. """, 'author': 'Tiny', @@ -42,7 +42,8 @@ 'document_view.xml', 'document_data.xml', 'security/document_security.xml', - 'security/ir.model.access.csv' + 'security/ir.model.access.csv', + 'report/document_report_view.xml' ], 'demo_xml': [ 'document_demo.xml',], 'installable': True, diff --git a/addons/document/report/__init__.py b/addons/document/report/__init__.py new file mode 100644 index 00000000000..bfdeacdaae8 --- /dev/null +++ b/addons/document/report/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## +import document_report
\ No newline at end of file diff --git a/addons/document/report/document_report.py b/addons/document/report/document_report.py new file mode 100644 index 00000000000..efe3a8183ab --- /dev/null +++ b/addons/document/report/document_report.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +from osv import fields,osv +import time +import tools + +class report_document_user(osv.osv): + _name = "report.document.user" + _description = "Files details by Users" + _auto = False + _columns = { + 'name': fields.char('Year', size=64,readonly=True), + 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), + ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), + 'user_id':fields.integer('Owner', readonly=True), + 'user':fields.char('User',size=64,readonly=True), + 'file_title': fields.char('File Name',size=64,readonly=True), + 'directory': fields.char('Directory',size=64,readonly=True), + 'create_date': fields.datetime('Date Created', readonly=True), + 'change_date': fields.datetime('Modified Date', readonly=True), + 'file_size': fields.integer('File Size', readonly=True), + 'nbr':fields.integer('# of Files', readonly=True), + 'type':fields.char('Directory Type',size=64,readonly=True), + 'partner':fields.char('Partner',size=64,readonly=True), + } + def init(self, cr): + cr.execute(""" + create or replace view report_document_user as ( + select + min(f.id) as id, + to_char(f.create_date, 'YYYY') as name, + to_char(f.create_date, 'MM') as month, + f.user_id as user_id, + u.name as user, + count(*) as nbr, + d.name as directory, + f.create_date as create_date, + f.file_size as file_size, + min(f.title) as file_title, + min(d.type) as type, + f.write_date as change_date + from ir_attachment f + left join document_directory d on (f.parent_id=d.id and d.name<>'') + inner join res_users u on (f.user_id=u.id) + group by to_char(f.create_date, 'YYYY'), to_char(f.create_date, 'MM'),d.name,f.parent_id,d.type,f.create_date,f.user_id,f.file_size,u.name,d.type,f.write_date + ) + """) +report_document_user() + +class report_files_partner(osv.osv): + _name = "report.files.partner" + _description = "Files details by Partners" + _auto = False + _columns = { + 'name': fields.char('Year',size=64,required=False, readonly=True), + 'file_title': fields.char('File Name',size=64,readonly=True), + 'directory': fields.char('Directory',size=64,readonly=True), + 'create_date': fields.datetime('Date Created', readonly=True), + 'change_date': fields.datetime('Modified Date', readonly=True), + 'file_size': fields.integer('File Size', readonly=True), + 'nbr':fields.integer('# of Files', readonly=True), + 'type':fields.char('Directory Type',size=64,readonly=True), + 'partner':fields.char('Partner',size=64,readonly=True), + 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), + ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), + } + def init(self, cr): + tools.drop_view_if_exists(cr, 'report_files_partner') + cr.execute(""" + create or replace view report_files_partner as ( + select min(f.id) as id,count(*) as nbr, + to_char(f.create_date,'YYYY') as name, + min(to_char(f.create_date,'MM')) as month, + min(f.title) as file_title, + p.name as partner + from ir_attachment f + inner join res_partner p + on (f.partner_id=p.id) + where f.datas_fname is not null + group by p.name, to_char(f.create_date,'YYYY') + ) + """) +report_files_partner() + +class report_document_file(osv.osv): + _name = "report.document.file" + _description = "Files details by Directory" + _auto = False + _columns = { + 'file_size': fields.integer('File Size', readonly=True), + 'nbr':fields.integer('# of Files', readonly=True), + 'month': fields.char('Month', size=24,readonly=True), + } + _order = "month" + def init(self, cr): + cr.execute(""" + create or replace view report_document_file as ( + select min(f.id) as id, + count(*) as nbr, + min(EXTRACT(MONTH FROM f.create_date)||'-'||to_char(f.create_date,'Month')) as month, + sum(f.file_size) as file_size + from ir_attachment f + group by EXTRACT(MONTH FROM f.create_date) + ) + """) + +report_document_file() + +class report_document_wall(osv.osv): + _name = "report.document.wall" + _description = "Users that did not inserted documents since one month" + _auto = False + _columns = { + 'name': fields.date('Month', readonly=True), + 'user_id':fields.many2one('res.users', 'Owner',readonly=True), + 'user':fields.char('User',size=64,readonly=True), + 'month': fields.char('Month', size=24,readonly=True), + 'file_name':fields.char('Last Posted File Name',size=64,readonly=True), + 'last':fields.datetime('Last Posted Time', readonly=True), + } + + def init(self, cr): + cr.execute(""" + create or replace view report_document_wall as ( + select max(f.id) as id, + min(title) as file_name, + to_char(min(f.create_date),'YYYY-MM-DD HH24:MI:SS') as last, + f.user_id as user_id, f.user_id as user, + to_char(f.create_date,'Month') as month + from ir_attachment f + where f.create_date in ( + select max(i.create_date) + from ir_attachment i + inner join res_users u on (i.user_id=u.id) + group by i.user_id) group by f.user_id,f.create_date + having (CURRENT_DATE - to_date(to_char(f.create_date,'YYYY-MM-DD'),'YYYY-MM-DD')) > 30 + ) + """) +report_document_wall() +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/document/report/document_report_view.xml b/addons/document/report/document_report_view.xml new file mode 100644 index 00000000000..b8bee399f82 --- /dev/null +++ b/addons/document/report/document_report_view.xml @@ -0,0 +1,294 @@ +<?xml version="1.0"?> +<openerp> + <data> + <record model="ir.ui.view" id="view_document_user_form"> + <field name="name">report.document.user.form</field> + <field name="model">report.document.user</field> + <field name="type">form</field> + <field name="arch" type="xml"> + <form string="Files"> + <field name="name" select="1"/> + <field name="file_title" select="1"/> + <field name="user" select="1"/> + <field name="directory" select="1"/> + <field name="file_size"/> + <field name="create_date"/> + </form> + </field> + </record> + + + <record model="ir.ui.view" id="view_document_user_tree"> + <field name="name">report.document.user.tree</field> + <field name="model">report.document.user</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree string="Files"> + <field name="name" select="1"/> + <field name="month" select="1"/> + <field name="file_title"/> + <field name="user" select="1"/> + <field name="directory" select="1"/> + <field name="file_size"/> + <field name="create_date"/> + </tree> + </field> + </record> + + <record id="view_report_document_user_search" model="ir.ui.view"> + <field name="name">report.document.user.search</field> + <field name="model">report.document.user</field> + <field name="type">search</field> + <field name="arch" type="xml"> + <search string="All users files"> + <group col="12" colspan="4"> + <filter icon="terp-stock" string="My" domain="[('user','=',uid)]" help="My Files"/> + <separator orientation="vertical"/> + <filter icon="terp-stock" string="This Year" domain="[('name','=',time.localtime()[0])]" help="All Months Files"/> + <filter icon="terp-stock" string="This Month" domain="[('month','=',time.localtime()[1])]" help="This Months Files"/> + <separator orientation="vertical"/> + <field name="name" select="1"/> + <field name="month" select="1"/> + <field name="file_title" select="1"/> + <field name="user" select="1"/> + <field name="directory" select="1"/> + </group> + </search> + </field> + </record> + + <!-- <menuitem name="Document Management" id="menu_action_view_my_document"/> + <menuitem name="Reporting" id="menu_action_view_my_document_report" parent="menu_action_view_my_document"/>--> + + <record model="ir.actions.act_window" id="action_view_all_document_tree1"> + <field name="name">All Users files</field> + <field name="res_model">report.document.user</field> + <field name="view_type">form</field> + <field name="view_mode">tree</field> + <field name="search_view_id" ref="view_report_document_user_search"/> + </record> + + <!-- <menuitem name="All Users files" id="menu_action_view_my_document_report_all_userfile" parent="menu_action_view_my_document_report" action="action_view_all_document_tree1"/>--> + +<!-- --> + <record model="ir.ui.view" id="view_document_wall_form"> + <field name="name">report.document.wall.form</field> + <field name="model">report.document.wall</field> + <field name="type">form</field> + <field name="arch" type="xml"> + <form string="Wall of Shame"> + <field name="user_id" select="1"/> + <field name="month" select="1"/> + <field name="file_name" select="1"/> + <field name="last"/> + </form> + </field> + </record> + + + <record model="ir.ui.view" id="view_document_wall_tree"> + <field name="name">report.document.wall.tree</field> + <field name="model">report.document.wall</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree string="Wall of Shame"> + <field name="user_id" select="1"/> + <field name="month" select="1"/> + <field name="file_name"/> + <field name="last"/> + </tree> + </field> + </record> + + <record model="ir.actions.act_window" id="action_view_wall"> + <field name="name">Wall of Shame</field> + <field name="res_model">report.document.wall</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + </record> + + <!--<menuitem name="Wall of Shame" id="menu_action_view_my_document_report_shame" parent="menu_action_view_my_document_report" action="action_view_wall"/>--> + +<!--***************************************************************************************--> + + <record model="ir.ui.view" id="view_document_by_resourcetype_graph"> + <field name="name">report.document.resource.graph</field> + <field name="model">report.document.user</field> + <field name="type">graph</field> + <field name="arch" type="xml"> + <graph string="Files by Resource Type" type="pie"> + <field name="type" /> +<!-- <field name="file_size" operator="+"/>--> + <field name="nbr" operator="+"/> + </graph> + </field> + </record> + +<!-- <record model="ir.ui.view" id="view_document_by_resourcetype_tree">--> +<!-- <field name="name">report.document.resource.tree.view</field>--> +<!-- <field name="model">report.document.user</field>--> +<!-- <field name="type">tree</field>--> +<!-- <field name="arch" type="xml">--> +<!-- <tree string="Files by Resource Type">--> +<!-- <field name="type" />--> +<!-- <field name="nbr"/>--> +<!-- </tree>--> +<!-- </field>--> +<!-- </record>--> + + <record model="ir.actions.act_window" id="action_view_document_by_resourcetype_graph"> + <field name="name">Files by Resource Type</field> + <field name="res_model">report.document.user</field> + <field name="view_id" ref="view_document_by_resourcetype_graph"></field> + <field name="view_type">form</field> + <field name="view_mode">tree</field> + </record> + +<!--***************************************************************************************--> + + <record model="ir.ui.view" id="view_size_month"> + <field name="name">report.document.user.graph</field> + <field name="model">report.document.file</field> + <field name="type">graph</field> + <field name="arch" type="xml"> + <graph string="File Size by Month" type="bar"> + <field name="month"/> + <field name="file_size" operator="+"/> + </graph> + </field> + </record> + + <record model="ir.ui.view" id="view_size_month_tree"> + <field name="name">report.document.user.tree</field> + <field name="model">report.document.file</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree string="File Size by Month"> + <field name="month" /> + <field name="file_size"/> + </tree> + </field> + </record> + <record model="ir.actions.act_window" id="action_view_size_month"> + <field name="name">File Size by Month</field> + <field name="res_model">report.document.file</field> + <field name="view_id" ref="view_size_month"></field> + <field name="view_type">form</field> + <field name="view_mode">tree</field> + </record> + +<!--***************************************************************************************--> + + + <record model="ir.ui.view" id="view_files_by_month_graph"> + <field name="name">report.file.month.graph</field> + <field name="model">report.document.user</field> + <field name="type">graph</field> + <field name="arch" type="xml"> + <graph string="Files by Month" type="bar"> + <field name="month" /> + <field name="nbr" operator="+"/> +<!-- <field name="name" operator="+"/>--> +<!-- <field name="file_size" operator="+"/>--> + + </graph> + </field> + </record> + + <record model="ir.ui.view" id="view_files_by_month_tree"> + <field name="name">report.file.month.tree</field> + <field name="model">report.document.user</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree string="Files by Month"> + <field name="name"/> + <field name="month"/> + <field name="nbr"/> + </tree> + </field> + </record> + + <record model="ir.actions.act_window" id="action_view_files_by_month_graph"> + <field name="name">Files by Month</field> + <field name="res_model">report.document.user</field> + <field name="view_id" ref="view_files_by_month_graph"></field> + <field name="view_type">form</field> + <field name="view_mode">tree</field> + </record> + + +<!--***************************************************************************************--> + + <record model="ir.ui.view" id="view_user_graph"> + <field name="name">report.document.user.graph</field> + <field name="model">report.document.user</field> + <field name="type">graph</field> + <field name="arch" type="xml"> + <graph string="Files by users" type="bar"> + <field name="user" /> + <field name="nbr" operator="+"/> + </graph> + </field> + </record> + + <record model="ir.actions.act_window" id="action_view_user_graph"> + <field name="name">Files By Users</field> + <field name="res_model">report.document.user</field> + <field name="view_id" ref="view_user_graph"></field> + <field name="view_type">form</field> + <field name="view_mode">tree</field> + </record> + + +<!--***************************************************************************************--> + + <record model="ir.ui.view" id="view_files_by_partner_graph"> + <field name="name">view.files.partner.graph</field> + <field name="model">report.files.partner</field> + <field name="type">graph</field> + <field name="arch" type="xml"> + <graph string="Files By Partner" type="bar"> + <field name="partner"/> + <field name="nbr"/> + + </graph> + </field> + </record> + + <record model="ir.ui.view" id="view_files_by_partner_tree"> + <field name="name">view.files.partner.tree</field> + <field name="model">report.files.partner</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree string="Files per Month"> + <field name="name"/> + <field name="month"/> + <field name="partner"/> + <field name="nbr"/> + </tree> + </field> + </record> + + <record model="ir.ui.view" id="view_files_by_partner_form"> + <field name="name">view.files.partner.form</field> + <field name="model">report.files.partner</field> + <field name="type">form</field> + <field name="arch" type="xml"> + <tree string="Files per Month"> + <field name="name" select="1"/> + <field name="month" select="1"/> + <field name="partner"/> + <field name="nbr"/> + </tree> + </field> + </record> + + <record model="ir.actions.act_window" id="action_view_files_by_partner"> + <field name="name">Files Per Partner</field> + <field name="res_model">report.files.partner</field> + <field name="view_id" ref="view_files_by_partner_graph"></field> + <field name="view_type">form</field> + <field name="view_mode">tree</field> + </record> + </data> + </openerp> diff --git a/addons/document/security/ir.model.access.csv b/addons/document/security/ir.model.access.csv index 4993ebc049e..245bcbffeab 100644 --- a/addons/document/security/ir.model.access.csv +++ b/addons/document/security/ir.model.access.csv @@ -11,3 +11,11 @@ "access_document_storage_group_system","document.storage group system","model_document_storage","base.group_user",1,0,0,0 "access_document_directory_dctx_group_document_manager","document.directory.dctx document manager","model_document_directory_dctx","group_document_manager",1,1,1,1 "access_document_directory_dctx_group_system","document.directory.dctx group system","model_document_directory_dctx","base.group_system",1,1,1,1 +"access_report_document_user_group_document_manager","report.document.user document manager","model_report_document_user","document.group_document_manager",1,0,0,0 +"access_report_document_user_group_system","report.document.user group system","model_report_document_user","base.group_system",1,0,0,0 +"access_report_files_partner_group_document_manager","report.files.partner document manager","model_report_files_partner","document.group_document_manager",1,0,0,0 +"access_report_files_partner_group_system","report.files.partner group system","model_report_files_partner","base.group_system",1,0,0,0 +"access_report_document_file_group_document_manager","report.document.file document manager","model_report_document_file","document.group_document_manager",1,0,0,0 +"access_report_document_file_group_system","report.document.file group system","model_report_document_file","base.group_system",1,0,0,0 +"access_report_document_wall_group_document_manager","report.document.wall document manager","model_report_document_wall","document.group_document_manager",1,0,0,0 +"access_report_document_wall_group_system","report.document.wall group system","model_report_document_wall","base.group_system",1,0,0,0 |
