def get_qr_code(): form = PassportForm() person = db.session.query(Person).get(current_user.id) data_complete = False if not person: flask.abort(404) if flask.request.method == 'POST': if form.validate_on_submit(): person.passport_number = form.passport_number.data _id = hashids.encode(current_user.id) data_string = f'{_id}:{form.name.data}:{form.f_name.data}:{form.second_name.data}' sign = signer.sign(data_string) person.signature = sign_data(sign) db.session.add(person) db.session.commit() person = db.session.query(Person).get(current_user.id) if form.validate(): data_complete = True return flask.render_template('person.html', person=person, form=form, data_complete=data_complete)
def send_email(): @threaded def send_async_email(msg): with app.app_context(): mail.send(msg) email_form = EmailForm() if email_form.validate_on_submit(): _id = hashids.encode(current_user.id) data = f"{_id}:{request.args.get('data')}" qr_file = get_qr_file(encode_data(data), 'JPEG') target_email = email_form.email.data message = Message('Электронный пропуск', sender=Config.MAIL_ADMIN, recipients=[target_email]) message.body = 'Ваш электронный пропуск во вложении' with app.open_resource(qr_file.name) as fp: message.attach(qr_file.name, "image/jpeg", fp.read()) with app.app_context(): send_async_email(message) return flask.redirect(url_for('get_qr_code')) return flask.render_template('email_send.html', email_form=email_form, id=id)
def qr_code_pdf(): _id = hashids.encode(current_user.id) data = f"{_id}:{request.args.get('data')}" qr_file = get_qr_file(encode_data(data), 'PDF') return send_file(qr_file.name, mimetype='application/pdf', attachment_filename=qr_file.name, as_attachment=False)
def qr_code_download(barcode_type, img_format): _id = hashids.encode(current_user.id) data = f"{_id}:{request.args.get('data')}" qr_file = get_qr_file(encode_data(data), img_format, barcode_type) return send_file(qr_file.name, mimetype='image/jpeg', attachment_filename=qr_file.name, as_attachment=True)
def to_dict(self): ret = {} for attr in self.auto_load_attrs: ret[attr] = getattr(self, attr) # 对id做混淆 if 'id' in ret and isinstance(ret['id'], int): ret['id'] = hashids.encode(ret['id']) return ret
def add_entry(): title = request.form["title"] if "title" in request.form else None text = request.form["text"] linenumbers = "true" if "linenumbers" in request.form else "false" language = request.form["language"] author = request.form["author"] if "author" in request.form else None options = json.dumps({"linenumbers": linenumbers, "language": language}) print(title) g.db.execute("insert into entries(title, text, options, created_at, author) values (?, ?, ?, ?, ?)", title, text, options, datetime.now(), author) lastid = g.db.execute("select @@IDENTITY").fetchone()[0] hashUrl = hashids.encode(lastid) g.db.execute("update entries set urlHash=? where id=?", hashUrl, lastid) g.db.commit() return redirect(url_for("show_entry", pasteid=hashUrl))
def xid(self): return hashids.encode(self.id)