def handle(self, *args, **options): month_name = "June" billing_period = 29 limit = 200 count = 0 schedule = SkateSessionPaymentSchedule.objects.get(pk=billing_period) #skaters = Skater.objects.all() skaters = Skater.objects.exclude(status=2) #skaters = Skater.objects.filter(pk=1) for skater in skaters: invoiced = False "Check if we've already generated an invoice for this user" try: invoice = Invoice.objects.get(skater=skater, schedule=schedule) invoiced = True except Invoice.DoesNotExist: pass if invoiced: self.stdout.write( "ALREADY INVOICED - " + skater.get_short_name() ) else: generate_scheduled_invoice(skater, schedule) sk = Skater.objects.get(id=skater.id) self.stdout.write( "$" + str(skater.balance) + "\t" + sk.get_short_name() ) html = render_to_string('emails/new_invoice.html', { 'skater' : sk, 'skater_short_name': sk.get_short_name(), } ) msg = EmailMultiAlternatives( "Mad Wreckin' Dolls " + month_name + " Dues", html, settings.FROM_EMAIL, [ skater.email ], [ settings.FROM_EMAIL ], headers = { 'Reply-To' : settings.FROM_EMAIL, 'CC' : "*****@*****.**", 'Content-Type' : 'text/html' }, ) msg.content_subtype = "html" msg.send(fail_silently = False) count = count + 1 if count >= limit: return
def handle(self, *args, **options): month_name = "November" due_date = "Friday, November 4th" billing_period = 2 limit = 200 count = 0 schedule = SkateSessionPaymentSchedule.objects.get(pk=billing_period) #skaters = Skater.objects.all() skaters = Skater.objects.exclude(status__name=settings.REGISTRATION_INACTIVE_STATUS) #skaters = Skater.objects.filter(pk=1) for skater in skaters: invoiced = False "Check if we've already generated an invoice for this user" try: invoice = Invoice.objects.get(skater=skater, schedule=schedule) invoiced = True except Invoice.DoesNotExist: pass if invoiced: self.stdout.write( "ALREADY INVOICED - " + skater.get_short_name() ) else: generate_scheduled_invoice(skater, schedule) sk = Skater.objects.get(id=skater.id) self.stdout.write( "$" + str(skater.balance) + "\t" + sk.get_short_name() ) subject = "Mad Wreckin' Dolls " + month_name + " Dues" html = render_to_string('emails/new_invoice.html', { 'skater' : sk, 'skater_short_name': sk.get_short_name(), 'month_name': month_name, 'due_date': due_date, } ) msg = EmailMessage( subject, html, to = [skater.email], from_email = settings.FROM_EMAIL, cc = [settings.FROM_EMAIL], ) msg.content_subtype = 'html' msg.send() count = count + 1 if count >= limit: return
def handle(self, *args, **options): month_name = "Summer Session (August)" due_date = "Thursday, August 8th" # 6 - June # 7 - July # 8 - Aug billing_period = 8 schedule = SkateSessionPaymentSchedule.objects.get(pk=billing_period) count = 0 for file in args: with open(file, 'rb') as csvfile: reader = csv.reader(csvfile, delimiter=',', quotechar='"') for row in reader: count = count + 1 name = row[0] email = row[1] amount = row[2] try: skater = Skater.objects.get(email__exact=email) except Skater.DoesNotExist: skater = False self.stdout.write( str(count) + "\t==== NOT FOUND, NOT INVOICED: " + email) if skater: invoiced = False "Check if we've already generated an invoice for this user" try: invoice = Invoice.objects.get(skater=skater, schedule=schedule) invoiced = True except Invoice.DoesNotExist: pass if invoiced: self.stdout.write( str(count) + "\t~~~~ ALREADY INVOICED - " + email + " / " + skater.get_short_name() ) else: generate_scheduled_invoice(skater, schedule, False, amount) self.stdout.write( str(count) + "\tOK - " + skater.get_short_name() + "\t" + email + "\t" + str(amount)) sk = Skater.objects.get(id=skater.id) html = render_to_string('emails/summer_invoice.html', { 'skater' : sk, 'skater_short_name': sk.get_short_name(), 'due_date' : due_date, } ) msg = EmailMultiAlternatives( "Mad Wreckin' Dolls " + month_name + " Dues", html, settings.FROM_EMAIL, [ skater.email ], [ settings.FROM_EMAIL ], headers = { 'Reply-To' : settings.FROM_EMAIL, 'CC' : "*****@*****.**", 'Content-Type' : 'text/html' }, ) msg.content_subtype = "html" msg.send(fail_silently = False)
def emergency_info(request): if not can_pre_reg(request): return render(request, 'registration/pre-reg-only-sorry.html', { 'mailto' : settings.FROM_EMAIL }) try: request.session['personal_details'] except KeyError: return HttpResponseRedirect(reverse('registration.views.personal_details')) show_errors = True if request.method == 'POST': form = EmergencyForm(request.POST) if form.is_valid(): request.session['emergency_info'] = form personal_data = request.session['personal_details'].cleaned_data emergency_data = request.session['emergency_info'].cleaned_data if request.session.get("skater"): "Previously created skater" skater = request.session.get("skater") # Make inactive skaters active now if skater.status == SkaterStatus.objects.get(name__exact = settings.REGISTRATION_INACTIVE_STATUS): skater.status = SkaterStatus.objects.get(name__exact = settings.REGISTRATION_DEFAULT_STATUS) else: "Brand new registratered user" try: skater = Skater.objects.create_user(personal_data['email'], Skater.objects.make_random_password()) skater.status = SkaterStatus.objects.get(name__exact = settings.REGISTRATION_DEFAULT_STATUS) except IntegrityError: return render(request, 'registration/reg-email-exists.html', { 'mailto' : settings.FROM_EMAIL }) skater.first_name = personal_data['first_name'] skater.last_name = personal_data['last_name'] skater.derby_name = personal_data['derby_name'] skater.derby_number = personal_data['derby_number'] skater.address1 = personal_data['address1'] skater.address2 = personal_data['address2'] skater.city = personal_data['city'] skater.state = personal_data['state'] skater.zip = personal_data['zip'] skater.phone = personal_data['phone'] skater.dob = personal_data['dob'] skater.last_level = personal_data['previous_level'] skater.hope_level = personal_data['hope_level'] skater.emergency_contact = emergency_data['emergency_contact'] skater.emergency_relationship = emergency_data['emergency_relationship'] skater.emergency_phone = emergency_data['emergency_phone'] skater.wftda_number = emergency_data['wftda_number'] skater.insurance_provider = emergency_data['insurance_company'] skater.hospital = emergency_data['hospital_preference'] skater.medical_details = emergency_data['allergies'] skater.first_aid_certified = emergency_data['first_aid_certified'] skater.first_aid_volunteer = emergency_data['first_aid_volunteer'] skater.save() """Generate Invoice""" """ If dues amount is zero, just create an account. """ dues_amount = False billing_period = SkateSessionPaymentSchedule.objects.get(pk=settings.REGISTRATION_BILLING_PERIOD) if billing_period: dues_amount = billing_period.get_dues_amount(status=skater.status) invoice = generate_scheduled_invoice(skater, billing_period) request.session['invoice'] = invoice """ Something isn't setup right (no valid skate session, no valid billing period) """ if not dues_amount: dues_amount = 0 """ Log/alert of an error here.... """ """ Refresh skater session object after invoice generation (new balance) """ request.session['skater'] = Skater.objects.get(pk=skater.id) return HttpResponseRedirect(reverse('registration.views.anything_else')) else: try: form = request.session['emergency_info'] except KeyError: initial_data = {} show_errors = False try: skater = request.session['skater'] if skater.wftda_number != "": initial_data['wftda_number'] = skater.wftda_number initial_data['wftda_confirm'] = 'yes' initial_data['emergency_contact'] = skater.emergency_contact initial_data['emergency_phone'] = skater.emergency_phone initial_data['emergency_relationship'] = skater.emergency_relationship initial_data['insurance_provider'] = skater.insurance_provider initial_data['hosptial_preference'] = skater.hospital initial_data['allergies'] = skater.medical_details except KeyError: pass form = EmergencyForm(initial_data) form.helper.form_show_errors = show_errors return render(request, 'registration/basic-registration-form.html', { 'form': form, 'step': 2, 'step_info': 'Emergency Contact and Medical Info', })