def populate_member(self, member_number, return_url, upgrade): self.return_url.data = return_url member = get_member(member_number) dues = member.base_dues() + (member.upgrade_dues() if upgrade else 0) self.payment_plan.data = self.get_dd_payment_plan( PaymentMethod.dd, member, upgrade).value self.txtQuestion1.data = member.dt_number() self.txtRegularAmount.data = fmt_curr(dues)[1:] address = member.address self.txtTitle.data = member.title.name if member.title else '' self.txtFirstName.data = member.first_name self.txtSurname.data = member.last_name self.addr1.data = address.line_1 self.addr2.data = address.line_2 self.addr3.data = address.line_3 self.addr4.data = address.county.name if address.county else '' self.txtAddressTown.data = address.city self.searchPostCode.data = address.post_code self.txtPhone.data = member.home_phone self.txtMobile.data = member.mobile_phone self.txtEmail.data = member.email self.arrayvars.data = "dt_number*|*{}*|*amount*|*{}".format( member.dt_number(), fmt_curr(dues)[1:]) return '' # member.renewal_activated()
def populate_event(self, event_id, member_id): event = get_event(event_id) self.bookable.data = event.is_bookable() self.at_capacity.data = event.at_capacity() if self.bookable.data: self.title.data = 'Book Event' else: self.title.data = 'Event Details' self.show_bookings.data = len(event.bookings) > 0 self.event_id.data = event_id self.event_type.data = event.type self.date.data = encode_date(event.date) if event.organiser: self.organiser_id.data = event.organiser.id self.organiser.data = event.organiser.player.full_name() else: self.organiser_id.data = 0 self.event.data = event.trophy.name if event.trophy else event.venue.name self.venue.data = event.venue.name contact = event.venue.contact or Contact() post_code = contact.post_code or '' self.venue_address.data = line_break( (contact.address or '') + ',' + post_code, [',', '\r', '\n']) self.venue_phone.data = contact.phone or '' self.map_url.data = 'http://maps.google.co.uk/maps?q={}&title={}&z=12 target="googlemap"' \ .format(post_code.replace(' ', '+'), event.venue.name) self.venue_directions.data = line_break(event.venue.directions or '', '\n') self.schedule.data = line_break([(s.time.strftime('%H:%M ') + s.text) for s in event.schedule]) self.member_price.data = event.member_price self.guest_price.data = event.guest_price self.booking_deadline.data = encode_date(event.booking_end) self.notes.data = event.note or '' if member_id == 0: self.message.data = '' return booking = get_booking(event_id, member_id) if not booking.id: booking.member = get_member(member_id) booking.playing = True self.message.data = self.booking_message(event, booking) if event.is_bookable() or booking.id: self.attend.data = booking.playing self.comment.data = booking.comment self.booking_date.data = fmt_date(booking.date) self.member_name.data = booking.member.player.full_name() count = 1 for guest in booking.guests + (3 - len(booking.guests)) * [Guest()]: item_form = GuestForm() item_form.item_pos = count item_form.guest_name = guest.name item_form.handicap = guest.handicap self.guests.append_entry(item_form) count += 1
def populate(self, member_id, year): self.year.data = year self.member_id.data = member_id member = get_member(member_id) self.member_name.data = member.player.full_name() self.player_id.data = member.player_id self.inc_bal_url.data = config.url_for_html('reports', str(year - 1), 'incexp.htm')
def register_user(member_number, user_name, password, email=None, role=UserRole.member, two_phase=False, activate_url=None): user_id = 0 if user_name and password: member = get_member(member_number) if member: if not member.is_active(): ok, message, message_type = False, 'Sorry, you are not a current member, please contact [email protected]', 'danger' else: if not match_string(member.email, email): ok, message, message_type = False, 'Email does not match', 'warning' else: user = get_user(user_name=user_name) if user and user.member_id != member.id: ok, message, message_type = False, 'User name already in use', 'warning' else: if role == UserRole.member: ok, message, message_type = member.check_credentials(user_name, password) if not ok: return ok, user_id, message, message_type if not member.user: user = User(user_name=user_name, member_id=member.id) else: user = member.user user.user_name = user_name if not user.check_password(password): ok, message, message_type = True, 'Password updated', 'success' else: if two_phase: token, expires = user.get_token(current_app) send_mail( to=member.email, sender='*****@*****.**', cc=[], subject='Dons Trust Members - registration', message=render_template('activate.txt', full_url_for=full_url_for, member=member, token=token, expires=expires) ) ok, message, message_type = True, 'Activation email sent to {}'.format(member.email), 'success' else: ok, message, message_type = True, 'You are now a registered user', 'success' user.set_password(password) if not user.role: user.role = role # else: # if not role in [role.role for role in user.roles]: # user.roles += [Role(role=role)] save_user(user) user_id = user.id else: ok, message, message_type = False, 'Cannot find your membership', 'danger' else: ok, message, message_type = False, 'Missing user name/password', 'warning' return ok, user_id, message, message_type
def publish_minutes(self, member_id): minutes = Minutes(self.meeting_type.data, self.meeting_date.data) link = self.save_file(self, minutes) text = 'Latest {} from {}'.format( minutes.full_type(), get_member(member_id).player.full_name()) message = self.message.data item = (text, link, 'Show minutes') news_day = NewsDay(message=message, items=[item]) News().publish_news_day(news_day) return True
def save(self, member_id): file = path_join(config.get('locations')['export'], 'b_details.csv') # if not file_exists(file): # create_data_file(file, ['member_id', 'name', 'number', 'sort']) name = self.account_name.data number = self.account_number.data sort = self.account_sort.data rec = '\r' + ','.join([str(member_id), name, number, sort]) append_file(file, rec) return get_member(member_id)
def api_get_member(member_number): new_member = member_number == 0 if new_member: member = get_new_member() else: member = get_member(member_number) if member: if wants_json_response(): return jsonify(member.to_dict()) else: return jsonify(member.to_dict()) # html?? else: abort(404)
def api_update_member(member_number, payload): new_member = member_number == 0 if new_member: member = get_new_member() else: member = get_member(member_number) if member: member.from_dict(payload) if wants_json_response(): return jsonify(member.to_dict()) else: return jsonify(member.to_dict()) # html?? else: abort(404)
def upload_minutes(self, member_id): minutes = Minutes(self.meeting_type.data, self.meeting_date.data) link = self.save_file(self, minutes, draft=True) # notify committee subject = '{} {} - draft minutes for review'.format( minutes.full_type(), fmt_date(minutes.date)) sender = get_member(member_id).contact.email message = [ 'The draft minutes are available here:', link, self.message.data ] to = [m.member.contact.email for m in get_committee()] send_mail(to=to, sender=sender, cc=[], subject='WAGS: ' + subject, message=message) return True
def save_member(self, member_number): qandas = [(QuestionId.Gender, self.gender.data, self.gender_other.data), (QuestionId.GenderIdentify, self.gender_identify.data, None), (QuestionId.Disability, self.disability.data, None), (QuestionId.DisabilityType, self.disability_type.data, self.disability_type_other.data), (QuestionId.Impairment, self.impairment.data, None), (QuestionId.MaritalStatus, self.marital_status.data, None), (QuestionId.Ethnicity, self.ethnicity.data, self.ethnicity_other.data), (QuestionId.SexualOrientation, self.sexual_orientation.data, None), (QuestionId.Religion, self.religion.data, self.religion_other.data), (QuestionId.EmploymentStatus, self.employment.data, self.employment_other.data)] if type(member_number) == int: member = get_member(member_number) else: member = member_number update_member_questions(member, qandas) return member
def populate(form, member_id, edit=False): if not edit: set_select_field_new(form.choose_member, get_member_select_choices(), None, member_id) member = get_member(member_id) if member: player = member.player contact = member.contact form.status.data = member.status.name form.first_name.data = player.first_name form.last_name.data = player.last_name form.email.data = contact.email form.address.data = contact.address form.post_code.data = contact.post_code form.phone.data = contact.phone form.mugshot.data = url_for_html( 'pictures', 'mugshots', player.full_name().replace(' ', '_') + '.jpg')
def update_member_season_ticket(rec): # rec is line of payments file with keys dt id, afcw id message = [] dt_id = rec['dt id'].strip() afcw_id = rec['afcw id'].strip() if len(afcw_id) > 0: if dt_id[0] in ['D', 'J']: number = int(dt_id[4:]) else: number = int(dt_id) season_ticket = int(afcw_id) member = get_member(number) if member: member.season_ticket_id = season_ticket message += ['Season ticket updated: {}'.format(season_ticket)] save_member(member) else: message += ['Member not found: {}'.format(number)] return message
def populate_account(self, member_id, year): member = get_member(member_id) self.title.data = '{} - Account information {}'.format( member.player.full_name(), year) balance = 0 account = get_member_account(member.player.full_name(), year) for item in account.rows(): item_form = AccountItemForm() item_form.date = fmt_date(parse_date(item['date'], reverse=True)) item_form.item = item['item'] debit = parse_float(item['debit']) item_form.debit = fmt_curr(debit) credit = parse_float(item['credit']) item_form.credit = fmt_curr(credit) self.items.append_entry(item_form) balance += (credit or 0) - (debit or 0) self.balance.data = fmt_curr(balance) self.negative_balance.data = balance < 0
def populate_member(self, member_number, return_url, renewal): self.return_url.data = return_url self.form_type.data = 'renewal' if renewal else 'details' member = get_member(member_number) if not member.junior: self.parental_consent = None self.gender.data = get_answer(member, QuestionId.Gender) self.gender_identify.data = get_answer(member, QuestionId.GenderIdentify) self.disability.data = get_answer(member, QuestionId.Disability) self.disability_type.data = get_answer(member, QuestionId.DisabilityType, single=False) self.disability_type_other.data = get_answer(member, QuestionId.DisabilityType, other=True) self.impairment.data = get_answer(member, QuestionId.Impairment) self.marital_status.data = get_answer(member, QuestionId.MaritalStatus) self.ethnicity.data = get_answer(member, QuestionId.Ethnicity) self.ethnicity_other.data = get_answer(member, QuestionId.Ethnicity, other=True) self.sexual_orientation.data = get_answer(member, QuestionId.SexualOrientation) self.religion.data = get_answer(member, QuestionId.Religion) self.religion_other.data = get_answer(member, QuestionId.Religion, other=True) self.employment.data = get_answer(member, QuestionId.EmploymentStatus) self.employment_other.data = get_answer(member, QuestionId.EmploymentStatus, other=True)
def populate_member(self, member_id): new_member = member_id == 0 if new_member: self.first_name.data = 'new' self.last_name.data = 'member' self.status_return.data = MemberStatus.full_member.value self.handicap_return.data = 0 set_select_field_new(self.proposer, get_member_select_choices(), item_name='proposer') else: member = get_member(member_id) proposer = member.proposer_id if member.proposer else 0 set_select_field_new(self.proposer, get_member_select_choices(), default_selection=proposer, item_name='proposer') player = member.player contact = member.contact state = player.state_as_of(datetime.date.today()) set_select_field_new(self.status, MemberStatus.choices(), default_selection=member.status) self.status_return.data = member.status.value self.first_name.data = player.first_name self.last_name.data = player.last_name self.name_return.data = self.first_name.data + ' ' + self.last_name.data self.email.data = contact.email self.address.data = contact.address self.post_code.data = contact.post_code self.phone.data = contact.phone self.accepted_date.data = member.accepted or datetime.date( 1992, 6, 17) self.handicap_return.data = self.handicap.data = state.handicap self.as_of.data = state.date role = member.user.roles[-1].role if member.user else UserRole.user set_select_field_new(self.access, UserRole.choices(), default_selection=role)
def update_member_payment(rec, payment_method, save=True): # rec is line of payments file with keys id, date, amount and note message = [] number = int(rec['id'][4:]) date = parse_date(rec['date'], sep='/', reverse=True) amount = float(rec['amount']) member = get_member(number) pending = first_or_default([ p for p in member.payments if p.type == PaymentType.pending and p.method == payment_method ], None) payment_comment = 'from payments file' if pending: comment = [''] if pending.amount != amount: comment = [ "Expected amount {}, got {}".format(pending.amount, amount) ] message += comment pending.type = PaymentType.dues pending.date = date pending.amount = amount pending.comment = payment_comment + ' ' + comment[0] else: dues = first_or_default([ p for p in member.payments if p.type == PaymentType.dues and p.method == payment_method ], None) if dues and dues.amount == amount and dues.date == date and dues.comment.startswith( payment_comment): message += ['Payment already processed'] return message else: message += ["no pending payment: adding one"] pending = Payment(member_id=member.id, date=date, amount=amount, type=PaymentType.dues, method=payment_method, comment=payment_comment) member.payments.append(pending) action = first_or_default([ a for a in member.actions if a.action == MemberAction.card and a.status == ActionStatus.open ], None) if not action: action = Action(member_id=member.id, date=datetime.date.today(), action=MemberAction.card, status=ActionStatus.open, comment=payment_comment) member.actions.append(action) upgrade = amount in [20.0, 30.0, 45.0 ] and member.status != MemberStatus.plus action = first_or_default([ a for a in member.actions if a.action == MemberAction.upgrade and a.status == ActionStatus.open ], None) if action: if upgrade: member.status = MemberStatus.plus action.status = ActionStatus.closed # else: # message += ['expected an upgrade payment, upgrade action removed'] # member.actions.remove(action) else: if upgrade: action = Action(member_id=member.id, date=date, action=MemberAction.upgrade, status=ActionStatus.closed, comment=payment_comment) member.actions.append(action) member.end_date = new_end_date member.last_payment_method = payment_method if save: save_member(member) return message
def save_member(self, member_number): member_details = { 'title': self.title.data, 'first_name': self.first_name.data.strip(), 'last_name': self.last_name.data.strip(), 'sex': int(self.sex.data), 'member_type': self.type.data, 'birth_date': self.birth_date.data, 'access': int(self.access.data), 'fan_id': self.fan_id.data, 'home_phone': self.home_phone.data.strip(), 'mobile_phone': self.mobile_phone.data.strip(), 'email': self.email.data.strip(), 'comms': self.comms.data, 'line_1': self.line1.data.strip(), 'line_2': self.line2.data.strip(), 'line_3': self.line3.data.strip(), 'city': self.city.data.strip(), 'state': get_state(self.state.data), 'post_code': self.post_code.data.strip(), 'county': get_county(self.county.data), 'country': get_country(self.country.data), 'external_access': self.external_access(None, self.third_pty_access.data), 'payment_method': self.payment_method.data, 'comment': self.comment.data, 'upgrade': self.upgrade.data } if self.type.data == MembershipType.junior.value: member_details['jd_mail'] = self.jd_email.data.strip() member_details['jd_gift'] = self.jd_gift.data member_details[ 'parental_consent'] = YesNo.yes if self.parental_consent.data else YesNo.no # return key info for save message member = get_member(member_number) payment_method = PaymentMethod.from_value(self.payment_method.data) upgrade = self.upgrade.data plus = upgrade or member.status == MemberStatus.plus member_type = member.long_membership_type(upgrade=upgrade) dues = member.base_dues() + (member.upgrade_dues() if plus else 0) if member.is_recent_resume() and not upgrade: dues = -1 renewal_payment = self.get_renewal_payment(payment_method, member, upgrade) member = save_member_contact_details(member_number, member_details, self.form_type.data == 'renewal', False) member = DiversityForm.save_member(self, member) return payment_method, renewal_payment, dues, member_type, member
def populate_member(self, member_number, return_url, renewal): self.return_url.data = return_url self.form_type.data = 'renewal' if renewal else 'details' member = get_member(member_number) address = member.address self.member_number.data = str(member.number) self.recent_new.data = member.is_recent_new() self.recent_resume.data = member.is_recent_resume() self.payment_required.data = not ( member.status == MemberStatus.life) and not ( member.status == MemberStatus.plus and member.is_recent_new() or member.is_recent_resume()) if member.last_payment_method: prev = member.last_payment_method.value else: prev = member.last_payment() if prev and prev.method: prev = prev.method.value else: prev = 0 self.current_payment_method.data = prev self.dt_number.data = member.dt_number() self.access.data = member.user.role.value if member.user else 0 self.status.data = member.status.name self.plus.data = ' (Dons Trust Plus)' if member.status == MemberStatus.plus else '' self.type.data = member.member_type_at_renewal().value self.start_date.data = fmt_date(member.start_date) self.birth_date.data = member.birth_date self.age.data = str(member.age()) if member.age() is not None else None self.fan_id.data = member.season_ticket_id if member.season_ticket_id else '' self.external_access.data = (member.external_access or ExternalAccess.none).value self.last_updated.data = fmt_date(member.last_updated) self.full_name.data = member.full_name() self.title.data = member.title.value if member.title else '' self.first_name.data = member.first_name self.last_name.data = member.last_name self.sex.data = member.sex.value if member.sex else 0 self.line1.data = address.line_1 self.line2.data = address.line_2 self.line3.data = address.line_3 self.city.data = address.city self.state.data = address.state.id if address.state else 0 self.post_code.data = address.post_code self.county.data = address.county.id if address.county else 0 self.country.data = address.country.id self.home_phone.data = member.home_phone self.mobile_phone.data = member.mobile_phone self.email.data = member.email self.comms.data = member.comms.value self.comms_status.data = member.comms_status.value if member.comms_status else CommsStatus.all_ok if member.member_type_at_renewal() == MembershipType.junior: if not member.junior: member.junior = get_junior() self.jd_email.data = member.junior.email or '' self.jd_gift.data = member.junior.gift.value if member.junior.gift else '' self.parental_consent.data = 1 if member.junior.parental_consent else 0 else: self.jd_email = self.jd_gift = None self.third_pty_access.data = member.third_pty_access() self.payment_method.data = self.current_payment_method.data previous = member.previous_renewal_payment() self.previous_payment_method.data = previous.value if previous else 0 self.upgrade.data = member.last_action() and member.last_action( ).action == MemberAction.upgrade self.notes.data = member.renewal_notes() + member.edit_notes() self.notes.data += [ 'This year we are collecting diversity information - please complete this section as well.', ] self.notes.data += [ 'We are also asking for your AFC Wimbledon Fan ID so please give this if you have one.', ] DiversityForm.populate_member(self, member_number, return_url, renewal) return member.renewal_activated()
def populate_member(self, member_number, return_url, copy=False): self.return_url.data = return_url new_member = member_number == 0 if new_member or copy: member = get_new_member() else: member = get_member(member_number) if copy: base_member = get_member(member_number) new_member = True member.last_name = base_member.last_name member.address = base_member.address member.home_phone = base_member.home_phone member.mobile_phone = base_member.mobile_phone member.email = base_member.email member.comms = base_member.comms address = member.address self.member_number.data = str(member.number) self.dt_number.data = member.dt_number() self.status.data = member.status.value self.type.data = member.member_type.value self.start_date.data = member.start_date self.end_date.data = member.end_date self.birth_date.data = member.birth_date self.age.data = str(member.age()) if member.age() is not None else None self.last_updated.data = fmt_date(member.last_updated) self.access.data = member.user.role.value if member.user else 0 self.fan_id.data = member.season_ticket_id if member.season_ticket_id else '' self.external_access.data = (member.external_access or ExternalAccess.none).value self.payment_method.data = member.last_payment_method.value if member.last_payment_method else '' self.full_name.data = member.full_name() self.title.data = member.title.value if member.title else '' self.first_name.data = member.first_name self.last_name.data = member.last_name self.sex.data = member.sex.value if member.sex else '' self.line1.data = address.line_1 self.line2.data = address.line_2 self.line3.data = address.line_3 self.city.data = address.city self.state.data = address.state.id if address.state else 0 self.post_code.data = address.post_code self.county.data = address.county.id if address.county else 0 self.country.data = address.country.id self.home_phone.data = member.home_phone self.mobile_phone.data = member.mobile_phone self.email.data = member.email self.comms.data = member.comms.value self.comms_status.data = member.comms_status.value if member.comms_status else CommsStatus.all_ok for payment in [get_new_payment()] + member.payments: item_form = PaymentItemForm() item_form.date = payment.date item_form.pay_type = payment.type.value ## nb: don't set the data attribute for select fields in a fieldlist! item_form.amount = payment.amount item_form.method = payment.method.value if payment.method else None item_form.comment = payment.comment or '' self.payment_list.append_entry(item_form) for action in [get_new_action(new_member)] + member.actions: item_form = ActionItemForm() if action.action: item_form.action = action.action.value if action.status: item_form.status = action.status.value item_form.date = action.date item_form.comment = action.comment or '' self.action_list.append_entry(item_form) for comment in [get_new_comment()] + member.comments: item_form = CommentItemForm() item_form.date = comment.date item_form.comment = comment.comment or '' self.comment_list.append_entry(item_form) if new_member or member.member_type == MembershipType.junior: if not member.junior: member.junior = get_junior() self.jd_email.data = member.junior.email or '' self.jd_gift.data = member.junior.gift.value if member.junior.gift else '' else: self.jd_email = self.jd_gift = None
def populate(self, member_id, upgrade): member = get_member(member_id) payment = member.last_payment() self.description = member.long_membership_type(upgrade) self.dt_number.data = member.dt_number() self.amount.data = payment.amount