~openerp-community/openobject-addons/openerp-evernote

« back to all changes in this revision

Viewing changes to openERP_evernote/openerp_evernote.py

  • Committer: Serpent Consulting Services Pvt. Ltd.
  • Date: 2014-02-14 12:19:58 UTC
  • Revision ID: support@serpentcs.com-20140214121958-0xvhh8rds1j9sdjx
[IMP] Improvements 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- coding: utf-8 -*-
2
 
##############################################################################
3
 
#
4
 
#    OpenERP, Open Source Management Solution
5
 
#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6
 
#    Copyright (C) 2011 Serpent Consulting Services (<http://serpentcs.com>).
7
 
#
8
 
#    This program is free software: you can redistribute it and/or modify
9
 
#    it under the terms of the GNU Affero General Public License as
10
 
#    published by the Free Software Foundation, either version 3 of the
11
 
#    License, or (at your option) any later version.
12
 
#
13
 
#    This program is distributed in the hope that it will be useful,
14
 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 
#    GNU Affero General Public License for more details.
17
 
#
18
 
#    You should have received a copy of the GNU Affero General Public License
19
 
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
 
#
21
 
##############################################################################
22
 
 
23
 
from osv import fields, osv
24
 
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
25
 
import evernote
26
 
from evernote.api.client import EvernoteClient
27
 
import evernote.edam.type.ttypes as Types
28
 
from evernote.edam.notestore import NoteStore
29
 
import xml.etree.ElementTree as etree
30
 
import time
31
 
import re
32
 
from datetime import datetime
33
 
from  create_evernote_atta import EvernoteUpload
34
 
 
35
 
 
36
 
class openerp_evernote(osv.osv):
37
 
    
38
 
    _name = 'openerp.evernote'
39
 
    
40
 
    _columns = {
41
 
                'name' : fields.char("Evernote", size = 100),
42
 
                'evernote_id' : fields.many2one("product.product"),
43
 
                'url' : fields.char("URL", size=100),
44
 
                'description' : fields.text('Description'),
45
 
                'date' : fields.date("Date")
46
 
                }   
47
 
    
48
 
    def onchange_url(self, cr, uid, ids, url, evernote_id,context=None):
49
 
        if context is None:
50
 
            context={}
51
 
        
52
 
        if not url:
53
 
            raise osv.except_osv(('Warning!'), ('Please enter  url !'))
54
 
        if url[0:16] != 'evernote:///view':
55
 
            raise osv.except_osv(('Warning!'), ('Please check url !'))
56
 
            
57
 
        guid = re.findall('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',url)
58
 
    
59
 
        if not guid:
60
 
            raise osv.except_osv(('Warning!'), ('Please check url !'))
61
 
      
62
 
        auth_token = "S=s1:U=72d01:E=1479a33c4dd:C=140428298df:P=1cd:A=en-devtoken:V=2:H=f85f82d8927640558388d21d02819d7f"
63
 
        try:
64
 
            client = EvernoteClient(token=auth_token, sandbox=False)
65
 
        except : 
66
 
            raise osv.except_osv(('Warning!'), ('Please check token information!'))
67
 
        
68
 
                
69
 
        note = client.get_note_store().getNote(guid[0],True,True,True,True)
70
 
        noteStore = client.get_note_store()
71
 
        getnote = noteStore.getNote(guid[0],True,True, True, True)
72
 
        note_created = getnote.created
73
 
        note_date = time.strftime('%Y-%m-%d',  time.gmtime(note_created/1000))
74
 
        xml = etree.fromstring(getnote.content)
75
 
        content = xml.text
76
 
        title = note.title
77
 
                
78
 
        return {'value' : {'name' : title,'description': content ,'date' : note_date}}
79
 
 
80
 
openerp_evernote()
81
 
 
82
 
 
83
 
class product_product(osv.osv):
84
 
 
85
 
    _inherit = 'product.product'
86
 
    
87
 
    _columns = {
88
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
89
 
                }
90
 
    
91
 
product_product()
92
 
 
93
 
class purchase_order(osv.osv):
94
 
   
95
 
    _inherit = 'purchase.order'
96
 
    
97
 
    _columns = {
98
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
99
 
                }
100
 
    
101
 
purchase_order()
102
 
 
103
 
class res_partner(osv.osv):
104
 
    
105
 
    _inherit = 'res.partner'
106
 
    
107
 
    _columns = {
108
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
109
 
                }
