def _admin_password_warn(uid): """ Admin still has `admin` password, flash a message via chatter. Uses a private mail.channel from the system (/ eaglebot) to the user, as using a more generic mail.thread could send an email which is undesirable Uses mail.channel directly because using mail.thread might send an email instead. """ if request.params['password'] != 'admin': return if ipaddress.ip_address(request.httprequest.remote_addr).is_private: return admin = request.env.ref('base.partner_admin') if uid not in admin.user_ids.ids: return user = request.env(user=uid)['res.users'] MailChannel = request.env(user=SUPERUSER_ID, context=user.context_get(), su=True)['mail.channel'] MailChannel.browse(MailChannel.channel_get([admin.id])['id'])\ .message_post( body=_("Your password is the default (admin)! If this system is exposed to untrusted users it is important to change it immediately for security reasons. I will keep nagging you about it!"), message_type='comment', subtype='mail.mt_comment' )
def render_student_verification(self, **post): """ inherit render_student_verification method, student additional form should student admission form. ------------------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : booleab(True) @return : """ if 'DATE' in post and post['DATE']: data = post['DATE'] link_date = self.decode_base64(data) if link_date == '': return request.render("website_student_enquiry.student_link_expired_templet",{}) if 'ENQUIRY' in post and post['ENQUIRY']: eq_no = str(post['ENQUIRY']) env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) reg_obj = env['registration'] reg_rec = reg_obj.sudo().search([('enquiry_no','=',eq_no)],limit=1) if reg_rec.id: if reg_rec.add_form_filled != True: if link_date != '0000-00-00': s_date = datetime.strptime(link_date, '%Y-%m-%d').date() l_date = s_date + timedelta(days=10) c_date = date.today() if s_date <= c_date < l_date: if 'ENQUIRY' in post and post['ENQUIRY']: student_obj = env['res.partner'] student_rec = student_obj.sudo().search(['|',('active','=',True), ('strike_off','=',True), ('is_student','=',True), ('reg_no','=',eq_no)],limit=1) if student_rec.id: e_student_id = base64.b64encode(str(student_rec.id)) return request.redirect( "/student/verification/pagecode?student_id=%s" % (e_student_id)) else: return request.render("website_student_enquiry.student_link_expired_templet",{}) else: if 'ENQUIRY' in post and post['ENQUIRY']: eq_no = str(post['ENQUIRY']) env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] student_rec = student_obj.sudo().search(['|',('active','=',True), ('strike_off','=',True), ('is_student','=',True), ('reg_no','=',eq_no)],limit=1) if student_rec.id: e_student_id = base64.b64encode(str(student_rec.id)) return request.redirect( "/student/verification/pagecode?student_id=%s" % (e_student_id)) else: return request.render("website_student_enquiry.student_link_expired_templet",{})
def render_re_registration_request(self, **post): """ this method is used to call webpage for re-registraton, confirmation. parent book seat for next academic year in advance, ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : call templet also pass dictonary for required data """ child_rec_list_length = 0 env = request.env(user=SUPERUSER_ID) if 'REREG' in post and post.get('REREG'): data = post.get('REREG') code_re_reg = self.decode_base64(data) env = request.env(context=dict( request.env.context, show_address=True, no_tag_br=True)) parents_re_reg_obj = env['re.reg.waiting.responce.parents'] student_re_reg_obj = env['re.reg.waiting.responce.student'] parent_re_reg_rec = parents_re_reg_obj.sudo().search( [('code', '=', code_re_reg)], limit=1) student_re_reg_rec = student_re_reg_obj.sudo().search( [('code', '=', code_re_reg)], limit=1) if parent_re_reg_rec.id: child_rec_list = [] for ch_rec in parent_re_reg_rec.student_ids: if not ch_rec.confirm: child_rec_list.append(ch_rec) child_rec_list_length = len(child_rec_list) return http.request.render( "edsys_edu_re_registration.re_registration_request", { 'parent_rec': parent_re_reg_rec, 'children_rec_list': child_rec_list, 'child_rec_list_length': child_rec_list_length }) elif student_re_reg_rec.id: child_rec_list = [student_re_reg_rec] child_rec_list_length = len(child_rec_list) return http.request.render( "edsys_edu_re_registration.re_registration_request", { 'parent_rec': student_re_reg_rec.re_reg_parents, 'children_rec_list': child_rec_list, 'child_rec_list_length': child_rec_list_length }) return http.request.render( "edsys_edu_re_registration.re_registration_request", {})
def render_employement_form(self, **post): """ this method is used to Student email varification, if write email id then move to page that he is update his information and fill other details. ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : call templet also pass dictonary for required data """ employee_id = post.get('employee') env = request.env(context=dict(request.env.context)) hr_emp_obj = env['hr.employee'] ir_model_fields_obj = env['ir.model.fields'] hr_emp_rec = hr_emp_obj.sudo().search([('id','=',employee_id)]) # if hr_emp_rec.employment_form_filled == True: # return request.render("edsys_hrm.employement_link_expired_templet",{}) orm_country = env['res.country'] orm_currency = env['res.currency'] state_orm = env['res.country.state'] orm_visa_type = env['visa.type'] orm_ir_attachment = env['ir.attachment'] countries = orm_country.sudo().search([]) currencies = orm_currency.sudo().search([]) states = state_orm.sudo().search([]) visa_type_ids = orm_visa_type.sudo().search([]) resume_ids = orm_ir_attachment.sudo().search([('name','=','Resume'),('res_model','=', 'hr.employee'), ('res_id','=',hr_emp_rec.id)]) if not resume_ids : resume_ids = False salary_certificate_ids = orm_ir_attachment.sudo().search([('name','=','Salary Certificate'),('res_model','=', 'hr.employee'), ('res_id','=',hr_emp_rec.id)]) if not salary_certificate_ids : salary_certificate_ids = False passport_copy_ids = orm_ir_attachment.sudo().search([('name','=','Passport'),('res_model','=', 'hr.employee'), ('res_id','=',hr_emp_rec.id)]) if not passport_copy_ids : passport_copy_ids = False relieving_letter_ids = orm_ir_attachment.sudo().search([('name','=','Relieving Letter'),('res_model','=', 'hr.employee'), ('res_id','=',hr_emp_rec.id)]) if not relieving_letter_ids : relieving_letter_ids = False if hr_emp_rec.id : if hr_emp_rec.image_medium : image_medium = True else : image_medium = False hr_web_data = { 'hr_emp_rec' : hr_emp_rec, 'countries' : countries, 'currencies' : currencies, 'states' : states, 'visa_type_ids' : visa_type_ids, 'resume_ids' : resume_ids, 'salary_certificate_ids' : salary_certificate_ids, 'relieving_letter_ids' : relieving_letter_ids, 'passport_copy_ids' : passport_copy_ids, 'image_medium' : image_medium, } return request.render("edsys_hrm.website_epmloyement_application_form",hr_web_data)
def render_page3(self, **post): """ this method store data from current(3) page, and redirect to page next page(4) ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] student_rec = student_obj.sudo().browse(int(post.get('student_id'))) if not student_rec.id: return request.redirect("/student/verification/expired") else: Special_Learning_Disability_Details = False if post.get('Special_Learning_Disability'): Special_Learning_Disability_Details = post.get('Special_Learning_Disability_Details') student_data = { 'prev_institute': post.get('Current_School_Name') or '', 'prev_academic_city': post.get('Prev_Academic_City') or '', 'curriculum': post.get('Curriculum') or '', 'medium_of_instruction': post.get('Medium_of_Instruction') or '', 'last_attendance': post.get('Last_Attendance_Date') or False, 'tranfer_reason': post.get('Reason_for_Transfer') or '', 'received_double_promotion': post.get('Received_Double_Promotion') or '', 'identified_gifted_or_talented': post.get('Identified_Gifted_or_Talented') or '', 'has_child_detained': post.get('Has_Child_Detained') or '', 'child_received_academic_distinction': post.get('Child_Received_Academic_Distinction') or '', 'child_received_academic_distinction_details': post.get( 'Child_Received_Academic_Distinction_Details') or '', 'has_suspended_expelled_by_school' : post.get('Has_Suspended_Expelled_by_School') or '', 'has_suspended_expelled_by_school_details' : post.get('Has_Suspended_Expelled_by_School_Details') or '', 'child_associated_with_awareness' : post.get('Child_Associated_with_Awareness') or '', 'child_associated_with_awareness_details' : post.get('Child_Associated_with_Awareness_Details') or '', 'member_of_environment_protection' : post.get('Member_of_Environment_Protection') or '', 'member_of_environment_protection_details' : post.get('Member_of_Environment_Protection_Details') or '', 'leadership_positions_in_school' : post.get('Leadership_Positions_in_School') or '', 'leadership_positions_in_school_details' : post.get('Leadership_Positions_in_School_Details') or '', 'special_education_programme' : post.get('Special_Education_Programme') or '', 'special_education_programme_details' : post.get('Special_Education_Programme_Details') or '', 'special_learning_disability' : post.get('Special_Learning_Disability') or False, 'special_learning_disability_details' : Special_Learning_Disability_Details or False, 'has_other_than_english_languages' : post.get('Has_Other_than_English_Languages') or '', 'other_than_english_languages' : post.get('Other_than_English_Languages') or '', 'other_lang_id' : post.get('Optional_Lang') or '', 'has_child_detained_grade' : post.get('Has_Child_Detained_Grade') or '', } student_rec.sudo().write(student_data) reg_obj = env['registration'] reg_rec = reg_obj.sudo().search([('enquiry_no','=',student_rec.reg_no)],limit=1) reg_rec.sudo().write(student_data) e_page_code = base64.b64encode('4') e_student_id = base64.b64encode(str(post.get('student_id'))) return request.redirect("/student/verification/pagecode?page_code=%s&student_id=%s" % (e_page_code,e_student_id))
def oauth2callback(self, **kw): """ This route/function is called by Google when user Accept/Refuse the consent of Google """ state = json.loads(kw['state']) dbname = state.get('d') service = state.get('s') url_return = state.get('f') with registry(dbname).cursor() as cr: if kw.get('code'): request.env(cr, request.session.uid)['google.%s' % service].set_all_tokens( kw['code']) return redirect(url_return) elif kw.get('error'): return redirect("%s%s%s" % (url_return, "?error=", kw['error'])) else: return redirect("%s%s" % (url_return, "?error=Unknown_error"))
def render_page4(self, **post): """ this method store data from current(4) page, and redirect to page next page(5) ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] student_rec = student_obj.sudo().browse(int(post.get('student_id'))) if not student_rec.id: return request.redirect("/student/verification/expired") else: student_data = { 'hobbies_interests': post.get('Hobbies_Interests') or '', 'has_play_any_musical_instrument': post.get('Has_Play_any_Musical_Instrument') or '', 'musical_instrument_details': post.get('Musical_Instrument_Details') or '', 'has_formal_training_in_music': post.get('Has_Formal_Training_in_Music') or '', 'training_in_music_details': post.get('Training_in_Music_Details') or '', 'sport_child_play': post.get('Sport_Child_Play') or '', 'has_training_or_interest_art': post.get('Has_Training_or_Interest_Art') or '', 'has_training_or_interest_art_details': post.get('Training_or_Interest_Art_Details') or '', 'inter_school_competitions': post.get('Inter_School_Competitions') or '', 'inter_school_competitions_details': post.get('Inter_School_Competitions_Details') or '', 'special_activity_interested': post.get('Special_Activity_Interested') or '', 'adjusts_new_situations_with_ease': self.get_check_box_value( post.get('Adjusts_New_Situations_with_Ease')) or '', 'has_small_group_of_friends': self.get_check_box_value( post.get('Has_Small_Group_of_Friends')) or '', 'has_never_adjust_new_situation': self.get_check_box_value( post.get('Has_Never_Adjust_New_Situation')) or '', 'has_many_friends': self.get_check_box_value( post.get('Has_Many_Friends')) or '', 'likes_be_active_in_school': self.get_check_box_value( post.get('Likes_be_Active_in_School')) or '', 'expressions_describe_your_child': post.get('Expressions_Describe_your_Child') or '', 'social_emotional_behavioural_difficulties': post.get('Social_Emotional_Behavioural_Difficulties') or '', 'social_emotional_behavioural_difficulties_details': post.get( 'Social_Emotional_Behavioural_Difficulties_Details') or '', 'useful_information_for_educating': post.get('Useful_Information_for_Educating') or '', 'person_to_call' : post.get('Person_to_Call') or '', 'emergency_relationship' : post.get('Emergency_Relationship') or '', 'emergency_contact' : post.get('Emergency_Tel_No') or '', 'has_use_bus_facility' : post.get('Has_Use_Bus_Facility') or '', 'pick_up' : post.get('Pick_Up') or '', } student_rec.sudo().write(student_data) reg_obj = env['registration'] reg_rec = reg_obj.sudo().search([('enquiry_no','=',student_rec.reg_no)],limit=1) reg_rec.sudo().write(student_data) e_page_code = base64.b64encode('5') e_student_id = base64.b64encode(str(post.get('student_id'))) return request.redirect("/student/verification/pagecode?page_code=%s&student_id=%s" % (e_page_code,e_student_id))
def new_employee(self,**post): env = request.env(user=SUPERUSER_ID) orm_country = env['res.country'] orm_hr_job = env['hr.job'] countries = orm_country.sudo().search([]) hr_job_ids = orm_hr_job.sudo().search([]) hr_web_data = { 'countries' : countries, 'hr_job_ids' : hr_job_ids, } return request.render("edsys_hrm.new_employement_form",hr_web_data)
def render_page5(self, **post): """ this method store data from current(5) page, and redirect to page next page(6) ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : call templet also pass dictonary for required data """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] student_rec = student_obj.sudo().browse(int(post.get('student_id'))) if not student_rec.id: return request.redirect("/student/verification/expired") else: under_medi = False if post.get('Under_Medication') == True or post.get('Under_Medication') == 'True': under_medi = True student_data = { 'normal_delivery' : post.get('Normal_Delivery') or '', 'caesarean' : post.get('Caesarean') or '', 'premature' : post.get('Premature') or '', # 'developmental_milestones' : post.get('Developmental_Milestones') or '', 'age_your_child_talk' : post.get('Age_Your_Child_Talk') or '', 'hand_preference' : post.get('Hand_Preference') or '', 'can_button_his_shirt' : post.get('Can_Button_his_Shirt') or '', 'can_zip_his_pant' : post.get('Can_Zip_his_Pant') or '', 'can_child_indicate_his_toilet_needs' : post.get('Can_Child_Indicate_his_Toilet_Needs') or '', 'child_indicate_his_toilet_needs_details' : post.get('Child_Indicate_his_Toilet_Needs_Details') or '', 'child_know_his_phone_number' : post.get('Child_Know_his_Phone_Number') or '', 'toys_likes_to_play_with' : post.get('Toys_Likes_to_Play_With') or '', 'special_interest' : post.get('Special_Interest') or '', 'child_like_to_play_with' : post.get('Child_Like_to_Play_With') or '', 'child_like_to_look_at_picture' : post.get('Child_Like_to_Look_at_Picture') or '', 'child_like_to_watch_tv_programmes' : post.get('Child_Like_to_Watch_TV_Programmes') or '', 'channels_like_to_watch' : post.get('Channels_Like_to_Watch') or '', 'child_have_any_health_problem' : post.get('Child_Have_Any_Health_Problem') or '', 'health_problem_details' : post.get('Health_Problem_Details') or '', 'under_medication' : under_medi or False, 'w_medication_mention' : post.get('W_Medication_Mention') or '', } student_rec.sudo().write(student_data) reg_obj = env['registration'] reg_rec = reg_obj.sudo().search([('enquiry_no','=',student_rec.reg_no)],limit=1) reg_rec.sudo().write(student_data) e_page_code = base64.b64encode('6') e_student_id = base64.b64encode(str(post.get('student_id'))) return request.redirect("/student/verification/pagecode?page_code=%s&student_id=%s" % (e_page_code,e_student_id))
def get_page_wise_value(self, student_id, page_code): """ this method is use to get student id and page code, based on that return page wise value in proper formate. ------------------------------------------------------- :param student_id: student id :param page_code: page code :return: return list of tuple formate. """ res = [] env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] student_rec = student_obj.sudo().browse(int(student_id)) if page_code == '0': res = [ ('allergic',student_rec.child_allergic), ('under_medication',student_rec.under_medication), ('transport_type',student_rec.transport_type), ] if page_code == '3': res = [ ('has_child_detained',student_rec.has_child_detained), ('child_received_academic_distinction',student_rec.child_received_academic_distinction), ('has_suspended_expelled_by_school',student_rec.has_suspended_expelled_by_school), ('child_associated_with_awareness',student_rec.child_associated_with_awareness), ('member_of_environment_protection',student_rec.member_of_environment_protection), ('leadership_positions_in_school',student_rec.leadership_positions_in_school), ('special_education_programme',student_rec.special_education_programme), ('special_learning_disability',student_rec.special_learning_disability), ('has_other_than_english_languages',student_rec.has_other_than_english_languages), ] if page_code == '4': res = [ ('has_play_any_musical_instrument',student_rec.has_play_any_musical_instrument), ('has_formal_training_in_music',student_rec.has_formal_training_in_music), ('has_training_or_interest_art',student_rec.has_training_or_interest_art), ('inter_school_competitions',student_rec.inter_school_competitions), ('social_emotional_behavioural_difficulties',student_rec.social_emotional_behavioural_difficulties), ('has_use_bus_facility',student_rec.has_use_bus_facility), ] if page_code == '5': res = [ ('can_child_indicate_his_toilet_needs',student_rec.can_child_indicate_his_toilet_needs), ('child_like_to_watch_tv_programmes',student_rec.child_like_to_watch_tv_programmes), ('child_have_any_health_problem',student_rec.child_have_any_health_problem), ('under_medication',student_rec.under_medication) ] return res
def verification_success(self, **post): """ --------------------------------------------------- :param post: :return: """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] e_student_id = self.decode_base64(str(post.get('student_id'))) student_rec = student_obj.sudo().browse(int(e_student_id)) if not student_rec.id: return request.redirect("/student/verification/expired") else: return request.render("edsys_paperless_registrations.paper_less_success_verification_templet",{ 'student_rec' : student_rec })
def render_page2(self, **post): """ this method store data from current(2) page, and redirect to page next page(3) ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] student_rec = student_obj.sudo().browse(int(post.get('student_id'))) if not student_rec.id: return request.redirect("/student/verification/expired") else: parent_data = { 'name' : post.get('Father_name') or '', 'father_nationality' : post.get('Father_Nationality') or '', 'father_passport' : post.get('Father_Passport') or '', 'father_emirates_id' : post.get('Father_Emirates_Id') or '', 'parent_profession' : post.get('Father_Designation') or '', 'parent_address' : post.get('Parent_Address') or '', 'parents_office_contact' : post.get('Parents_Office_Contact') or '', 'parent_contact' : post.get('Parent_Contact') or '', 'parents_email' : post.get('Parents_Email') or '', 'mother_name' : post.get('Mother_Name') or '', 'mother_nationality' : post.get('Mother_Nationality') or '', 'mother_passport' : post.get('Mother_Passport') or '', 'mother_emirates_id' : post.get('Mother_Emirates_Id') or '', 'mother_profession' : post.get('Mother_Designation') or '', 'mother_address' : post.get('Mother_Address') or '', 'mother_office_contact' : post.get('Mother_Office_Contact') or '', 'mother_contact' : post.get('Mother_Contact') or '', 'mother_email' : post.get('Mother_Email') or '', 'spe_contribution' : post.get('Special_Contribution') or '', 'special_contribution_any_other' : post.get('Special_Contribution_Any_Other') or '', } student_rec.parents1_id.sudo().write(parent_data) e_page_code = base64.b64encode('3') e_student_id = base64.b64encode(str(post.get('student_id'))) return request.redirect("/student/verification/pagecode?page_code=%s&student_id=%s" % (e_page_code,e_student_id))
def create_attachment_re_reg_payment_receipt(self, voucher, re_regi): """ this method is use for create receipt re-registration payment also store in back end. ------------------------------------------------------------- :param voucher: voucher record set :param re_regi:re registration record set :return: """ env = request.env(user=SUPERUSER_ID) attachment_obj = env['ir.attachment'] result = False for record in voucher: ir_actions_report = env['ir.actions.report.xml'] matching_report = ir_actions_report.search([ ('name', '=', 'Student Payment Receipt') ]) if matching_report: result, format = eagle.report.render_report( request.cr, env.uid, [record.id], matching_report.report_name, {'model': 'account.payment'}) eval_context = {'time': time, 'object': record} if not matching_report.attachment or not eval( matching_report.attachment, eval_context): result = base64.b64encode(result) file_name = record.name_get()[0][1] file_name = re.sub(r'[^a-zA-Z0-9_-]', '_', file_name) file_name += ".pdf" attachment_id = attachment_obj.create({ 'name': file_name, 'datas': result, 'datas_fname': file_name, 'res_model': re_regi._name, 'res_id': re_regi.id, 'type': 'binary' })
def user_avatar(self, user_id=0, **post): status, headers, content = binary_content( model='res.users', id=user_id, field='image_medium', default_mimetype='image/png', env=request.env(user=SUPERUSER_ID)) if not content: img_path = modules.get_module_resource('web', 'static/src/img', 'placeholder.png') with open(img_path, 'rb') as f: image = f.read() content = base64.b64encode(image) if status == 304: return werkzeug.wrappers.Response(status=304) image_base64 = base64.b64decode(content) headers.append(('Content-Length', len(image_base64))) response = request.make_response(image_base64, headers) response.status = str(status) return response
def get_orignal_amount_new(self, amount, original_amount): """ this method use to convert orignal amount --------------------------------------------- :param amount: get amount from payfort link :return: return orignal amount of payment. """ env = request.env(user=SUPERUSER_ID) active_payforts_rec = env['payfort.config'].sudo().search( [('active', '=', 'True')], limit=1) amount = float(amount) original_amount = float(original_amount) bank_service_charge = 0.0 transaction_charg_amount = 0.0 charge = 0.0 if active_payforts_rec: if active_payforts_rec.transaction_charg_amount > 0: transaction_charg_amount = active_payforts_rec.transaction_charg_amount else: transaction_charg_amount = 0.00 amount -= transaction_charg_amount # if active_payforts_rec.bank_service_charge: # bank_service_charge = (original_amount/100) * active_payforts_rec.bank_service_charge # else: # bank_service_charge = 0.0 # removed payfort charge amount if active_payforts_rec.charge > 0: charge = (original_amount / 100) * active_payforts_rec.charge else: charge = 0.0 total_amount = amount - charge return round(total_amount, 2) else: amount -= 0.00 dummy_amount = 100.00 + 0.00 act_amount = round(((amount / dummy_amount) * 100.00), 2) return act_amount
def calculate_payfort_charges_value(self, paid_amount): """ this method use to calculate payfort charges. --------------------------------------------- :param amount: get amount from payfort link :return: return orignal amount of payment. """ env = request.env(user=SUPERUSER_ID) active_payforts_rec = env['payfort.config'].sudo().search( [('active', '=', 'True')], limit=1) amount = float(paid_amount) bank_charges = 0.00 transaction_charges = 0.00 gross_transaction_value = 0.00 net_amount = 0.00 if len(active_payforts_rec) == 1: if active_payforts_rec.charge > 0.00: bank_charges = (paid_amount * active_payforts_rec.charge) / 100 else: bank_charges = 0.00 transaction_charges = active_payforts_rec.transaction_charg_amount gross_transaction_value = round(paid_amount + bank_charges + transaction_charges) if active_payforts_rec.bank_service_charge > 0.00: transaction_charges_deducted_by_bank = \ (gross_transaction_value * active_payforts_rec.bank_service_charge) / 100 else: transaction_charges_deducted_by_bank = 0.00 net_amount = gross_transaction_value - transaction_charges_deducted_by_bank else: bank_charges = 0.00 transaction_charges = 0.00 gross_transaction_value = paid_amount + bank_charges + transaction_charges transaction_charges_deducted_by_bank = 0.00 net_amount = gross_transaction_value - transaction_charges_deducted_by_bank return bank_charges, transaction_charges, gross_transaction_value,\ net_amount, transaction_charges_deducted_by_bank
def render_student_re_reg_responce(self, **post): """ this method is use for getting response of parent for conformation of re-registration process. :param post: :return: """ if post: env = request.env(user=SUPERUSER_ID) for key, child_code in post.items(): if key != 'parent_code': student_re_reg_obj = env['re.reg.waiting.responce.student'] ch_code = str(child_code[:-2]) student_rec = student_re_reg_obj.sudo().search( [('code', '=', ch_code)], limit=1) if child_code[-2:] == '01': student_rec.sudo().write({ 'confirm': True, 'response': True, 'confirmation_date': date.today() }) elif child_code[-2:] == '00': student_rec.sudo().write({ 'confirm': False, 'response': True, }) parents_re_reg_obj = env['re.reg.waiting.responce.parents'] parent_rec = parents_re_reg_obj.sudo().search( [('code', '=', post.get('parent_code'))], limit=1) parent_rec.come_to_awaiting_fee() return http.request.render( "edsys_edu_re_registration.re_registration_request_thankyou", {})
def create_new_employee(self,**post): env = request.env(user=SUPERUSER_ID) offer_letter = post.get('offer_letter') or None if offer_letter : offer_letter_encoded = base64.encodestring(offer_letter.read()), birthday = post.get('birthday') or None if birthday: birthday_datetime = datetime.strptime(str(birthday), "%d/%m/%Y") else : birthday_datetime = None date_of_interview = post.get('date_of_interview') or None if date_of_interview: date_of_interview_datetime = datetime.strptime(str(date_of_interview), "%d/%m/%Y") offer_letter_sent_date = post.get('offer_letter_sent_date') or None if offer_letter_sent_date: offer_letter_sent_datetime = datetime.strptime(str(offer_letter_sent_date), "%d/%m/%Y") joining_date = post.get('joining_date') or None if joining_date: joining_datetime = datetime.strptime(str(joining_date), "%d/%m/%Y") labour_card_exist = post.get('labour_card_exist') or None if labour_card_exist == 'yes' : permit_card_no = post.get('permit_card_no') or None permit_expiry_date = post.get('permit_expiry_date') or None if permit_expiry_date: permit_expiry_datetime = datetime.strptime(str(permit_expiry_date), "%d/%m/%Y") else : permit_card_no = False permit_expiry_date = False emirates_id_exist = post.get('emirates_id_exist') or None if emirates_id_exist == 'yes' : emirates_card_no = post.get('emirates_card_no') or None emirates_expiry_date = post.get('emirates_expiry_date') or None if emirates_expiry_date: emirates_expiry_datetime = datetime.strptime(str(emirates_expiry_date), "%d/%m/%Y") else : emirates_card_no = False emirates_expiry_date = False employee_data = { 'name': post.get('name') or None, 'middle_name': post.get('middle_name') or None, 'last_name': post.get('last_name') or None, 'email_id': post.get('email_id') or None, 'contact_number1': post.get('contact_number1') or None, 'isd_contact_number1': post.get('isd_contact_number1') or None, 'contact_number2': post.get('contact_number2') or None, 'isd_contact_number2': post.get('isd_contact_number2') or None, 'contact_number3': post.get('contact_number3') or None, 'isd_contact_number3': post.get('isd_contact_number3') or None, 'country_id': post.get('nationality') or None, 'job_id': post.get('job_id') or None, 'date_of_interview': date_of_interview_datetime, 'offer_letter_sent_date': offer_letter_sent_datetime, 'joining_date': joining_datetime, 'birthday': birthday_datetime, 'is_existing_employee' : 'no', #=================================================== # 'permit_card_no':post.get('permit_card_no') or None, # 'permit_expiry_date': post.get('permit_expiry_date') or None, # 'emirates_card_no': post.get('emirates_card_no') or None, # 'emirates_expiry_date': post.get('emirates_expiry_date') or None, #=================================================== 'offer_letter' : offer_letter_encoded, 'passport_number': post.get('passport_number') or None, 'visa_required': post.get('visa_required') or None, 'accommodation': post.get('accommodation') or None, 'medical_insurance': post.get('medical_insurance') or None, 'health_card': post.get('health_card') or None, 'remark': post.get('remark') or None, 'identification_id': post.get('identification_id') or None, 'labour_card_exist':labour_card_exist , 'emirates_id_exist': emirates_id_exist , 'employee_state' : 'new', 'active_employee' : False, } employee_obj = env['hr.employee'] employee_id = employee_obj.sudo().search([('email_id','=',post.get('email_id'))]) if employee_id: return request.render("edsys_hrm.employee_duplicate_email",{}) # raise except_orm(_('UserError'), _('Recursivity Detected.')) new_employee = employee_obj.sudo().create(employee_data) #Labour_card_details labour_card_details_obj = env['labour.card.details'] labour_card_details = {} labour_card_exist = post.get('labour_card_exist') or None if labour_card_exist == 'yes' : if post.get('permit_card_no') or post.get('permit_expiry_date') : labour_card_details = { 'permit_card_no': permit_card_no, 'permit_expiry_date': permit_expiry_datetime, 'employee_id' : new_employee.id, 'labour_card_status' : 'initiated', 'confirm' : True, } labour_card_details_id = env['labour.card.details'].sudo().create(labour_card_details) #Emirates Id details if post.get('emirates_card_no') or post.get('emirates_expiry_date') : emirates_id_details_obj = env['emirates.id.details'] emirates_id_details = {} emirates_id_exist = post.get('emirates_id_exist') or None if emirates_id_exist == 'yes' : emirates_id_details = { 'emirates_card_no': emirates_card_no, 'emirates_expiry_date': emirates_expiry_datetime, 'employee_id' : new_employee.id, 'emirates_id_status':'initiated', 'confirm' : True, } emirates_id_details_id = emirates_id_details_obj.sudo().create(emirates_id_details) return request.render("edsys_hrm.employee_complete_template",{})
def show_acd_payment(self, **post): """ This method use to online payment by student/parent for Re-Registration --------------------------------------------------- :param post: :return: """ env = request.env(user=SUPERUSER_ID) if post: cr = env.cr current_date = time.strftime('%Y-%m-%d') re_registration_parent_rec = env[ 're.reg.waiting.responce.parents'].sudo().search([ ('re_registration_number', '=', post['merchant_reference']) ], limit=1) #------------------new code------------------------- re_reg_amount = re_registration_parent_rec.residual #------------------new code------------------------- if len(re_registration_parent_rec) > 0: if post['status'] == '14': order_id = post['merchant_reference'] c_amount = post['amount'] c_amount = float(c_amount) / 100 payment_id = post['fort_id'] #------------------new code------------------------- c_amount = re_reg_amount #------------------new code------------------------- self.re_registration_parent_payment( env=env, re_reg_parent_rec=re_registration_parent_rec, amount=c_amount, pay_id=payment_id, order_id=order_id, ) #----------------------New Code For Payment Capture======================== payfort_capture_obj = env['payfort.payment.capture'] bank_charges, transaction_charges, gross_transaction_value, net_amount, transaction_charges_deducted_by_bank =\ self.calculate_payfort_charges_value(re_reg_amount) re_registration_parent_rec = env[ 're.reg.waiting.responce.parents'].sudo().search( [('re_registration_number', '=', post['merchant_reference'])], limit=1) partner = False if len(re_registration_parent_rec) > 0: partner = re_registration_parent_rec.name.id payfort_capture_rec = payfort_capture_obj.sudo().search( [('pay_id', '=', post.get('fort_id')), ('reference_number', '=', post.get('merchant_reference'))], limit=1) if not payfort_capture_rec.id: payfort_capture_data = { 'date': current_date, 'partner': partner, 'pay_id': post.get('fort_id') or '', 'reference_number': post.get('merchant_reference'), 'paid_amount': re_reg_amount, 'bank_charges': bank_charges, 'gross_transaction_value': gross_transaction_value, 'transaction_charges_deducted_by_bank': transaction_charges_deducted_by_bank, 'transaction_charges': transaction_charges, 'net_amount': net_amount, } temp = payfort_capture_obj.sudo().create( payfort_capture_data) cr.commit() #----------------------New Code For Payment Capture======================== return request.render( "website_student_enquiry.thankyou_acd_fee_paid", {'pay_id': post['fort_id']}) else: return request.render( "website_student_enquiry.thankyou_acd_fee_fail", {}) res = super(payfort_payment_status_inherit, self).show_acd_payment(**post) return res
def re_registration_parent_payment(self, env, re_reg_parent_rec, amount, pay_id, order_id): """ when parent pay re-registration fee online. ----------------- :param env: :param re_reg_parent_rec: re-registration parent payment :param amount: amount :param pay_id: payment id :param order_id:order id :return: """ env = request.env(user=SUPERUSER_ID) account_payment_obj = self.env['account.payment'] voucher_obj = env['account.voucher'] currency_id = self._get_currency() c_date = time.strftime('%Y-%m-%d') t_date = date.today() # order_id = parent_re_reg_rec.code period_id = self._get_period().id journal_id = self.get_journal_from_payfort() account_id = env['account.journal'].sudo().browse( journal_id).default_debit_account_id.id total_amount = amount for student_re_reg_rec in re_reg_parent_rec.student_ids: if student_re_reg_rec.fee_status != 're_Paid' and total_amount > 0: student_data = '<table border="2"><tr><td><b>Student Name</b></td><td><b>Class-Sec</b></td><td><b>Re-Registrition Confirm</b></td><td><b>Amount Recived for Re-Registration</b></td></tr>' student_rec = student_re_reg_rec.name re_reg_advance_account = student_rec.re_reg_advance_account or False s_payable_amount = 0.00 if total_amount > student_re_reg_rec.residual: s_payable_amount = student_re_reg_rec.residual total_amount -= s_payable_amount else: s_payable_amount = total_amount total_amount -= s_payable_amount if s_payable_amount > 0.00: # voucher_data = { # 'period_id': period_id, # 'account_id': account_id, # 'partner_id': student_rec.id, # 'journal_id': journal_id, # 'currency_id': currency_id, # 'reference': student_re_reg_rec.code, # 'amount': s_payable_amount, # 'type': 'receipt' or 'payment', # 'state': 'draft', # 'pay_now': 'pay_later', # 'name': '', # 'date': c_date, # 'company_id': 1, # 'tax_id': False, # 'payment_option': 'without_writeoff', # 'comment': _('Write-Off'), # 'advance_account_id':re_reg_advance_account.id or student_rec.property_account_customer_advance.id or False, # 'payfort_payment_id' : pay_id, # 'payfort_pay_date' : t_date, # 're_reg_fee' : True, # } payment_vals = { 'partner_type': 'customer', 'partner_id': student_rec.id, 'journal_id': journal_id, 'amount': s_payable_amount, 'payment_method_id': 1, 'payment_type': 'inbound', } payment_rec = account_payment_obj.create(payment_vals) payment_rec.post() exist_payment = account_payment_obj.sudo().search([ ('partner_id', '=', student_rec.id), ('payfort_payment_id', '=', 'payfort_payment_id') ]) if not exist_payment.id: s_payment_rec = account_payment_obj.create( payment_vals) # update on re-registration student student_re_reg_rec.total_paid_amount += s_payable_amount if student_re_reg_rec.residual <= 0: student_re_reg_rec.fee_status = 're_Paid' student_re_reg_rec.state = 're_registration_confirmed' student_re_reg_rec.name.re_reg_next_academic_year = 'yes' elif student_re_reg_rec.total_paid_amount < student_re_reg_rec.total_amount and student_re_reg_rec.total_paid_amount != 0.00: student_re_reg_rec.fee_status = 're_partially_paid' student_re_reg_rec.state = 'awaiting_re_registration_fee' student_re_reg_rec.name.re_reg_next_academic_year = 'no' # Add Journal Entries # s_voucher_rec.button_proforma_voucher() self.create_attachment_re_reg_payment_receipt( payment_rec, student_re_reg_rec) #===================commented by shraddha because production server was creating 0 bytes pdf, so added send mail in more ref:send_for_re_registration.py ==================================== # # Send mail to Parent For Payment Receipt # student_data += '<tr><td>%s</td><td>%s</td><td>Yes</td><td>%s</td></tr></table>'%( # student_re_reg_rec.name.name,student_re_reg_rec.next_year_course_id.name,s_payable_amount) # email_server = env['ir.mail_server'] # email_sender = email_server.search([], limit=1) # ir_model_data = env['ir.model.data'] # template_id = ir_model_data.get_object_reference('edsys_edu_re_registration','email_template_re_registration_fee_receipt_paid')[1] # template_rec = env['email.template'].sudo().browse(template_id) # body_html = template_rec.body_html # body_dynamic_html = template_rec.body_html # body_dynamic_html += '%s'%(student_data) # template_rec.write({'email_to': student_re_reg_rec.name.parents1_id.parents_email, # 'email_from': email_sender.smtp_user, # 'email_cc': '', # 'body_html': body_dynamic_html}) # template_rec.send_mail(s_voucher_rec.id, force_send=False) # template_rec.body_html = body_html #======================================================= flag_fee_status = True for student_fee_status in re_reg_parent_rec.student_ids: if student_fee_status.fee_status == 're_unpaid': flag_fee_status = False if flag_fee_status == True: re_reg_parent_rec.come_to_confirm() if total_amount > 0.00: # parent pay amount in advance partner_rec = re_reg_parent_rec.name parent_voucher_data = { 'period_id': period_id, 'account_id': account_id, 'partner_id': partner_rec.id, 'journal_id': journal_id, 'currency_id': currency_id, 'reference': re_reg_parent_rec.code, 'amount': total_amount, 'type': 'receipt' or 'payment', 'state': 'draft', 'pay_now': 'pay_later', 'name': '', 'date': c_date, 'company_id': 1, 'tax_id': False, 'payment_option': 'without_writeoff', 'comment': _('Write-Off'), 'advance_account_id': partner_rec.property_account_customer_advance.id, 're_reg_fee': True, 'payfort_payment_id': pay_id, 'payfort_pay_date': t_date, # 'invoice_id':inv_obj.id, } p_voucher_rec_exist = voucher_obj.sudo().search([ ('partner_id', '=', partner_rec.id), ('payfort_payment_id', '=', pay_id) ]) if not p_voucher_rec_exist.id: p_voucher_rec = voucher_obj.sudo().create(parent_voucher_data) # Add Journal Entries p_voucher_rec.button_proforma_voucher()
def jobs(self, country=None, department=None, office_id=None, **kwargs): env = request.env(context=dict( request.env.context, show_address=True, no_tag_br=True)) Country = env['res.country'] Jobs = env['hr.job'] # List jobs available to current UID domain = request.website.website_domain() job_ids = Jobs.search( domain, order="website_published desc,no_of_recruitment desc").ids # Browse jobs as superuser, because address is restricted jobs = Jobs.sudo().browse(job_ids) # Default search by user country if not (country or department or office_id or kwargs.get('all_countries')): country_code = request.session['geoip'].get('country_code') if country_code: countries_ = Country.search([('code', '=', country_code)]) country = countries_[0] if countries_ else None if not any(j for j in jobs if j.address_id and j.address_id.country_id == country): country = False # Filter job / office for country if country and not kwargs.get('all_countries'): jobs = [ j for j in jobs if j.address_id is None or j.address_id.country_id and j.address_id.country_id.id == country.id ] offices = set(j.address_id for j in jobs if j.address_id is None or j.address_id.country_id and j.address_id.country_id.id == country.id) else: offices = set(j.address_id for j in jobs if j.address_id) # Deduce departments and countries offices of those jobs departments = set(j.department_id for j in jobs if j.department_id) countries = set(o.country_id for o in offices if o.country_id) if department: jobs = [ j for j in jobs if j.department_id and j.department_id.id == department.id ] if office_id and office_id in [x.id for x in offices]: jobs = [ j for j in jobs if j.address_id and j.address_id.id == office_id ] else: office_id = False # Render page return request.render( "website_hr_recruitment.index", { 'jobs': jobs, 'countries': countries, 'departments': departments, 'offices': offices, 'country_id': country, 'department_id': department, 'office_id': office_id, })
def avatar(self, res_model, res_id, partner_id): headers = [('Content-Type', 'image/png')] status = 200 content = 'R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' # default image is one white pixel if res_model in request.env: try: # if the current user has access to the document, get the partner avatar as sudo() request.env[res_model].browse(res_id).check_access_rule('read') if partner_id in request.env[res_model].browse(res_id).sudo().exists().message_ids.mapped('author_id').ids: status, headers, _content = binary_content(model='res.partner', id=partner_id, field='image_medium', default_mimetype='image/png', env=request.env(user=SUPERUSER_ID)) # binary content return an empty string and not a placeholder if obj[field] is False if _content != '': content = _content if status == 304: return werkzeug.wrappers.Response(status=304) except AccessError: pass image_base64 = base64.b64decode(content) headers.append(('Content-Length', len(image_base64))) response = request.make_response(image_base64, headers) response.status = str(status) return response
def render_page6(self, **post): """ this method store data from current(6) page, ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : call templet also pass dictonary for required data """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] student_rec = student_obj.sudo().browse(int(post.get('student_id'))) if not student_rec.id: return request.redirect("/student/verification/expired") else: parents_data = { 'name' : post.get('Father_Name') or '', 'mother_name' : post.get('Mother_Name') or '', 'parents_office_contact' : post.get('Parents_Office_Contact') or '', 'parent_contact' : post.get('F_Mobile') or '', 'mother_contact' : post.get('Mother_Contact') or '', } student_data = { 'health_card_no' : post.get('Health_Card_No') or '', 'street' : post.get('Residential_Address') or '', 'mobile' : post.get('S_Mobile') or '', 'prev_institute' : post.get('Previous_School_Name') or '', 'prev_academic_country' : post.get('Prev_Academic_Country') or '', 'diphtheria' : post.get('Diphtheria') or '', 'accident' : post.get('Accident') or '', 'dysentery' : post.get('Dysentery') or '', 'allergies' : post.get('Allergies') or '', 'infective_hepatitis' : post.get('Infective_Hepatitis') or '', 'bronchial_asthma' : post.get('Bronchial_Asthma') or '', 'measles' : post.get('Measles') or '', 'congenital_heart_disease' : post.get('Congenital_Heart_Disease') or '', 'mumps' : post.get('Mumps') or '', 'diabetes_mellitus' : post.get('Diabetes_Mellitus') or '', 'poliomyelitis' : post.get('Poliomyelitis') or '', 'epilepsy' : post.get('Epilepsy') or '', 'rubella' : post.get('Rubella') or '', 'G6PD' : post.get('G6PD') or '', 'scarlet_fever' : post.get('Scarlet_Fever') or '', 'rheumatic_fever' : post.get('Rheumatic_Fever') or '', 'tuberculosis' : post.get('Tuberculosis') or '', 'surgical_operation' : post.get('Surgical_Operation') or '', 'whooping_cough' : post.get('Whooping_Cough') or '', 'thalassemia' : post.get('Thalassemia') or '', 'chicken_pox' : post.get('Chicken_Pox') or '', 'physically_challenged' : post.get('Physically_Challenged') or '', 'infectious_disease_other' : post.get('Infectious_Disease_Other') or '', 'hearing_speech_defect' : post.get('Hearing_Speech_Defect') or '', 'vision_problems' : post.get('Vision_Problems') or '', 'history_of_blood_transfusion' : post.get('History_Of_Blood_Transfusion') or '', 'hospitalization' : post.get('Hospitalization') or '', 'hospitalization_reason' : post.get('Hospitalization_Reason') or '', 'diabetes' : post.get('Diabetes') or False, 'HTN' : post.get('HTN') or False, 'mental' : post.get('Mental') or False, # 'disorders' : post.get('Disorders') or False, 'stroke' : post.get('Stroke') or False, 'TB' : post.get('TB') or False, 'HTN_other' : post.get('HTN_other') or '', 'medicine_or_drugs' : post.get('Medicine_or_Drugs') or '', 'medicine_or_drugs_details' : post.get('Medicine_or_Drugs_Details') or '', 'w_medication_mention' : post.get('Medication_Mention') or '', 'under_medication' : post.get('Under_Medication') or '', 'give_consent_oral_analgesic' : post.get('Give_Consent_Oral_Analgesic') or '', 'give_consent_hospital_treatment' : post.get('Give_Consent_Hospital_Treatment') or False, 'give_consent_immunization' : post.get('Give_Consent_Immunization') or '', 'add_form_filled' : True } student_rec.parents1_id.sudo().write(parents_data) student_rec.sudo().write(student_data) reg_obj = env['registration'] reg_rec = reg_obj.sudo().search([('enquiry_no','=',student_rec.reg_no)],limit=1) reg_rec.add_form_filled = True e_student_id = base64.b64encode(str(post.get('student_id'))) return request.redirect("/student/verification/success?student_id=%s" % (e_student_id))
def redirect_payfort(self, **post): """ create payfort payment link and redirect to Payfort Page. ------------------------------- :return: redirect to payfort payment getway page. """ #----------------new code--------------------- currency = 'AED' #----------------new code--------------------- env = request.env(user=SUPERUSER_ID) user_id = 1 if user_id: res_user_obj = env['res.users'] res_user_obj_rec = res_user_obj.sudo().search( [('id', '=', user_id)], limit=1) #----------------new code--------------------- currency = str(res_user_obj_rec.company_id.currency_id.name) #----------------new code--------------------- payfort_conf_obj = env['payfort.config'] payfort_conf_rec = payfort_conf_obj.sudo().search( [('active', '=', 'True')], limit=1) if payfort_conf_rec.id: order_id = str(post.get('ORDERID')) total_amount = float(post.get('AMOUNT')) or 0.00 payment_method = str(post.get('payment_method')) #------------------------get partner email------------------------------# reg_ids = env['registration'].sudo().search([ ('registration_number', '=', order_id) ]) invoice_ids = env['account.invoice'].sudo().search( [('invoice_number', '=', order_id)], limit=1) voucher_rec = env['account.voucher'].sudo().search( [('payfort_type', '=', True), ('voucher_number', '=', order_id)], limit=1) next_year_advance_fee_rec = env['next.year.advance.fee'].sudo( ).search([('order_id', '=', order_id)]) re_registration_parent_rec = env[ 're.reg.waiting.responce.parents'].sudo().search( [('re_registration_number', '=', order_id)], limit=1) tc_student_rec = env['trensfer.certificate'].sudo().search( [('transfer_certificate_number', '=', order_id)], limit=1) # limit=1) customer_email = False if len(reg_ids) > 0: customer_email = reg_ids.parent_email elif len(invoice_ids) > 0: customer_email = invoice_ids.partner_id.email elif len(voucher_rec) > 0: customer_email = voucher_rec.partner_id.parents_email elif len(next_year_advance_fee_rec) > 0: customer_email = next_year_advance_fee_rec.partner_id.email elif len(tc_student_rec) > 0: customer_email = tc_student_rec.name.email elif len(re_registration_parent_rec) > 0: customer_email = re_registration_parent_rec.name.parents_email #------------------------get partner email------------------------------# #------------------------calculate payfort charge-----------------------# amount = 0.00 payfort_charge_amount = 0 payfort_transaction_charge = 0 payfort_url = payfort_conf_rec.payfort_url payfort_bank_charge = 0 access_code = str(payfort_conf_rec.access_code) merchant_identifier = str(payfort_conf_rec.merchant_identifier) return_url = str(payfort_conf_rec.return_url) language = str(payfort_conf_rec.language) if payfort_conf_rec.id and payfort_conf_rec.charge > 0: payfort_charge_amount = (total_amount / 100) * payfort_conf_rec.charge if payfort_conf_rec.transaction_charg_amount > 0.00: payfort_transaction_charge = payfort_conf_rec.transaction_charg_amount # if payfort_conf_rec.id and payfort_conf_rec.bank_service_charge > 0: # payfort_bank_charge = (total_amount / 100 ) * payfort_conf_rec.bank_service_charge total_payfort_charge = payfort_charge_amount + payfort_transaction_charge + payfort_bank_charge #------------------------calculate payfort charge-----------------------# #------------------------add payfort charge in amount-------------------# total_payable_amount = total_amount + total_payfort_charge total_net_amount = round(total_payable_amount) amount = int(total_net_amount * 100) #------------------------add payfort charge in amount-------------------# #----------------Redirection to sbcheckout page-------------------------# command = "PURCHASE" cart_details = '{"cart_items":[{"item_name":"Xbox360","item_description":"Xbox","item_quantity":"1","item_price":"300","item_image":"http://image.com"}],"sub_total":"300"}' # if payment_method == 'MASTERPASS': digital_wallet = payment_method message = 'TESTSHAINaccess_code=%samount=%scart_details=%scommand=%scurrency=%scustomer_email=%sdigital_wallet=%slanguage=%smerchant_identifier=%smerchant_reference=%sreturn_url=%sTESTSHAIN' % ( access_code, amount, cart_details, command, currency, customer_email, digital_wallet, language, merchant_identifier, order_id, return_url) signature = hashlib.sha256(message) return """ <html> <body> <form action=%s method='post' id="payu" name="payu"> <input type="hidden" name="access_code" value="%s" /> <input type="hidden" name="amount" value="%s" /> <input type="hidden" name="cart_details" value='{"cart_items":[{"item_name":"Xbox360","item_description":"Xbox","item_quantity":"1","item_price":"300","item_image":"http://image.com"}],"sub_total":"300"}'/> <input type="hidden" name="command" value="%s" /> <input type="hidden" name="currency" value="%s" /> <input type="hidden" name="customer_email" value ="%s" /> <input type="hidden" name="digital_wallet" value ="%s" /> <input type="hidden" name="language" value="%s" /> <input type="hidden" name="merchant_identifier" value="%s" /> <input type="hidden" name="merchant_reference" value="%s" /> <input type="hidden" name="return_url" value="%s" /> <input type="hidden" name="signature" value="%s" /> </form> </body> <script type='text/javascript'> window.onload = function(){ document.forms['payu'].submit() } </script> </html> """ % ( payfort_url, access_code, amount, command, currency, customer_email, digital_wallet, language, merchant_identifier, order_id, return_url, signature.hexdigest()) if payment_method == 'VISA_CHECKOUT': digital_wallet = payment_method message = 'TESTSHAINaccess_code=%samount=%scommand=%scurrency=%scustomer_email=%sdigital_wallet=%slanguage=%smerchant_identifier=%smerchant_reference=%sreturn_url=%sTESTSHAIN' % ( access_code, amount, command, currency, customer_email, digital_wallet, language, merchant_identifier, order_id, return_url) signature = hashlib.sha256(message) # cart_details = json.dumps(cart_details) return """ <html> <body> <form action=%s method='post' id="payu" name="payu"> <input type="hidden" name="access_code" value="%s" /> <input type="hidden" name="amount" value="%s" /> <input type="hidden" name="command" value="%s" /> <input type="hidden" name="currency" value="%s" /> <input type="hidden" name="customer_email" value ="%s" /> <input type="hidden" name="digital_wallet" value ="%s" /> <input type="hidden" name="language" value="%s" /> <input type="hidden" name="merchant_identifier" value="%s" /> <input type="hidden" name="merchant_reference" value="%s" /> <input type="hidden" name="return_url" value="%s" /> <input type="hidden" name="signature" value="%s" /> </form> </body> <script type='text/javascript'> window.onload = function(){ document.forms['payu'].submit() } </script> </html> """ % ( payfort_url, access_code, amount, command, currency, customer_email, digital_wallet, language, merchant_identifier, order_id, return_url, signature.hexdigest()) if payment_method == 'CREDIT_CARD': message = 'TESTSHAINaccess_code=%samount=%scommand=%scurrency=%scustomer_email=%slanguage=%smerchant_identifier=%smerchant_reference=%sreturn_url=%sTESTSHAIN' % ( access_code, amount, command, currency, customer_email, language, merchant_identifier, order_id, return_url) signature = hashlib.sha256(message) return """ <html> <body> <form action=%s method='post' id="payu" name="payu"> <input type="hidden" name="access_code" value="%s" /> <input type="hidden" name="amount" value="%s" /> <input type="hidden" name="command" value="%s" /> <input type="hidden" name="currency" value="%s" /> <input type="hidden" name="customer_email" value ="%s" /> <input type="hidden" name="language" value="%s" /> <input type="hidden" name="merchant_identifier" value="%s" /> <input type="hidden" name="merchant_reference" value="%s" /> <input type="hidden" name="return_url" value="%s" /> <input type="hidden" name="signature" value="%s" /> </form> </body> <script type='text/javascript'> window.onload = function(){ document.forms['payu'].submit() } </script> </html> """ % ( payfort_url, access_code, amount, command, currency, customer_email, language, merchant_identifier, order_id, return_url, signature.hexdigest())
def get_payment_amount(self, partner_id): env = request.env(user=SUPERUSER_ID) account_voucher_obj = env['account.voucher'] account_invoice_obj = env['account.invoice'] voucher_line_obj = env['account.voucher.line'] total_amount = 0.0 if partner_id: for parent_rec in partner_id: chield_ids = parent_rec.chield1_ids table_data = '' student_id_list = [] stud_advance_table = '' total_advance = 0.0 parent_cedit = 0.00 if chield_ids: for chield_id in chield_ids: student_id_list.append(chield_id.id) stud_rec = env['res.partner'].browse(student_id_list) if len(stud_rec) > 0: # check for parent advance payment#this is my logic if parent_rec.credit: parent_cedit += parent_rec.credit total_amount_table = 0.00 total_amount = 0.0 move_ids_list = [] stud_lst_invoice = [] stud_balance = 0.0 total_amount += parent_cedit for student_rec in stud_rec: invoice_residual_amount = 0 # COLLECT STUDENT ADVANCES total_advance += student_rec.advance_total_recivable + student_rec.re_reg_total_recivable advance_total_recivable = 0.0 if student_rec.advance_total_recivable == False and student_rec.re_reg_total_recivable == False: advance_total_recivable = 0.0 elif student_rec.advance_total_recivable > 0.0 or student_rec.re_reg_total_recivable > 0.0: advance_total_recivable = student_rec.advance_total_recivable + student_rec.re_reg_total_recivable stud_advance_table += '<tr><td>%s</td><td>%s</td><td>%s</td></tr>' \ %(parent_rec.parent1_id, student_rec.name, advance_total_recivable) for invoice_rec in account_invoice_obj.search([ ('partner_id', '=', student_rec.id), ('type', '!=', 'out_refund') ]): #GET OPEN INVOICES if invoice_rec.state == 'open' and invoice_rec.residual > 0.00: # CHECK FOR NEGATIVE AMOUNT if invoice_rec.amount_total < 0: invoice_residual_amount = -invoice_rec.residual else: invoice_residual_amount = invoice_rec.residual #total_amount_table += invoice_rec.residual total_amount_table += invoice_residual_amount table_data += '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>' \ %(student_rec.name,invoice_rec.number,invoice_rec.date_invoice,invoice_rec.amount_total,invoice_residual_amount) # total_amount += student_rec.credit return total_amount
def bundle(self): env = request.env(user=SUPERUSER_ID) bundle = env.ref('test_assetsbundle.bundle1') views = env['ir.ui.view'].search([('inherit_id', '=', bundle.id)]) return views.with_context(check_view_ids=views.ids).render_template( 'test_assetsbundle.template1')
def render_page_default(self, **post): print '===============post' """ this method use to save default form data in database, and redirect to next page, ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : call templet also pass dictonary for required data """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] attach_obj = env['ir.attachment'] student_rec = student_obj.sudo().browse(int(post.get('student_id'))) if not student_rec.id: return request.redirect("/student/verification/expired") else: parent_data = { 'parents_email' : post.get('Father_Email') or '', 'parents_office_contact' : post.get('office_no') or '', 'street' : post.get('parents_address') or '', 'mother_profession' : post.get('mother_profession') or '', 'mother_contact' : post.get('mother_mobile_no') or '', 'mother_office_contact' : post.get('mother_tel_no') or '', 'mother_email' : post.get('mother_email') or '', 'mother_address' : post.get('mother_address') or '', 'emergency_contact' : post.get('emergency_mobile_no') or '', } for document,values in {'f_visa_copy1':'parent_visa_copy','f_emirates_copy1':'f_emirates_copy1', 'f_emirates_copy2':'f_emirates_copy2','m_visa_copy1':'mother_visa_copy', 'm_emirates_copy1':'m_emirates_copy1','m_emirates_copy2':'m_emirates_copy2'}.items(): if post.get(document): parent_data.update({values:base64.encodestring(post[document].read())}) child_allergic = False under_medication = False if post.get('allergic') == 'y': child_allergic = True if post.get('under_medication') == 'y': under_medication = True student_data = { 'emirati' : post.get('Emirati') or '', 'arab' : post.get('Arab_v') or '', 'emirates_id' : post.get('Emirates_id') or '', 'blood_group' : post.get('Blood_Group') or '', 's_height' : post.get('S_Height') or '', 's_width' : post.get('S_Width') or '', 'child_allergic' : child_allergic or False, 'w_allergic' : post.get('yes_allergic') or '', 'w_reaction' : post.get('reaction') or '', 'w_treatment' : post.get('treatment') or '', 'under_medication' : under_medication or False, 'mention' : post.get('w_medication_mention') or '', 'w_treatment_mention' : post.get('w_treatment') or '', 'isd_code' : post.get('Isd_Code') or '', 'mobile' : post.get('S_Mobile') or '', 'transport_type' : post.get('transport_type') or '', 'pick_up' : post.get('pick_up') or '', 'droup_off_pick' : post.get('droup_off') or '', } for sdocument,svalues in {'transfer_certi':'transfer_certificate','s_emirates_copy1':'s_emirates_copy1', 's_emirates_copy2':'s_emirates_copy2','s_pass_copy1':'passport_copy1', 's_pass_copy2':'passport_copy2','s_visa':'medical_documents_file'}.items(): if post.get(sdocument): student_data.update({svalues:base64.encodestring(post[sdocument].read())}) student_rec.sudo().write(student_data) reg_obj = env['registration'] reg_rec = reg_obj.sudo().search([('enquiry_no','=',student_rec.reg_no)],limit=1) reg_rec.sudo().write(student_data) student_rec.parents1_id.sudo().write(parent_data) for get_file in ['transfer_certi','s_visa','s_emirates_copy1','s_emirates_copy2','s_pass_copy1','s_pass_copy2']: attachment_value = {} if get_file in post and post[get_file]: attachment_value = { 'type':'binary', 'name': post[get_file].filename, 'res_name': 'demo01', 'res_model': 'res.partner', # 'res_id': stud_rec.id, 'datas': base64.encodestring(post[get_file].read()), 'datas_fname': post[get_file].filename, } attach_obj.sudo().create(attachment_value) for get_f_file in ['f_visa_copy1','f_emirates_copy1','f_emirates_copy2','m_visa_copy1','m_emirates_copy1','m_emirates_copy2']: attachment_value = {} if 'get_f_file' in post and post['get_f_file']: res_name = "" if get_f_file in ['f_visa_copy1','f_emirates_copy1','f_emirates_copy2']: res_name = student_rec.parents1_id.name else: res_name = student_rec.parents1_id.mother_name attachment_value = { 'type':'binary', 'name': post[get_file].filename, 'res_name': res_name, 'res_model': 'res.partner', # 'res_id': stud_rec.parents1_id.id, 'datas': base64.encodestring(post[get_file].read()), 'datas_fname': post[get_file].filename, } attach_obj.sudo().create(attachment_value) e_page_code = base64.b64encode('1') e_student_id = base64.b64encode(str(post.get('student_id'))) return request.redirect("/student/verification/pagecode?page_code=%s&student_id=%s" % (e_page_code,e_student_id))
def show_acd_payment(self, **post): """ This method use to online payment by student/parent for Re-Registration --------------------------------------------------- :param post: :return: """ res = {} #----------new code 20-mar-2017 payment declined------------ response_code = '' #----------new code 20-mar-2017 payment declined------------ env = request.env(user=SUPERUSER_ID) if 'response_code' in post: response_code = post['response_code'] if response_code == '00066': return request.render( "website_student_enquiry.thankyou_payment_link_expired", {}) #----------new code 20-mar-2017 payment declined------------ if 'response_code' in post: response_code = post['response_code'] if response_code == '00047': return request.render( "website_student_enquiry.thankyou_payment_order_already_processed", {}) if 'response_code' in post: response_code = post['response_code'] if response_code != '14000': return request.render( "website_student_enquiry.thankyou_acd_fee_fail", {}) if 'response_code' in post: response_code = post['response_code'] if response_code == '00066': return request.render( "website_student_enquiry.thankyou_payment_link_expired", {}) if post.get('status') == '14': cr = env.cr env = request.env(user=SUPERUSER_ID) #======================new code for remove exception=================== payfort_capture_obj = env['payfort.payment.capture'] paid_amount = float(post.get('amount')) / 100 paid_amount = self.get_orignal_amount(paid_amount) bank_charges, transaction_charges, gross_transaction_value, net_amount, transaction_charges_deducted_by_bank =\ self.calculate_payfort_charges_value(paid_amount) payfort_capture_rec = payfort_capture_obj.sudo().search( [('pay_id', '=', post.get('fort_id'))], limit=1) reg_ids = env['registration'].sudo().search([ ('registration_number', '=', post['merchant_reference']) ]) invoice_ids = env['account.invoice'].sudo().search( [('invoice_number', '=', post['merchant_reference'])], limit=1) voucher_rec = env['account.voucher'].sudo().search( [('payfort_type', '=', True), ('voucher_number', '=', post['merchant_reference'])], limit=1) next_year_advance_fee_rec = env['next.year.advance.fee'].sudo( ).search([('order_id', '=', post['merchant_reference'])]) re_registration_parent_rec = env[ 're.reg.waiting.responce.parents'].sudo().search([ ('re_registration_number', '=', post['merchant_reference']) ], limit=1) tc_student_rec = env['trensfer.certificate'].sudo().search( [('transfer_certificate_number', '=', post['merchant_reference'])], limit=1) partner = False if len(reg_ids) > 0: partner = False elif len(invoice_ids) > 0: partner = invoice_ids.partner_id.id elif len(voucher_rec) > 0: partner = voucher_rec.partner_id.id elif len(next_year_advance_fee_rec) > 0: partner = next_year_advance_fee_rec.partner_id.id elif len(re_registration_parent_rec) > 0: partner = re_registration_parent_rec.name.id elif len(tc_student_rec) > 0: partner = tc_student_rec.name.id #======================END new code for remove exception=================== try: res = super(ShowAcdPaymentInheritPayfortCapture, self).show_acd_payment(**post) except Exception as err_msg: # payfort_error_capture_obj = env['payfort.error.capture'] #======================new code for remove exception=================== payfort_capture_rec = payfort_capture_obj.search( [('pay_id', '=', post.get('fort_id'))], limit=1) if not payfort_capture_rec: payfort_capture_data = { 'date': date.today(), 'partner': partner, 'pay_id': post.get('fort_id') or '', 'reference_number': post.get('merchant_reference'), 'paid_amount': paid_amount, 'bank_charges': bank_charges, 'gross_transaction_value': gross_transaction_value, 'transaction_charges_deducted_by_bank': transaction_charges_deducted_by_bank, 'transaction_charges': transaction_charges, 'net_amount': net_amount, } temp = payfort_capture_obj.sudo().create( payfort_capture_data) cr.commit() #======================new code for remove exception=================== return request.render( "edsys_capturing_online_payment.payfort_payment_error_templet", { 'payment_id': post['fort_id'], 'order_id': post['merchant_reference'], 'err_msg': err_msg, }) except: import sys err_msg = sys.exc_info()[0] #======================new code for remove exception=================== payfort_capture_rec = payfort_capture_obj.sudo().search( [('pay_id', '=', post.get('fort_id'))], limit=1) if not payfort_capture_rec: payfort_capture_data = { 'date': date.today(), 'partner': partner, 'pay_id': post.get('fort_id') or '', 'reference_number': post.get('merchant_reference'), 'paid_amount': paid_amount, 'bank_charges': bank_charges, 'gross_transaction_value': gross_transaction_value, 'transaction_charges_deducted_by_bank': transaction_charges_deducted_by_bank, 'transaction_charges': transaction_charges, 'net_amount': net_amount, } temp = payfort_capture_obj.sudo().create( payfort_capture_data) cr.commit() #======================new code for remove exception=================== return request.render( "edsys_capturing_online_payment.payfort_payment_error_templet", { 'payment_id': post['fort_id'], 'order_id': post['merchant_reference'], 'err_msg': err_msg, }) payfort_capture_rec = payfort_capture_obj.sudo().search( [('pay_id', '=', post.get('fort_id'))], limit=1) if not payfort_capture_rec.id: payfort_capture_data = { 'date': date.today(), 'partner': partner, 'pay_id': post.get('fort_id') or '', 'reference_number': post.get('merchant_reference'), 'paid_amount': paid_amount, 'bank_charges': bank_charges, 'gross_transaction_value': gross_transaction_value, 'transaction_charges_deducted_by_bank': transaction_charges_deducted_by_bank, 'transaction_charges': transaction_charges, 'net_amount': net_amount, } temp = payfort_capture_obj.sudo().create(payfort_capture_data) cr.commit() return res
def render_student_pagecode(self, **post): """ this method should be redirect particuler page with proper data. ---------------------------------------------- :param post: :return: """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) print env student_obj = env['res.partner'] country_obj = env['res.country'] religion_obj = env['religion'] language_obj = env['res.lang'] batch_obj = env['batch'] country_rec_list = [] religion_rec_list = [] language_rec_list = [] for country_rec in country_obj.sudo().search([]): country_rec_list.append(country_rec) for reg_rec in religion_obj.sudo().search([]): religion_rec_list.append(reg_rec) for lang_rec in language_obj.sudo().search([]): language_rec_list.append(lang_rec) if post.get('student_id') and not post.get('page_code'): student_id = self.decode_base64(post.get('student_id')) student_rec = student_obj.sudo().browse(int(student_id)) if not student_rec.default_page: return request.render("edsys_paperless_registrations.student_other_information",{ 'student_rec' : student_rec, 'page_code' : '0', }) if not student_rec.is_fill_page1: lang_spoken_at_home_list = [] for lang_rec in student_rec.lang_spoken_at_home: lang_spoken_at_home_list.append(lang_rec.id) return request.render("edsys_paperless_registrations.student_other_information_page1",{ 'student_rec' : student_rec, 'country_rec_list' : country_rec_list, 'religion_rec_list' : religion_rec_list, 'language_rec_list' : language_rec_list, 'lang_spoken_at_home_list' : lang_spoken_at_home_list, 'page_code' : '1', }) if not student_rec.is_fill_page2: return request.render("edsys_paperless_registrations.student_other_information_page2",{ 'student_rec' : student_rec, 'country_rec_list' : country_rec_list, 'page_code' : '2', }) if not student_rec.is_fill_page3: course_rec_list = [] for batch_rec in batch_obj.sudo().search([('id','=',student_rec.batch_id.id)]): for class_rec in batch_rec.course_ids: course_rec_list.append(class_rec) return request.render("edsys_paperless_registrations.student_other_information_page3",{ 'student_rec' : student_rec, 'language_rec_list' : language_rec_list, 'course_rec_list' : course_rec_list, 'page_code' : '3', }) if not student_rec.is_fill_page4: return request.render("edsys_paperless_registrations.student_other_information_page4",{ 'student_rec' : student_rec, 'page_code' : '4', }) if not student_rec.is_fill_page5: return request.render("edsys_paperless_registrations.student_other_information_page5",{ 'student_rec' : student_rec, 'page_code' : '5', }) if not student_rec.is_fill_page6: return request.render("edsys_paperless_registrations.student_other_information_page6",{ 'student_rec' : student_rec, 'country_rec_list' : country_rec_list, 'page_code' : '6', }) if post.get('student_id') and post.get('page_code'): student_id = self.decode_base64(post.get('student_id')) student_rec = student_obj.sudo().browse(int(student_id)) page_code = self.decode_base64(post.get('page_code')) if post.get('page_code') and int(page_code) == 0: return request.render("edsys_paperless_registrations.student_other_information",{ 'student_rec' : student_rec, 'page_code' : '0', }) if post.get('page_code') and int(page_code) == 1: lang_spoken_at_home_list = [] for lang_rec in student_rec.lang_spoken_at_home: lang_spoken_at_home_list.append(lang_rec.id) return request.render("edsys_paperless_registrations.student_other_information_page1",{ 'student_rec' : student_rec, 'country_rec_list' : country_rec_list, 'religion_rec_list' : religion_rec_list, 'language_rec_list' : language_rec_list, 'lang_spoken_at_home_list' : lang_spoken_at_home_list, 'page_code' : '1', }) if post.get('page_code') and int(page_code) == 2: return request.render("edsys_paperless_registrations.student_other_information_page2",{ 'student_rec' : student_rec, 'country_rec_list' : country_rec_list, 'page_code' : '2', }) if post.get('page_code') and int(page_code) == 3: course_rec_list = [] for batch_rec in batch_obj.sudo().search([('id','=',student_rec.batch_id.id)]): for class_rec in batch_rec.course_ids: course_rec_list.append(class_rec) return request.render("edsys_paperless_registrations.student_other_information_page3",{ 'student_rec' : student_rec, 'language_rec_list' : language_rec_list, 'course_rec_list' : course_rec_list, 'page_code' : '3', }) if post.get('page_code') and int(page_code) == 4: return request.render("edsys_paperless_registrations.student_other_information_page4",{ 'student_rec' : student_rec, 'page_code' : '4', }) if post.get('page_code') and int(page_code) == 5: return request.render("edsys_paperless_registrations.student_other_information_page5",{ 'student_rec' : student_rec, 'page_code' : '5', }) if post.get('page_code') and int(page_code) == 6: return request.render("edsys_paperless_registrations.student_other_information_page6",{ 'student_rec' : student_rec, 'country_rec_list' : country_rec_list, 'page_code' : '6', })
def render_page1(self, **post): """ this method use to save first form data in database, and redirect to next page, ------------------------------------------ @param self : object pointer @param type : http @param auth : public @param website : True @return : call templet also pass dictonary for required data """ env = request.env(context=dict(request.env.context, show_address=True, no_tag_br=True)) student_obj = env['res.partner'] student_rec = student_obj.sudo().browse(int(post.get('student_id'))) if not student_rec.id: return request.redirect("/student/verification/expired") else: image = '' if post.get('Student_Photo'): image = base64.encodestring(post.get('Student_Photo').read()) or '' else: image = student_rec.image lang_spoken_home_ids = [] if post.get('id_Lang_Spoken_Home_value') != '': for lang_id in post.get('id_Lang_Spoken_Home_value').split(','): lang_spoken_home_ids.append(lang_id) # import ipdb;ipdb.set_trace() student_data = { 'image' : image or '', 'name':post.get('First_Name') or '', 'middle_name':post.get('Middle_Name') or '', 'last_name':post.get('Last_Name') or '', 'birth_place':post.get('Place_of_Birth') or '', 'gender':post.get('Gender') or 'm', 'nationality' : post.get('Nationality') or '', 'religion_id': post.get('Religion') or '', 'lang_id' : post.get('Mother_Tongue') or '', 'passport_no' : post.get('Passport_No') or '', 'place_of_issue' : post.get('Pass_Place_of_issue') or '', 'passport_issue_date' : post.get('Pass_Date_of_issue') or False, 'passport_expiry_date' : post.get('Pass_Date_of_Expiry') or False, 'visa_no' : post.get('Visa_Number') or '', 'visa_issue_date' : post.get('Visa_Date_of_Issue') or False, 'visa_expiry_date' : post.get('Visa_Date_of_Exp') or False, 'emirates_id' : post.get('Emirates_Id') or '', 'email' : post.get('S_Email') or '', 'street' : post.get('Residential_Address') or '', 'postal_address' : post.get('Postal_Address') or '', 'mobile' : post.get('S_Mobile') or '', 'student_is_living_with' : post.get('Student_is_Living_With') or '', # 'language_spoken_at_home' : [(6,0,lang_spoken_home_ids)], 'english_is_spoken_at_home' : post.get('Eng_Spik_Home') or '', 'english_written' : post.get('Written'), 'english_spoken' : post.get('Spoken'), 'english_reading' : post.get('Reading'), } student_rec.sudo().write(student_data) reg_obj = env['registration'] reg_rec = reg_obj.sudo().search([('enquiry_no','=',student_rec.reg_no)],limit=1) reg_rec.sudo().write(student_data) student_rec.lang_spoken_at_home = [(6, 0, lang_spoken_home_ids)] e_page_code = base64.b64encode('2') e_student_id = base64.b64encode(str(post.get('student_id'))) return request.redirect("/student/verification/pagecode?page_code=%s&student_id=%s" % (e_page_code,e_student_id))