def _get_mailbox(self, context={}): user_id = get_active_user() res = get_model("email.mailbox").search([["type", "=", "out"]], order="id") if not res: return None return res[0]
def create(self, vals, *args, **kw): new_id = super().create(vals, *args, **kw) obj = self.browse(new_id) project = obj.project_id contact = project.contact_id emails = obj.get_email_addresses() user_id = access.get_active_user() user = get_model("base.user").browse(user_id) if emails: body = obj.description vals = { "from_addr": "*****@*****.**", # XXX "to_addrs": ",".join(emails), "subject": "New issue %s by %s: %s (Pri %s)" % (obj.number, user.name, obj.title, obj.priority), "body": body, "state": "to_send", "name_id": "contact,%s" % contact.id, "related_id": "issue,%s" % obj.id, } get_model("email.message").create(vals) return new_id
def create(self, vals, **kw): uid = access.get_active_user() try: access.set_active_user(1) return super().create(vals, **kw) finally: access.set_active_user(uid)
def send_email(self, ids, context={}): uid = access.get_active_user() try: access.set_active_user(1) obj = self.browse(ids[0]) # XXX "=" should be changed to "=ilike" later res = get_model("base.user").search((["email", "=ilike", obj.email.strip()])) if not res: raise Exception("User with given email doesn't exist in database") request = context["request"] msg = "Somebody requested change of your Netforce password.\n\n" msg += "If you didn't do it, please ignore this message.\n\n" msg += "Otherwise if you want to reset your password click on the link below:\n\n" msg += "http://%s/ui#name=change_passwd&key=%s\n\n\n" % (request.host, obj.key) msg += "Regards,\n" msg += "Netforce Team" vals = { "type": "out", "from_addr": "*****@*****.**", "to_addrs": obj.email, "subject": "Netforce reset password request", "body": msg, "state": "to_send", } get_model("email.message").create(vals) return { "next": { "name": "forgot_passwd_done" } } finally: access.set_active_user(uid)
def write(self, ids, vals, *args, **kw): super().write(ids, vals, *args, **kw) user_id = access.get_active_user() user = get_model("base.user").browse(user_id) for obj in self.browse(ids): project = obj.project_id contact = project.contact_id emails = obj.get_email_addresses() if emails: body = json.dumps(vals) vals = { "from_addr": "*****@*****.**", # XXX "to_addrs": ",".join(emails), "subject": "Issue %s modified by %s: %s (Pri %s)" % (obj.number, user.name, obj.title, obj.priority), "body": body, "state": "to_send", "name_id": "contact,%s" % contact.id, "related_id": "issue,%s" % obj.id, } get_model("email.message").create(vals)
def send_email(self, ids, context={}): uid = access.get_active_user() try: access.set_active_user(1) obj = self.browse(ids[0]) # XXX "=" should be changed to "=ilike" later res = get_model("base.user").search( (["email", "=ilike", obj.email.strip()])) if not res: raise Exception( "User with given email doesn't exist in database") request = context["request"] msg = "Somebody requested change of your Netforce password.\n\n" msg += "If you didn't do it, please ignore this message.\n\n" msg += "Otherwise if you want to reset your password click on the link below:\n\n" msg += "http://%s/ui#name=change_passwd&key=%s\n\n\n" % ( request.host, obj.key) msg += "Regards,\n" msg += "Netforce Team" vals = { "type": "out", "from_addr": "*****@*****.**", "to_addrs": obj.email, "subject": "Netforce reset password request", "body": msg, "state": "to_send", } get_model("email.message").create(vals) return {"next": {"name": "forgot_passwd_done"}} finally: access.set_active_user(uid)
def send_from_template(self, template=None, from_addr=None, to_addrs=None, context={}): if not template: raise Exception("Missing template") res = get_model("email.template").search([["name", "=", template]]) if not res: raise Exception("Template not found: %s" % template) tmpl_id = res[0] tmpl = get_model("email.template").browse(tmpl_id) trigger_model = context.get("trigger_model") if not trigger_model: raise Exception("Missing trigger model") tm = get_model(trigger_model) trigger_ids = context.get("trigger_ids") if trigger_ids is None: raise Exception("Missing trigger ids") user_id = get_active_user() if user_id: user = get_model("base.user").browse(user_id) else: user = None for obj in tm.browse(trigger_ids): tmpl_ctx = {"obj": obj, "user": user, "context": context} get_model("email.template").create_email([tmpl_id], tmpl_ctx)
def default_get(self, field_names=None, context=None, **kw): user_id = get_active_user() set_active_user(1) user = get_model("base.user").browse(user_id) vals = {"name": user.name, "password": user.password, "email": user.email, "mobile": user.mobile} set_active_user(user_id) return vals
def approve(self, ids, context={}): if not check_permission_other("production_safe_in"): raise Exception("Permission denied") obj = self.browse(ids)[0] user_id = get_active_user() obj.write({"approved_by_id": user_id}) return {"next": {"name": "barcode_safe_in", "active_id": obj.id}, "flash": "DC to safe approved successfully"}
def create(self,vals,*args,**kw): new_id=super().create(vals,*args,**kw) obj=self.browse(new_id) user_id=access.get_active_user() user=get_model("base.user").browse(user_id) if obj.related_id._model=="issue": issue=obj.related_id project=issue.project_id contact=issue.contact_id emails=issue.get_email_addresses() subject="New message by %s for issue %s"%(user.name,issue.number) if obj.subject: subject+=": %s"%obj.subject if emails: vals={ "from_addr": "*****@*****.**", # XXX "to_addrs": ",".join(emails), "subject": subject, "body": obj.body, "state": "to_send", "name_id": "contact,%s"%contact.id, "related_id": "issue,%s"%issue.id, } get_model("email.message").create(vals) return new_id
def _get_number(self, context={}): user_id = get_active_user() set_active_user(1) seq_id = get_model("sequence").find_sequence(type="leave_request") if not seq_id: return None while 1: num = get_model("sequence").get_next_number(seq_id) user_id = get_active_user() set_active_user(1) res = self.search([["number", "=", num]]) set_active_user(user_id) if not res: return num get_model("sequence").increment_number(seq_id) set_active_user(user_id)
def get(self): db = get_connection() try: cart_id = int(self.get_argument("cart_id")) print("cart_id", cart_id) cart = get_model("ecom.cart").browse(cart_id) set_active_company(1) user_id = get_active_user() website = self.context["website"] ctx = self.context ctx["cart"] = cart if not cart.is_paid and website.payment_slip_template_id and (cart.pay_method_id.id == website.bank_method_id.id): tmpl_name = website.payment_slip_template_id.name url = "/report?type=report_jasper&model=ecom.cart&convert=pdf&ids=[%d]&template=%s" % ( cart.id, tmpl_name) ctx["payment_slip_report_url"] = url content = render("ecom_order_confirmed", ctx) ctx["content"] = content html = render("cms_layout", ctx) self.write(html) db.commit() except: import traceback traceback.print_exc() db.rollback()
def approve(self, ids, context={}): print("ApproveWizard.approve", ids) obj = self.browse(ids)[0] pin_code = obj.pin_code obj.write({"pin_code": ""}) # XXX m = get_model(obj.approve_model) f = getattr(m, obj.approve_method, None) if not f: raise Exception("Invalid method %s of %s" % (obj.approve_method, obj.approve_model)) if not obj.approver_id: res = f([obj.approve_id], context=context) else: db = database.get_connection() res = db.get("SELECT pin_code FROM base_user WHERE id=%s", obj.approver_id.id) enc_pin_code = res.pin_code if not utils.check_password(pin_code, enc_pin_code): raise Exception("Wrong PIN") user_id = get_active_user() set_active_user(obj.approver_id.id) try: res = f([obj.approve_id], context=context) finally: set_active_user(user_id) return res
def get(self): db = get_connection() try: cart_id = int(self.get_argument("cart_id")) print("cart_id", cart_id) cart = get_model("ecom.cart").browse(cart_id) set_active_company(1) user_id = get_active_user() website = self.context["website"] ctx = self.context ctx["cart"] = cart if not cart.is_paid and website.payment_slip_template_id and ( cart.pay_method_id.id == website.bank_method_id.id): tmpl_name = website.payment_slip_template_id.name url = "/report?type=report_jasper&model=ecom.cart&convert=pdf&ids=[%d]&template=%s" % ( cart.id, tmpl_name) ctx["payment_slip_report_url"] = url content = render("ecom_order_confirmed", ctx) ctx["content"] = content html = render("cms_layout", ctx) self.write(html) db.commit() except: import traceback traceback.print_exc() db.rollback()
def get_open_dummy(self, ids, context={}): vals = {} user_id = get_active_user() for obj in self.browse(ids): if user_id == obj.to_id.id: obj.write({"state": "opened"}) vals[obj.id] = True return vals
def pending(self, ids, context={}): user_id = get_active_user() for obj in self.browse(ids): for move in obj.lines: move.write({"state": "pending", "date": obj.date}) if obj.related_id and not move.related_id: move.write({"related_id":"%s,%d"%(obj.related_id._model,obj.related_id.id)}) obj.write({"state": "pending", "pending_by_id": user_id})
def get_default(self, model, field, context={}): user_id = get_active_user() res = self.search([["user_id", "=", user_id], ["model", "=", model], ["field", "=", field]]) if not res: return None obj_id = res[0] obj = self.browse(obj_id) return obj.value
def delete(self, ids, **kw): prod_ids = [] for obj in self.browse(ids): prod_ids.append(obj.product_id.id) super().delete(ids, **kw) user_id = get_active_user() set_active_user(1) get_model("product").write(prod_ids, {"update_balance": True}) set_active_user(user_id)
def send(self, ids, context={}): obj = self.browse(ids)[0] if not obj.email_template_id: raise Exception("Missing email template") if obj.custom_template_id: template = obj.custom_template_id.name template_format = obj.custom_template_id.format elif obj.template: template = obj.template template_format = obj.template_format elif obj.template_method: m = get_model(obj.print_model) f = getattr(m, obj.template_method, None) if not f: raise Exception("Invalid method %s of %s" % (obj.template_method, obj.print_model)) template = f([obj.print_id], context=context) template_format = obj.template_format report_fname = report_render_to_file(model=obj.print_model, ids=[obj.print_id], template=template, template_format=template_format, out_format=obj.out_format) if not obj.email_contact_field: raise Exception("Missing email contact field") contact = get_model(obj.print_model).browse( obj.print_id)[obj.email_contact_field] if not contact: raise Exception("Missing contact") if not contact.email: raise Exception("Missing contact email (%s)" % contact.name) user_id = get_active_user() user = get_model("base.user").browse(user_id) settings = get_model("settings").browse(1) pobj = get_model(obj.print_model).browse(obj.print_id) attachments = [] attachments.append({ "file": report_fname, }) data = { "user": user, "settings": settings, "obj": pobj, "attachments": attachments, } email_id = obj.email_template_id.create_email( data, related_id="%s,%d" % (obj.print_model, obj.print_id), state=obj.email_state) return { "next": { "name": "email", "mode": "form", "active_id": email_id, }, }
def set_default(self, model, field, value, context={}): self.clear_default(model, field) user_id = get_active_user() vals = { "user_id": user_id, "model": model, "field": field, "value": value, } self.create(vals)
def approve(self, ids, context={}): if not check_permission_other("sale_approve_done"): raise Exception("Permission denied") obj = self.browse(ids)[0] user_id = get_active_user() obj.write({"approved_by_id": user_id}) return { "next": {"name": "sale", "mode": "form", "active_id": obj.id}, "flash": "Sales order approved successfully", }
def save_changes(self, ids, context={}): obj = self.browse(ids)[0] check_password(obj.password) vals = {"name": obj.name, "password": obj.password, "email": obj.email, "mobile": obj.mobile} user_id = get_active_user() set_active_user(1) get_model("base.user").write([user_id], vals) obj.write({"password": ""}) set_active_user(user_id) return {"next": "_close"}
def migrate(self): user_id=get_active_user() set_active_user(1) for leave in get_model("hr.leave").search_browse([]): if leave.time_from and leave.time_to: leave.write({ 'start_date': '%s %s:00'%(leave.start_date[0:10],leave.time_from.replace(".",":")), 'end_date': '%s %s:00'%(leave.end_date[0:10],leave.time_to.replace(".",":")), }) set_active_user(user_id)
def reject(self, ids, context={}): user_id = get_active_user() user = get_model("base.user").browse(user_id) obj = self.browse(ids)[0] obj.write({"state": "canceled"}) vals = { "related_id": "room.reserve,%s" % obj.id, "body": "Rejected by %s" % user.name, } get_model("message").create(vals)
def migrate(self): user_id = get_active_user() set_active_user(1) for payslip in get_model("hr.payslip").search_browse([]): if not payslip.state: payslip.write({"state": "draft"}) for payrun in get_model("hr.payrun").search_browse([]): if not payrun.state: payrun.write({"state": "draft"}) set_active_user(user_id)
def post(self): db = get_connection() try: try: fields = ["old_password", "new_password", "re_password"] field_errors = {} form_vals = {} for n in fields: v = self.get_argument(n, None) form_vals[n] = v if not v: field_errors[n] = True if field_errors: raise Exception("Some required fields are missing") user_id = get_active_user() if not user_id: raise Exception("No user") user = get_model("base.user").browse(user_id) user_id = get_model("base.user").check_password( user.email, form_vals["old_password"]) if not user_id: raise Exception("Wrong password") if len(form_vals["new_password"]) < 6: raise Exception( "New password must be more than 6 character") if form_vals["new_password"] != form_vals["re_password"]: raise Exception( "New password does not match confirmed password") get_model("base.user").write( [user_id], {"password": form_vals["new_password"]}) get_model("base.user").trigger( [user_id], "change_password", context={"new_password": form_vals["new_password"]}) self.redirect( "/cms_account?message=Your%20password%20has%20been%20changed" ) db.commit() except Exception as e: db = get_connection() error_message = str(e) ctx = self.context ctx["form_vals"] = form_vals ctx["error_message"] = error_message ctx["field_errors"] = field_errors content = render("cms_change_pass", ctx) ctx["content"] = content html = render("cms_layout", ctx) self.write(html) db.commit() except: import traceback traceback.print_exc() db.rollback()
def default_get(self, field_names=None, context=None, **kw): user_id = get_active_user() set_active_user(1) user = get_model("base.user").browse(user_id) vals = { "name": user.name, "password": user.password, "email": user.email, "mobile": user.mobile, } set_active_user(user_id) return vals
def allow_record(self, context={}): user_id=get_active_user() user=get_model("base.user").browse(user_id) limit=user.limit_inspect or 0 res=self.search_browse([['user_id','=',user_id]]) if res: obj=res[0] count=obj.record_count+1 if count > limit: return False, limit, count count=self.increase() return True, limit, count
def _get_number(self, context={}): while 1: num = get_model("sequence").get_number(type="job") if not num: return None user_id = get_active_user() set_active_user(1) res = self.search([["number", "=", num]]) set_active_user(user_id) if not res: return num get_model("sequence").increment(type="job")
def pending(self, ids, context={}): user_id = get_active_user() for obj in self.browse(ids): for move in obj.lines: move.write({"state": "pending", "date": obj.date}) if obj.related_id and not move.related_id: move.write({ "related_id": "%s,%d" % (obj.related_id._model, obj.related_id.id) }) obj.write({"state": "pending", "pending_by_id": user_id}) obj.check_stock()
def approve(self, ids, context={}): if not check_permission_other("stock_transfer"): raise Exception("Permission denied") obj = self.browse(ids)[0] user_id = get_active_user() obj.write({"approved_by_id": user_id}) return { "next": { "name": "barcode_transfer", "active_id": obj.id, }, "flash": "Stock transfer approved successfully", }
def set_done(self,ids,context={}): user_id=get_active_user() for obj in self.browse(ids): move_ids=[] for line in obj.lines: move_ids.append(line.id) desc=obj.number get_model("stock.move").write(move_ids,vals={"date":obj.date,"journal_id":obj.journal_id.id,"ref":obj.number},context=context) get_model("stock.move").set_done(move_ids,context=context) obj.write({"state":"done","done_by_id":user_id},context=context) obj.set_currency_rate() self.check_order_qtys(ids) self.trigger(ids,"done")
def write(self, ids, vals, context={}): prod_ids = [] for obj in self.browse(ids): prod_ids.append(obj.product_id.id) super().write(ids, vals, context=context) prod_id = vals.get("product_id") if prod_id: prod_ids.append(prod_id) self.function_store(ids) user_id = get_active_user() set_active_user(1) get_model("product").write(prod_ids, {"update_balance": True}) set_active_user(user_id)
def approve(self, ids, context={}): if not check_permission_other("production_safe_in"): raise Exception("Permission denied") obj = self.browse(ids)[0] user_id = get_active_user() obj.write({"approved_by_id": user_id}) return { "next": { "name": "barcode_safe_in", "active_id": obj.id, }, "flash": "DC to safe approved successfully", }
def approve(self, ids, context={}): if not check_permission_other("production_approve_split"): raise Exception("Permission denied") obj = self.browse(ids)[0] user_id = get_active_user() obj.write({"approved_by_id": user_id}) return { "next": { "name": "split_production", "active_id": obj.id, }, "flash": "Split order approved successfully", }
def qc_approve_done(self, ids, context={}): if not check_permission_other("production_approve_qc"): raise Exception("Permission denied") obj = self.browse(ids)[0] user_id = get_active_user() obj.write({"done_qc_approved_by_id": user_id}) return { "next": { "name": "production", "mode": "form", "active_id": obj.id, }, "flash": "Production order QC completion approved successfully", }
def approve_done(self, ids, context={}): if not check_permission_other("job_approve_done"): raise Exception("Permission denied") obj = self.browse(ids)[0] user_id = get_active_user() obj.write({"done_approved_by_id": user_id}) return { "next": { "name": "job", "mode": "form", "active_id": obj.id, }, "flash": "Service order completion approved successfully", }
def migrate(self): user_id = get_active_user() set_active_user(1) for leave in get_model("hr.leave").search_browse([]): if leave.time_from and leave.time_to: leave.write({ 'start_date': '%s %s:00' % (leave.start_date[0:10], leave.time_from.replace(".", ":")), 'end_date': '%s %s:00' % (leave.end_date[0:10], leave.time_to.replace(".", ":")), }) set_active_user(user_id)
def migrate(self): user_id = get_active_user() set_active_user(1) for payslip in get_model("hr.payslip").search_browse([]): if not payslip.state: payslip.write({ 'state': 'draft', }) for payrun in get_model("hr.payrun").search_browse([]): if not payrun.state: payrun.write({ 'state': 'draft', }) set_active_user(user_id)
def create(self, vals, context={}): pick_id = vals.get("picking_id") if pick_id: pick = get_model("stock.picking").browse(pick_id) vals["date"] = pick.date vals["picking_id"] = pick.id vals["journal_id"] = pick.journal_id.id new_id = super().create(vals, context=context) self.function_store([new_id]) prod_id = vals["product_id"] user_id = get_active_user() set_active_user(1) get_model("product").write([prod_id], {"update_balance": True}) set_active_user(user_id) return new_id
def _get_number(self, context={}): seq_id = get_model("sequence").find_sequence(type="ecom_cart") if not seq_id: return None while 1: num = get_model("sequence").get_next_number(seq_id, context=context) if not num: return None user_id = access.get_active_user() access.set_active_user(1) res = self.search([["number", "=", num]]) access.set_active_user(user_id) if not res: return num get_model("sequence").increment_number(seq_id, context=context)
def send(self, ids, context={}): obj = self.browse(ids)[0] if not obj.email_template_id: raise Exception("Missing email template") if obj.custom_template_id: template = obj.custom_template_id.name template_format = obj.custom_template_id.format elif obj.template: template = obj.template template_format = obj.template_format elif obj.template_method: m = get_model(obj.print_model) f = getattr(m, obj.template_method, None) if not f: raise Exception("Invalid method %s of %s" % (obj.template_method, obj.print_model)) template = f([obj.print_id], context=context) template_format = obj.template_format report_fname = report_render_to_file( model=obj.print_model, ids=[obj.print_id], template=template, template_format=template_format, out_format=obj.out_format) if not obj.email_contact_field: raise Exception("Missing email contact field") contact = get_model(obj.print_model).browse(obj.print_id)[obj.email_contact_field] if not contact: raise Exception("Missing contact") if not contact.email: raise Exception("Missing contact email (%s)" % contact.name) user_id = get_active_user() user = get_model("base.user").browse(user_id) settings = get_model("settings").browse(1) pobj = get_model(obj.print_model).browse(obj.print_id) attachments = [] attachments.append({ "file": report_fname, }) data = { "user": user, "settings": settings, "obj": pobj, "attachments": attachments, } email_id = obj.email_template_id.create_email(data, related_id="%s,%d" % (obj.print_model, obj.print_id)) return { "next": { "name": "email", "mode": "form", "active_id": email_id, }, }
def do_reopen(self, ids, context={}): user_id = get_active_user() user = get_model("base.user").browse(user_id) res = get_model("hr.employee").search([["user_id", "=", user_id]]) if res: emp_id = res[0] for obj in self.browse(ids): assert obj.state in ("rejected", "approved") if res and obj.employee_id.id == emp_id: if obj.employee_id.approver_id: raise Exception("User %s is not authorized to reopen his own leave requests" % user.name) else: if obj.employee_id.approver_id.id != user_id: raise Exception("User %s is not authorized to reopen leave requests of employee %s" % (user.name, obj.employee_id.name_get()[0][1])) obj.write({"state": "waiting_approval"})
def onchange_sequence(self, context={}): data = context["data"] context['date'] = data['date'] seq_id = data["sequence_id"] if not seq_id: seq_id = get_model("sequence").find_sequence(type="purchase_order") while 1: num = get_model("sequence").get_next_number(seq_id, context=context) user_id = get_active_user() set_active_user(1) res = self.search([["number", "=", num]]) set_active_user(user_id) if not res: break get_model("sequence").increment_number(seq_id, context=context) data["number"] = num return data
def increase(self): user_id=get_active_user() res=self.search_browse([['user_id','=',user_id]]) count=0 while not count: if res: obj=res[0] count=(obj.record_count or 0)+1 obj.write({ 'record_count': count, }) else: count=1 self.create({ 'record_count':count, }) return count
def gen_tax_no(self, context={}): seq_id = get_model("sequence").find_sequence(type="wht_no", context=context) if not seq_id: return None while 1: num = get_model("sequence").get_next_number(seq_id, context=context) if not num: return None user_id = get_active_user() set_active_user(1) res = self.search([["tax_invoice", "=", num]]) set_active_user(user_id) if not res: return num get_model("sequence").increment_number(seq_id, context=context)
def post(self): db=get_connection() try: try: fields=["old_password","new_password","re_password"] field_errors={} form_vals={} for n in fields: v=self.get_argument(n,None) form_vals[n]=v if not v: field_errors[n]=True if field_errors: raise Exception("Some required fields are missing") user_id=get_active_user() if not user_id: raise Exception("No user") user=get_model("base.user").browse(user_id) user_id=get_model("base.user").check_password(user.email,form_vals["old_password"]) if not user_id: raise Exception("Wrong password") if len(form_vals["new_password"])<6: raise Exception("New password must be more than 6 character") if form_vals["new_password"]!=form_vals["re_password"]: raise Exception("New password does not match confirmed password") get_model("base.user").write([user_id],{"password":form_vals["new_password"]}) get_model("base.user").trigger([user_id],"change_password",context={"new_password": form_vals["new_password"]}) self.redirect("/cms_account?message=Your%20password%20has%20been%20changed") db.commit() except Exception as e: db=get_connection() error_message=str(e) ctx=self.context ctx["form_vals"]=form_vals ctx["error_message"]=error_message ctx["field_errors"]=field_errors content=render("cms_change_pass",ctx) ctx["content"]=content html=render("cms_layout",ctx) self.write(html) db.commit() except: import traceback traceback.print_exc() db.rollback()