110
 
    
111
 
   
112
 
res_partner()
113
 
 
114
 
class bank_statement(osv.osv):
115
 
  
116
 
    _inherit = 'account.bank.statement'
117
 
    
118
 
    _columns = {
119
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
120
 
                }
121
 
    
122
 
   
123
 
bank_statement()
124
 
 
125
 
class hr_timesheet_sheet(osv.osv):
126
 
   
127
 
    _inherit = 'hr_timesheet_sheet.sheet'
128
 
                
129
 
    _columns = {
130
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
131
 
                }
132
 
    
133
 
   
134
 
hr_timesheet_sheet()
135
 
 
136
 
class hr_expenses_expenses(osv.osv):
137
 
   
138
 
    _inherit = 'hr.expense.expense'
139
 
    
140
 
    _columns = {
141
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
142
 
                }
143
 
   
144
 
hr_expenses_expenses()
145
 
 
146
 
class stock_picking_in(osv.osv):
147
 
    
148
 
    _inherit = 'stock.picking.in'
149
 
    _columns = {
150
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
151
 
                }
152
 
    
153
 
   
154
 
stock_picking_in()
155
 
 
156
 
 
157
 
class project_project(osv.osv):
158
 
   
159
 
    _inherit = 'project.project'
160
 
    
161
 
    _columns = {
162
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
163
 
                }
164
 
project_project()
165
 
 
166
 
class account_bank_statement_line(osv.osv):
167
 
    
168
 
    _inherit = 'account.bank.statement.line'
169
 
    
170
 
    _columns = {
171
 
                'evernote_ids' : fields.one2many("openerp.evernote", "evernote_id","Evernote"),
172
 
                }
173
 
   
174
 
account_bank_statement_line()
175
 
 
176
 
class project_task(osv.osv):
177
 
 
178
 
    _inherit = 'project.task'
179
 
    
180
 
    _columns = {
181
 
                'note_created' : fields.boolean("Created Note" ,readonly=1),
182
 
    }
183
 
   
184
 
    def create_note(self, cr, uid, ids, context = None):
185
 
        
186
 
        auth_token = "S=s1:U=72d01:E=1479a33c4dd:C=140428298df:P=1cd:A=en-devtoken:V=2:H=f85f82d8927640558388d21d02819d7f"
187
 
        try:
188
 
            client = EvernoteClient(token=auth_token, sandbox=False)
189
 
        except : 
190
 
            raise osv.except_osv(('Warning!'), ('Please check token information!'))
191
 
         
192
 
        c1 = EvernoteUpload(auth_token)
193
 
        c1.upload_to_notebook('report1.pdf', 'boom')
194
 
        note_data = self.browse(cr, uid, ids[0], context=context)
195
 
        if not note_data.note_created:
196
 
            try:
197
 
                note_store = client.get_note_store()
198
 
                notebooks = note_store.listNotebooks()
199
 
                note = Types.Note()
200
 
                note.title = str(note_data.name)
201
 
                note_cont = str(note_data.description)
202
 
                note.content = '<?xml version="1.0" encoding="UTF-8"?>'
203
 
                note.content += '<!DOCTYPE en-note SYSTEM ' \
204
 
                    '"http://xml.evernote.com/pub/enml2.dtd">'
205
 
                note.content += '<en-note>'
206
 
                note.content += str(note_cont)
207
 
                note.content += '</en-note>'
208
 
 
209
 
                created_note = note_store.createNote(note)
210
 
                self.write(cr, uid, ids[0], {'note_created':1}, context=context)
211
 
            except:
212
 
                raise osv.except_osv(('Warning !'), ('Please check internet connection.!'))
213
 
        else:
214
 
            raise osv.except_osv(('Error!'), ('Already Created.!'))
215
 
        return True
216
 
    
217
 
    
218
 
    def wizard_call(self,cr,uid,ids,context=None):
219
 
        self_data = self.browse(cr, uid, ids, context=context)
220
 
        if not self_data[0].note_created:
221
 
            return {
222
 
                'view_type':'form',
223
 
                'view_mode':'form',
224
 
                'res_model':'create.note.wizard',
225
 
                'target' : 'new',
226
 
                'type':'ir.actions.act_window',
227
 
                'context':context,
228
 
            }
229
 
        else:
230
 
            raise osv.except_osv(('Warning!'), ('Already Created.!'))
231
 
            
232
 
project_task()
233
 
 
234
 
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: