def get_daypass(): """Present a calendar to choose the daypass pariod (from/to) - default is today""" session = session_manager.get_session() if request.method == "POST": from_date = request.forms['from_date'] until_date = request.forms.get( 'until_date', from_date) # one day pass only --> no until_date _from_date = datetime.strptime(from_date, "%Y-%m-%d") _until_date = datetime.strptime(until_date, "%Y-%m-%d") if (_until_date - _from_date).days <= 7: admin = Member(id=1) qr_code = admin.encode_qrcode(version=3, from_date=_from_date, until_date=_until_date) img_qrcode = make_qrcode(qr_code) qr_code_file = "images/XCJ_{}.png".format(from_date) img_qrcode.save(qr_code_file) # print("QR code:", qr_code_file) if request.forms.get('email'): admin.email_qrcode( qr_code_file, "from {} until {}".format(from_date, until_date), request.forms['email']) else: qr_code_file = "images/emoji-not-happy.jpg" else: # GET qr_code_file = None from_date, until_date = date.today(), date.today() # only admin can set 'until date' period = (from_date, until_date if session['user'].is_admin else "") return template("daypass", qr_code=qr_code_file, period=period, session=session)
def get_member(id): """Display the form in R/O mode for a member""" member = Member(id) qr_file = "images/XCJ_{}.png".format(id) if member['status'] == "OK": try: last_modif_time = stat(qr_file).st_mtime make_qr_code = datetime.fromtimestamp( last_modif_time) < datetime.now().replace( minute=0, hour=0, second=0, microsecond=0) except (FileNotFoundError, AttributeError) as err: make_qr_code = True if make_qr_code: qrcode_text = member.encode_qrcode() img = make_qrcode(qrcode_text) img.save(qr_file) member.qrcode_is_valid = True else: member.qrcode_is_valid = False copy2("images/emoji-not-happy.jpg", qr_file) # overwrite any previous QR code .png return template("member", member=member, read_only=True, session=session_manager.get_session())
def make_event_qrcode(id): """Generate the QR Code of an Event""" trans = Transaction(id) event_member = Member(id=trans["member_id"]) if event_member["status"] == "OK" and event_member["gender"] == 5: # use the event_member to set all necessary information to generate a QR Code Version 3 qrcode = event_member.encode_qrcode(version=3, from_date=trans["valid_from"], until_date=trans["valid_until"]) img_qrcode = make_qrcode(qrcode) qr_file = "images/XCJevent_{}.png".format(id) img_qrcode.save(qr_file) return "<img src='/{}' />".format(qr_file) else: return "<h2>This event has not a valid status or gender.</h2>"
from make_qrcode import make_qrcode db = Member(debug=False) images_path = os.path.dirname(os.path.realpath(__file__)) + "/images" XCJ_LOGO = images_path + "/XCJ.png" NOT_HAPPY = images_path + "/emoji-not-happy.jpg" for m in db.select(columns="id", one_only=False, order_by="id"): member = Member(id=m['id']) print(member, member['status']) # if member's status is not OK then overwrite its QR code image else generate a new one qr_file = "{}/XCJ_{}.png".format(images_path, member.id) if member['status'] != "OK": copy2(NOT_HAPPY, qr_file) continue # else.... qrcode_text = member.encode_qrcode() img = make_qrcode(qrcode_text) img.save(qr_file) if member["role"] == member.ROLE["GROUP"]: continue if (member['validity'] - date.today()).days == 7: print("7 days!") if member['email']: send_email( "Your membership to Xin Che Jian will expire in one week", db.mailbox["username"], (member['email'], ), """ Dear {}, This message to inform you that we noticed that your membership to Xin Che Jian hackerspace will expire on {}. Please approach one of our staff during your next visit to renew it.
args, unk = parser.parse_known_args() # a member ID must be provided either after the -m option or as free argument if args.member_id is None: if unk: args.member_id = int(unk[0]) else: raise argparse.ArgumentError(arg_id, message="Missing Member ID") # optional: if no member's name is given then fetch record from DB else create a QR Code without DB record if args.member_name is None: # if only the member ID is given then fetch in the database current_member = Member(args.member_id) if current_member.id is None: raise argparse.ArgumentError(arg_id, message="Unknown Member ID {}".format( args.member_id)) else: # both given: make it directly without DB selection current_member = Member() current_member.id, current_member.name = args.member_id, args.member_name qrcode_text = current_member.encode_qrcode(version=args.qrcode_version) qr_file = args.output or os.path.join( args.directory, "XCJ_{}.png".format(current_member.id)) img = make_qrcode(qrcode_text, QR_CODE_QUALITY[args.quality], logo=args.logo) img.save(qr_file) # test that the QR Code is valid qrc = find_qrcode(qr_file) print( "QR Code {} generated with {} quality and controlled:\n".format( qr_file, args.quality), qrc)