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)
Пример #4
0
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', })