106
93
def create(self, cr, uid, vals, context=None):
108
Encrypt credit card number before writing to database
95
Encrypt credit card number before writing to database
96
@param self : The object pointer
97
@param cr: A database cursor
98
@param uid: ID of the user currently logged in
99
@param vals: Dictionary of Values.
100
@param context: A standard dictionary
101
@return:ID of newly created record.
110
105
if vals.get('cc_number', False):
111
if 'XXXXX' in vals['cc_number']:
112
del vals['cc_number']
114
encrytipn_obj = DES3.new(get_encrypt_key(), DES3.MODE_ECB)
115
i = len(vals['cc_number']) % 8
117
plain_text = vals['cc_number'] + 'X' * i
118
ciphered_text = encrytipn_obj.encrypt(plain_text)
119
vals['cc_number'] = base64.encodestring(ciphered_text)
120
vals['cc_length'] = i
106
res = rsa_encrypt.encrypt(vals.get('cc_number', False))
107
res['cc_number'] = res['enc_value']
121
110
result = super(account_voucher, self).create(cr, uid, vals, context)
122
vouch = self.browse(cr, uid, result, context=context)
123
if vouch.rel_sale_order_id:
124
self.pool.get('sale.order').write(cr, uid, [vouch.rel_sale_order_id.id], {'rel_account_voucher_id':result})
127
113
def write(self, cr, uid, ids, vals, context=None):
129
Encrypt credit card number before writing to database
115
Encrypt credit card number before writing to database
116
@param self : The object pointer
117
@param cr: A database cursor
118
@param uid: ID of the user currently logged in
119
@param ids: List of ids selected
120
@param vals: Dictionary of Values.
121
@param context: A standard dictionary
131
if vals.get('cc_number', False):
132
if 'XXXXX' in vals['cc_number']:
133
del vals['cc_number']
135
encrytipn_obj = DES3.new(get_encrypt_key(), DES3.MODE_ECB)
136
i = len(vals['cc_number']) % 8
138
plain_text = vals['cc_number'] + 'X' * i
139
ciphered_text = encrytipn_obj.encrypt(plain_text)
140
vals['cc_number'] = base64.encodestring(ciphered_text)
141
vals['cc_length'] = i
126
context.update({'cc_no':'no_mask'})
127
if not isinstance(ids,list):
129
for record in self.browse(cr, uid, ids, context=context):
130
if vals.get('cc_number', False):
131
res = rsa_encrypt.encrypt(vals.get('cc_number', False), record.key)
132
res['cc_number'] = res['enc_value']
142
135
result = super(account_voucher, self).write(cr, uid, ids, vals, context)
145
def read(self, cr, user, ids, fields=None, context={}, load='_classic_read'):
147
Decrypt credit card number after reading from database and display last four digits if there is
148
no no_mask in context
150
if fields and 'cc_number' in fields and 'cc_length' not in fields:
151
fields.append('cc_length')
154
vals = super(account_voucher, self).read(cr, user, ids, fields, context, load)
155
if ids and type(ids) == type([]):
159
if val.get('cc_number', False) and val.get('cc_length', False):
160
encrytipn_obj = DES3.new(get_encrypt_key(), DES3.MODE_ECB)
161
back = encrytipn_obj.decrypt(base64.decodestring(val['cc_number']))
164
plain_text = back[:i]
165
val['cc_number'] = plain_text
167
val['cc_number'] = ''
168
if context.get('cc_no', '') != 'no_mask':
170
if val.get('cc_number', False):
173
val['cc_number'] = 'X' * i + t[-4:len(t)]
174
if type(ids) == type([]):
138
def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
140
Decrypt credit card number after reading from database and display last four digits if there is
141
no no_mask in context
142
@param self : The object pointer
143
@param cr: A database cursor
144
@param uid: ID of the user currently logged in
145
@param ids: List of ids selected
146
@param fields: List of fields
147
@param context: A standard dictionary
148
@param load: a parameter used for reading the values of functional fields
149
@return:List of dictionary of fields,values pair
153
if 'cc_number' in fields and 'key' not in fields:
155
vals = super(account_voucher, self).read(cr, uid, ids, fields, context, load)
157
if val.get('cc_number', False) :
158
dec_data = rsa_encrypt.decrypt(val.get('cc_number', False), val.get('key', False))
159
val['cc_number'] = dec_data
160
if context.get('cc_no', '') != 'no_mask':
161
i = len(val['cc_number']) - 4
162
val['cc_number'] = 'X' * i + val['cc_number'][-4:len(val['cc_number'])]