class sale_order_line(models.Model): _inherit = 'sale.order.line' _description = 'Sales Order Line' brand = fields.many2one( 'brand.brand', 'Brand', related="product_id.brand" ) #TODO Verificar sinntaxis de campo reñlated en ODOO 11
class account_voucher_line(osv.osv): _inherit= 'account.voucher.line' _columns={ 'event_date': fields.date('Date Of Service'), 'patient_id': fields.many2one('patient', 'Patient/Client',), 'reference': fields.char('Reference', size=64, select=1), 'project_name_id':fields.many2one('project','Project'), } def default_get(self, cr, user, fields_list, context=None): vals = super(account_voucher_line, self).default_get(cr, user, fields_list,context=context) vals.update({ 'account_id':'', 'type':'' }) return vals
class ir_mail_server(osv.osv): _inherit = 'ir.mail_server' _columns = { 'user_id': fields.many2one('res.users', string='Owner'), } _sql_constraints = [ ('smtp_user_uniq', 'unique(user_id)', 'That user already has a SMTP server.'), ]
class Souche(models.Model): _name = 'souchier.souche' name = fields.Char(string="Souche", required=True, index=True) description = fields.Text(string="Description") _sql_constraints = [('name', 'unique(name)', "Le nom de la souche doit etre unique")] client = fields.many2one(comodel_name='res.users', string="Client", required=True, ondelete='restrict') emplacement = fields.many2one(comodel_name='souchier.emplacement', string="Emplacement master", ondelete="restrict", required=True) emplacements_WS = fields.one2many(comodel_name='souchier.emplacement', string="Emplacements working seeds", ondelete='restrict', inverse_name='occupe_par', required=False) date_reception = fields.Date(required=True)
class res_partner_working_time(models.Model): _name = "res.partner.working.time" _columns = { 'partner_id': fields.many2one( 'res.partner', 'Partner', ondelete='cascade', select=True, domain=['|', ('is_company', '=', True), ('parent_id', '=', False)]), 'days': fields.char('Days'), 'morning': fields.char('Morning'), 'afternoon': fields.char('Afternoon'), }
class HrChildren(model.Model): """Class to add object of childrens to employee """ _name = "hr.children" _order = 'name' _columns = { 'name': fields.char('Name', size=64, required=True), 'date_of_birth': fields.date('Date of birth'), 'schooling': fields.selection([('elementary', 'Elementary'), ('high_school', 'High School'), ('preparatory', 'Preparatory'), ('university', 'University')], 'Schooling'), 'employee_id': fields.many2one('hr.employee', 'Employee') }
class WebsiteProposal(models.Model): _name = 'website_proposal.proposal' _rec_name = 'id' def _get_default_company(self): company_id = self.env['res.users']._get_company(context=context) if not company_id: raise UserError(_('Error!'), _('There is no default company for the current user!')) return company_id def _get_res_name(self, name, args): res = {} for r in self.browse(ids): record = self.env[r.res_model].browse(r.res_id) res[r.id] = record.name return res _columns = { 'res_name': fields.function(_get_res_name, string='Name', type='char'), 'access_token': fields.char('Security Token', required=True, copy=False), 'template_id': fields.many2one('website_proposal.template', 'Quote Template', readonly=True), 'head': fields.text('Html head'), 'page_header': fields.text('Page header'), 'website_description': fields.html('Description'), 'page_footer': fields.text('Page footer'), 'res_model': fields.char('Model', readonly=True, help="The database object this is attached to"), 'res_id': fields.integer('Resource ID', readonly=True, help="The record id this is attached to", select=True), 'sign': fields.binary('Singature'), 'sign_date': fields.datetime('Signing Date'), 'signer': fields.binary('Signer'), 'state': fields.selection([ ('draft', 'Draft'), ('rejected', 'Rejected'), ('done', 'Signed'), ]), 'company_id': fields.many2one('res.company', 'Company'), } _defaults = { 'access_token': lambda self, cr, uid, ctx={}: str(uuid.uuid4()), 'company_id': _get_default_company, 'state': 'draft', } def open_proposal(self): return { 'type': 'ir.actions.act_url', 'target': 'self', 'url': '/website_proposal/%s' % (ids[0]) } def edit_proposal(self): return { 'type': 'ir.actions.act_url', 'target': 'self', 'url': '/website_proposal/%s?enable_editor' % (ids[0]) } def create(self, vals): record = self.env[vals.get('res_model']).browse(vals.get('res_id')) mako = mako_template_env.from_string(tools.ustr(vals.get('website_description'))) website_description = mako.render({'record': record}) website_description = website_description.replace('template-only-', '') vals['website_description'] = website_description new_id = super(WebsiteProposal, self).create(vals) return new_id
class account_fiscalyear_close(osv.osv_memory): """ Closes Account Fiscalyear and Generate Opening entries for New Fiscalyear """ _name = "account.fiscalyear.close" _description = "Fiscalyear Close" _columns = { 'fy_id': fields.many2one('account.fiscalyear', 'Fiscal Year to close', required=True, help="Select a Fiscal year to close"), 'fy2_id': fields.many2one('account.fiscalyear', 'New Fiscal Year', required=True), 'journal_id': fields.many2one( 'account.journal', 'Opening Entries Journal', domain="[('type','=','situation')]", required=True, help= 'The best practice here is to use a journal dedicated to contain the opening entries of all fiscal years. Note that you should define it with default debit/credit accounts, of type \'situation\' and with a centralized counterpart.' ), 'period_id': fields.many2one('account.period', 'Opening Entries Period', required=True), 'report_name': fields.char('Name of new entries', required=True, help="Give name of the new entries"), } _defaults = { 'report_name': lambda self, cr, uid, context: _('End of Fiscal Year Entry'), } def data_save(self, cr, uid, ids, context=None): """ This function close account fiscalyear and create entries in new fiscalyear @param cr: the current row, from the database cursor, @param uid: the current user’s ID for security checks, @param ids: List of Account fiscalyear close state’s IDs """ def _reconcile_fy_closing(cr, uid, ids, context=None): """ This private function manually do the reconciliation on the account_move_line given as `ids´, and directly through psql. It's necessary to do it this way because the usual `reconcile()´ function on account.move.line object is really resource greedy (not supposed to work on reconciliation between thousands of records) and it does a lot of different computation that are useless in this particular case. """ # check that the reconcilation concern journal entries from only one company cr.execute( 'select distinct(company_id) from account_move_line where id in %s', (tuple(ids), )) if len(cr.fetchall()) > 1: raise osv.except_osv( _('Warning!'), _('The entries to reconcile should belong to the same company.' )) r_id = self.pool.get('account.move.reconcile').create( cr, uid, { 'type': 'auto', 'opening_reconciliation': True }) cr.execute( 'update account_move_line set reconcile_id = %s where id in %s', ( r_id, tuple(ids), )) # reconcile_ref deptends from reconcile_id but was not recomputed obj_acc_move_line._store_set_values(cr, uid, ids, ['reconcile_ref'], context=context) obj_acc_move_line.invalidate_cache(cr, uid, ['reconcile_id'], ids, context=context) return r_id obj_acc_period = self.pool.get('account.period') obj_acc_fiscalyear = self.pool.get('account.fiscalyear') obj_acc_journal = self.pool.get('account.journal') obj_acc_move = self.pool.get('account.move') obj_acc_move_line = self.pool.get('account.move.line') obj_acc_account = self.pool.get('account.account') obj_acc_journal_period = self.pool.get('account.journal.period') currency_obj = self.pool.get('res.currency') data = self.browse(cr, uid, ids, context=context) if context is None: context = {} fy_id = data[0].fy_id.id cr.execute( "SELECT id FROM account_period WHERE date_stop < (SELECT date_start FROM account_fiscalyear WHERE id = %s)", (str(data[0].fy2_id.id), )) fy_period_set = ','.join(map(lambda id: str(id[0]), cr.fetchall())) cr.execute( "SELECT id FROM account_period WHERE date_start > (SELECT date_stop FROM account_fiscalyear WHERE id = %s)", (str(fy_id), )) fy2_period_set = ','.join(map(lambda id: str(id[0]), cr.fetchall())) if not fy_period_set or not fy2_period_set: raise osv.except_osv( _('User Error!'), _('The periods to generate opening entries cannot be found.')) period = obj_acc_period.browse(cr, uid, data[0].period_id.id, context=context) new_fyear = obj_acc_fiscalyear.browse(cr, uid, data[0].fy2_id.id, context=context) old_fyear = obj_acc_fiscalyear.browse(cr, uid, fy_id, context=context) new_journal = data[0].journal_id.id new_journal = obj_acc_journal.browse(cr, uid, new_journal, context=context) company_id = new_journal.company_id.id if not new_journal.default_credit_account_id or not new_journal.default_debit_account_id: raise osv.except_osv( _('User Error!'), _('The journal must have default credit and debit account.')) if (not new_journal.centralisation) or new_journal.entry_posted: raise osv.except_osv( _('User Error!'), _('The journal must have centralized counterpart without the Skipping draft state option checked.' )) # delete existing move and move lines if any move_ids = obj_acc_move.search(cr, uid, [('journal_id', '=', new_journal.id), ('period_id', '=', period.id)]) if move_ids: move_line_ids = obj_acc_move_line.search( cr, uid, [('move_id', 'in', move_ids)]) obj_acc_move_line._remove_move_reconcile( cr, uid, move_line_ids, opening_reconciliation=True, context=context) obj_acc_move_line.unlink(cr, uid, move_line_ids, context=context) obj_acc_move.unlink(cr, uid, move_ids, context=context) cr.execute("SELECT id FROM account_fiscalyear WHERE date_stop < %s", (str(new_fyear.date_start), )) result = cr.dictfetchall() fy_ids = [x['id'] for x in result] query_line = obj_acc_move_line._query_get( cr, uid, obj='account_move_line', context={'fiscalyear': fy_ids}) # create the opening move vals = { 'name': '/', 'ref': '', 'period_id': period.id, 'date': period.date_start, 'journal_id': new_journal.id, } move_id = obj_acc_move.create(cr, uid, vals, context=context) # 1. report of the accounts with defferal method == 'unreconciled' cr.execute( ''' SELECT a.id FROM account_account a LEFT JOIN account_account_type t ON (a.user_type_id = t.id) WHERE a.active AND a.type not in ('view', 'consolidation') AND a.company_id = %s AND t.close_method = %s''', ( company_id, 'unreconciled', )) account_ids = map(lambda x: x[0], cr.fetchall()) if account_ids: cr.execute( ''' INSERT INTO account_move_line ( name, create_uid, create_date, write_uid, write_date, statement_id, journal_id, currency_id, date_maturity, partner_id, blocked, credit, state, debit, ref, account_id, period_id, date, move_id, amount_currency, quantity, product_id, company_id) (SELECT name, create_uid, create_date, write_uid, write_date, statement_id, %s,currency_id, date_maturity, partner_id, blocked, credit, 'draft', debit, ref, account_id, %s, (%s) AS date, %s, amount_currency, quantity, product_id, company_id FROM account_move_line WHERE account_id IN %s AND ''' + query_line + ''' AND reconcile_id IS NULL)''', ( new_journal.id, period.id, period.date_start, move_id, tuple(account_ids), )) # We have also to consider all move_lines that were reconciled # on another fiscal year, and report them too cr.execute( ''' INSERT INTO account_move_line ( name, create_uid, create_date, write_uid, write_date, statement_id, journal_id, currency_id, date_maturity, partner_id, blocked, credit, state, debit, ref, account_id, period_id, date, move_id, amount_currency, quantity, product_id, company_id) (SELECT b.name, b.create_uid, b.create_date, b.write_uid, b.write_date, b.statement_id, %s, b.currency_id, b.date_maturity, b.partner_id, b.blocked, b.credit, 'draft', b.debit, b.ref, b.account_id, %s, (%s) AS date, %s, b.amount_currency, b.quantity, b.product_id, b.company_id FROM account_move_line b WHERE b.account_id IN %s AND b.reconcile_id IS NOT NULL AND b.period_id IN (''' + fy_period_set + ''') AND b.reconcile_id IN (SELECT DISTINCT(reconcile_id) FROM account_move_line a WHERE a.period_id IN (''' + fy2_period_set + ''')))''', ( new_journal.id, period.id, period.date_start, move_id, tuple(account_ids), )) self.invalidate_cache(cr, uid, context=context) # 2. report of the accounts with defferal method == 'detail' cr.execute( ''' SELECT a.id FROM account_account a LEFT JOIN account_account_type t ON (a.user_type_id= t.id) WHERE a.active AND a.type not in ('view', 'consolidation') AND a.company_id = %s AND t.close_method = %s''', ( company_id, 'detail', )) account_ids = map(lambda x: x[0], cr.fetchall()) if account_ids: cr.execute( ''' INSERT INTO account_move_line ( name, create_uid, create_date, write_uid, write_date, statement_id, journal_id, currency_id, date_maturity, partner_id, blocked, credit, state, debit, ref, account_id, period_id, date, move_id, amount_currency, quantity, product_id, company_id) (SELECT name, create_uid, create_date, write_uid, write_date, statement_id, %s,currency_id, date_maturity, partner_id, blocked, credit, 'draft', debit, ref, account_id, %s, (%s) AS date, %s, amount_currency, quantity, product_id, company_id FROM account_move_line WHERE account_id IN %s AND ''' + query_line + ''') ''', ( new_journal.id, period.id, period.date_start, move_id, tuple(account_ids), )) self.invalidate_cache(cr, uid, context=context) # 3. report of the accounts with defferal method == 'balance' cr.execute( ''' SELECT a.id FROM account_account a LEFT JOIN account_account_type t ON (a.user_type_id = t.id) WHERE a.active AND a.type not in ('view', 'consolidation') AND a.company_id = %s AND t.close_method = %s''', ( company_id, 'balance', )) account_ids = map(lambda x: x[0], cr.fetchall()) query_1st_part = """ INSERT INTO account_move_line ( debit, credit, name, date, move_id, journal_id, period_id, account_id, currency_id, amount_currency, company_id, state) VALUES """ query_2nd_part = "" query_2nd_part_args = [] for account in obj_acc_account.browse(cr, uid, account_ids, context={'fiscalyear': fy_id}): company_currency_id = self.pool.get('res.users').browse( cr, uid, uid).company_id.currency_id if not currency_obj.is_zero(cr, uid, company_currency_id, abs(account.balance)): if query_2nd_part: query_2nd_part += ',' query_2nd_part += "(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" query_2nd_part_args += ( account.balance > 0 and account.balance or 0.0, account.balance < 0 and -account.balance or 0.0, data[0].report_name, period.date_start, move_id, new_journal.id, period.id, account.id, account.currency_id and account.currency_id.id or None, account.foreign_balance if account.currency_id else 0.0, account.company_id.id, 'draft') if query_2nd_part: cr.execute(query_1st_part + query_2nd_part, tuple(query_2nd_part_args)) self.invalidate_cache(cr, uid, context=context) # validate and centralize the opening move obj_acc_move.validate(cr, uid, [move_id], context=context) # reconcile all the move.line of the opening move ids = obj_acc_move_line.search( cr, uid, [('journal_id', '=', new_journal.id), ('period_id.fiscalyear_id', '=', new_fyear.id)]) if ids: reconcile_id = _reconcile_fy_closing(cr, uid, ids, context=context) # set the creation date of the reconcilation at the first day of the new fiscalyear, in order to have good figures in the aged trial balance self.pool.get('account.move.reconcile').write( cr, uid, [reconcile_id], {'create_date': new_fyear.date_start}, context=context) # create the journal.period object and link it to the old fiscalyear new_period = data[0].period_id.id ids = obj_acc_journal_period.search( cr, uid, [('journal_id', '=', new_journal.id), ('period_id', '=', new_period)]) if not ids: ids = [ obj_acc_journal_period.create( cr, uid, { 'name': (new_journal.name or '') + ':' + (period.code or ''), 'journal_id': new_journal.id, 'period_id': period.id }) ] cr.execute( 'UPDATE account_fiscalyear ' 'SET end_journal_period_id = %s ' 'WHERE id = %s', (ids[0], old_fyear.id)) obj_acc_fiscalyear.invalidate_cache(cr, uid, ['end_journal_period_id'], [old_fyear.id], context=context) return {'type': 'ir.actions.act_window_close'}
class Emplacement(models.Model): _name = 'souchier.emplacement' name = fields.Char(string="Emplacement", required=True, index=True) occupe_par = fields.many2one(comodel_name='souchier.souche', required=False, , ondelete='set null')
class assign_interpreter(osv.osv_memory): """ A wizard to assign interpreter to event """ _name = 'assign.interpreter' # def message_open(self , cr ,uid , ids , context=None): # res = self.pool.get('warning').warning(cr ,uid ,title='Title', message='Text' ) # return res def update_interpreter(self, cr, uid, ids, context): ''' This function updates or assigns interpreter in the event form ''' res = [] cur_obj = self.browse(cr, uid, ids[0]) # if not interpreter2: # raise osv.except_osv(_('Warning!'),_('You must select an Interpreter to assign to this event.')) #print "interpreter.......",interpreter event_ids = context.get('active_ids', []) #print "event_ids......",event_ids if not event_ids: return res count = 0 for interp in cur_obj.interpreter_ids: if interp.select: count += 1 if count == 0: raise osv.except_osv( _('Warning!'), _('You must select an Interpreter to assign to this event.')) if count > 1: raise osv.except_osv( _('Warning!'), _('You can select only one Interpreter to assign to this event.' )) for interp in cur_obj.interpreter_ids: #print "interp...........",interp if interp.select: res = self.pool.get('event').write( cr, uid, event_ids, { 'interpreter_id': interp.interpreter_id and interp.interpreter_id.id or False, 'voicemail_msg': interp.voicemail_msg, 'state': 'scheduled' }) return res #res = self.pool.get('event').write(cr ,uid ,event_ids , {'interpreter_id':interpreter2.interpreter_id and interpreter2.interpreter_id.id or False,'state':'scheduled'}) return res # def onchange_partner_id(self, cr, uid, ids, partner_id, context = None): # # for p in self.pool.get('product.product').browse(cr, uid, product_ids): # invoice_lines.append((0,0,{'product_id':p.id,'name':p.name, # 'account_id':p.categ_id.property_account_income_categ.id, # }))#this dict contain keys which are fields of one2many field # res['value']['interpreter_ids']=[(6, 0, tax_ids)] # return res def default_get(self, cr, uid, fields, context=None): print "default_get........" #cr.execute('insert into relation_name (self_id,module_name_id) values(%s,%s)',(first_value,second_value) res = {} if context is None: context = {} res = super(assign_interpreter, self).default_get(cr, uid, fields, context=context) event_ids = context.get('active_ids', []) print "event_ids........", event_ids #active_model = context.get('active_model') if not event_ids or len(event_ids) != 1: # Partial Picking Processing may only be done for one picking at a time return res event_id, = event_ids if 'event_id' in fields: res.update(event_id=event_id) event = self.pool.get('event').browse(cr, uid, event_id, context=context) state = event.state if 'language_id' in fields: res.update({ 'language_id': event.language_id and event.language_id.id or False }) #print "default_get..........",res event_ids = context.get('active_ids', []) #print "event_ids.......",event_ids obj = self.pool.get('hr.employee') select_obj = self.pool.get('select.interpreter') interpreter_ids = new_ids = select_ids = [] if event_ids: lang = self.pool.get('event').browse(cr, uid, event_ids[0]).language_id partner = self.pool.get('event').browse(cr, uid, event_ids[0]).partner_id # print "lang....",lang # lang = self.browse(cr, uid, ids, context=context) # sql = "select interpreter_id from interpreter_language where name = %d"%(lang.id) int_lang_ids = self.pool.get('interpreter.language').search( cr, uid, [('name', '=', lang.id)]) # print "int_lang_ids........",int_lang_ids if int_lang_ids: for int_lang_id in int_lang_ids: lang_browse = self.pool.get('interpreter.language').browse( cr, uid, int_lang_id) interpreter_ids.append(lang_browse.interpreter_id.id) new_ids = interpreter_ids if interpreter_ids: print "interpreter_ids........", interpreter_ids zip = partner.zip #print "zip...........",zip if zip: # gibberish = urllib.urlopen('http://www.uszip.com/zip/' + '203150') # less_gib = gibberish.read().decode('utf-8') # query = "select id from hr_employee where zip = %s and id in %s"%( str(zip) + '' , tuple(interpreter_ids)) # cr.execute(query ) # i_ids = map(lambda x: x[0], cr.fetchall()) min_zip = int(zip) - 10 max_zip = int(zip) + 10 print "min_zip...max_zip......", min_zip, max_zip visit_ids = [] for history in partner.interpreter_history: if history.name.id in interpreter_ids: visit_ids.append(history.name.id) if visit_ids: visit_ids = flatten(visit_ids) visit_ids = list(set(visit_ids)) print "visit_ids........", visit_ids for visit_id in visit_ids: if visit_id in interpreter_ids: interpreter_ids.remove(visit_id) # print "visit_ids........",visit_ids # print "interpreter_ids......",interpreter_ids i_ids = obj.search(cr, uid, [('zip', '=', zip), ('id', 'in', tuple(interpreter_ids))], order="rate") # print "i_ids.......",i_ids # i_ids1 = obj.search(cr ,uid ,[('zip','!=',zip),('zip','!=',zip),('zip','!=',zip),('id','in',tuple(interpreter_ids))]) # query = "select id from hr_employee where zip::integer != %s and zip::integer <= %s and zip::integer >= %s and id in %s order by rate "%( str(zip), str(max_zip) ,str(min_zip) , tuple(interpreter_ids)) # cr.execute(query ) # i_ids1 = map(lambda x: x[0], cr.fetchall()) i_ids1 = obj.search(cr, uid, [('zip', '!=', zip), ('zip', '<=', max_zip), ('zip', '>=', min_zip), ('id', 'in', tuple(interpreter_ids))], order="rate") print "i_ids1.......", i_ids1 new_ids = i_ids + i_ids1 # print "new_ids...........",new_ids # select_ids = select_obj.search(cr ,uid ,[]) # print "select_ids........",select_ids # for select_id in select_ids: # select_obj.unlink(cr ,uid , select_id) # query1 = "delete from select_assign_rel " # cr.execute(query1 ) select_ids = [] for visit_id in visit_ids: query = "select max(event_date) from interpreter_alloc_history where partner_id = %s and name = %s " % ( partner.id, visit_id) cr.execute(query) last_visit_date = map(lambda x: x[0], cr.fetchall()) # print "last_visit_date........",last_visit_date history_ids = self.pool.get( 'interpreter.history').search( cr, uid, [( 'name', '=', visit_id, ), ('event_id', '=', event_ids[0]), ('state', '=', 'voicemailsent')], order="event_date desc") #voicemail_msg = self.pool.get('hr.employee').browse(cr ,uid , visit_id).voicemail_msg voicemail_msg = '' if history_ids: voicemail_msg = self.pool.get( 'interpreter.history').browse( cr, uid, history_ids[0]).voicemail_msg if last_visit_date and last_visit_date[0]: select_ids.append( select_obj.create( cr, uid, { 'interpreter_id': visit_id, 'event_id': event_ids[0], 'visited': True, 'visited_date': last_visit_date, 'state': state, 'voicemail_msg': voicemail_msg })) else: select_ids.append( select_obj.create( cr, uid, { 'interpreter_id': visit_id, 'event_id': event_ids[0], 'visited': True, 'state': state, 'voicemail_msg': voicemail_msg })) for new_id in new_ids: history_ids = self.pool.get( 'interpreter.history').search( cr, uid, [( 'name', '=', new_id, ), ('event_id', '=', event_ids[0]), ('state', '=', 'voicemailsent')], order="event_date desc") voicemail_msg = '' if history_ids: voicemail_msg = self.pool.get( 'interpreter.history').browse( cr, uid, history_ids[0]).voicemail_msg select_ids.append( select_obj.create( cr, uid, { 'interpreter_id': new_id, 'event_id': event_ids[0], 'state': state, 'voicemail_msg': voicemail_msg })) # new_ids = tuple(new_ids) # print "new_ids.....",new_ids # print "list(new_ids).....",list(new_ids) # print "select_ids........",select_ids res['interpreter_ids'] = select_ids #[(6, 0, select_ids)] return res def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): print "fields_view_get......." if context is None: context = {} result = super(assign_interpreter, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu) if 'active_ids' not in context: context['active_ids'] = [] # event_ids = context.get('active_ids', []) # print "event_ids.......",event_ids # obj = self.pool.get('hr.employee') # select_obj = self.pool.get('select.interpreter') # interpreter_ids = new_ids = [] query = "delete from select_interpreter " cr.execute(query) query = "delete from select_assign_rel " cr.execute(query) # if event_ids: # lang = self.pool.get('event').browse(cr ,uid ,event_ids[0]).language_id # partner = self.pool.get('event').browse(cr ,uid ,event_ids[0]).partner_id # print "lang....",lang # lang = self.browse(cr, uid, ids, context=context) # sql = "select interpreter_id from interpreter_language where name = %d"%(lang.id) # int_lang_ids = self.pool.get('interpreter.language').search(cr ,uid ,[('name','=',lang.id)]) # print "int_lang_ids........",int_lang_ids # # if int_lang_ids: # for int_lang_id in int_lang_ids: # lang_browse = self.pool.get('interpreter.language').browse(cr ,uid ,int_lang_id) # interpreter_ids.append(lang_browse.interpreter_id.id) # new_ids = interpreter_ids # if interpreter_ids: # print "interpreter_ids........",interpreter_ids # zip = partner.zip # print "zip...........",zip # if zip: # gibberish = urllib.urlopen('http://www.uszip.com/zip/' + '203150') # less_gib = gibberish.read().decode('utf-8') # query = "select id from hr_employee where zip = %s and id in %s"%( str(zip) + '' , tuple(interpreter_ids)) # cr.execute(query ) # i_ids = map(lambda x: x[0], cr.fetchall()) # min_zip = int(zip) - 10 # max_zip = int(zip) + 10 # print "min_zip...max_zip......",min_zip,max_zip # visit_ids = [] # for history in partner.interpreter_history: # visit_ids.append(history.name.id) # if visit_ids: # visit_ids = flatten(visit_ids) # visit_ids = list(set(visit_ids)) # print "visit_ids........",visit_ids # for visit_id in visit_ids: # if visit_id in interpreter_ids: # interpreter_ids.remove(visit_id) # print "visit_ids........",visit_ids # print "interpreter_ids......",interpreter_ids # i_ids = obj.search(cr ,uid ,[('zip','=',zip),('id','in',tuple(interpreter_ids))] , order ="rate") # print "i_ids.......",i_ids # #i_ids1 = obj.search(cr ,uid ,[('zip','!=',zip),('zip','!=',zip),('zip','!=',zip),('id','in',tuple(interpreter_ids))]) # query = "select id from hr_employee where zip::integer != %s and zip::integer <= %s and zip::integer >= %s and id in %s order by rate "%( str(zip), str(max_zip) ,str(min_zip) , tuple(interpreter_ids)) # cr.execute(query ) # i_ids1 = map(lambda x: x[0], cr.fetchall()) # print "i_ids1.......",i_ids1 # new_ids = visit_ids + i_ids + i_ids1 # print "new_ids...........",new_ids # select_ids = select_obj.search(cr ,uid ,[]) # print "select_ids........",select_ids # for select_id in select_ids: # select_obj.unlink(cr ,uid , select_id) # for new_id in new_ids: # select_ids = select_obj.create(cr ,uid ,{'interp_id':new_id,'interpreter_id':new_id,}) # new_ids = tuple(new_ids) # print "new_ids.....",new_ids # print "list(new_ids).....",list(new_ids) # print "select_ids.......",select_ids # new_ids = flatten(new_ids) # print "new_ids.........",new_ids # new_ids = list(set(new_ids)) # print "new_ids.........",new_ids # #print "interpreter_ids.......",interpreter_ids # if view_type=='form': # _moves_arch_lst = """<form string="Assign Interpreter" version="7.0"> # """ # #<field name="interpreter_id" domain="[('id','in',%s)]" required="1"/> %(list(new_ids)) # _moves_arch_lst += """ # <group> # # <field name="interpreter_id2" /> # <separator/> # <separator/> # <field name="interpreter_ids" nolabel="1" > # <tree editable="top"> # <field name="select" /> # <field name="name" /> # <field name="middle_name" /> # <field name="last_name" /> # <field name="zip" /> # <field name="rate" /> # </tree> # <field /> # </group> # <footer> # <button string="Assign Interpreter" name="update_interpreter" type="object" class="oe_highlight"/> # or # <button string="Cancel" class="oe_link" special="cancel" /> # </footer> """ # _moves_arch_lst += """ </form>""" # result['arch'] = _moves_arch_lst return result _columns = { #'language_id': fields.many2one("language" ,"Language",ondelete="CASCADE"), 'event_id': fields.many2one( "event", "Event Id", ), #'voicemail_msg': fields.char("Voicemail Message" , size=32), #'interpreter_id': fields.many2one("hr.employee",'Interpreter', ondelete="CASCADE" ), #'interpreter_id2': fields.many2one("select.interpreter",'Interpreter2', ondelete="CASCADE" ), #'interpreter_lines': fields.one2many('select.interpreter','assign_id','Interpreters'), 'interpreter_ids': fields.many2many("select.interpreter", 'select_assign_rel', 'wiz_id', 'interp_id', "Interpreters"), }
class ProjectProject(models.Model): _inherit = 'project.project' task_categ_id = fields.many2one('project.category', 'Root Category for Tasks')