inital check in

This commit is contained in:
2025-03-07 12:15:48 -06:00
parent 1a571d2f8b
commit cdbbea7711
56 changed files with 1988 additions and 0 deletions

192
schasite/admin.py Normal file
View File

@@ -0,0 +1,192 @@
from django.contrib import admin
from .models import UsefulLinks, Membership,CalendarEvent, MembershipServices, AddressModel1, MembershipPerson, MembershipCommittee, CalendarEventAddressModel, Payments
from django.http import HttpResponse
from datetime import datetime
from .forms import PaymentImport
# Register your models here.
class UsefulLinksAdmin(admin.ModelAdmin):
list_display = ["name", "url"]
class MembershipAddressInline(admin.TabularInline):
model = AddressModel1
extra = 1
readonly_fields = ('id',)
class MembershipPersonInline(admin.TabularInline):
model = MembershipPerson
extra = 1
readonly_fields = ('id',)
class MembershipCommiteeInline(admin.TabularInline):
model = MembershipCommittee
extra = 1
readonly_fields = ('id',)
class MembershipServicesInline(admin.TabularInline):
model = MembershipServices
extra = 1
readonly_fields = ('id',)
def download_csv_by_members(modelAdmin, request, queryset):
import csv
import io as StringIO
def stream_csv(queryset):
csvfile = StringIO.StringIO()
writer = csv.writer(csvfile)
writer.writerow([
'address_1',
'city',
'state',
'zip_code',
'first_name',
'last_name',
'email',
'phone_number'
])
for q in queryset:
people = [item for item in MembershipPerson.objects.filter(membership_id=q.id)]
for person in people:
writer.writerow([
q.addressmodel1.address_1,
q.addressmodel1.city,
q.addressmodel1.state,
q.addressmodel1.zip_code,
person.first_name,
person.last_name,
person.email,
person.phone_number
])
yield csvfile.getvalue()
now = datetime.now()
filename = now.strftime("%Y_%m_%d_%H_%M_%S") + "_scha_member_by_member.csv"
response = HttpResponse(stream_csv(queryset), content_type="text/csv")
response['Content-Disposition'] = "attachment; filename={}".format(filename)
return response
def download_csv_by_address(modeladmin, request, queryset):
import csv
import io as StringIO
def stream_csv(queryset):
csvfile = StringIO.StringIO()
writer = csv.writer(csvfile)
writer.writerow(['address_1',
"city",
"state",
"zip_code",
"person_1_email",
"person_1_phone",
"person_1_first_name",
"person_1_last_name",
"person_2_email",
"person_2_phone",
"person_2_first_name",
"person_2_last_name"])
for q in queryset:
people = [item for item in MembershipPerson.objects.filter(membership_id=q.id)]
writer.writerow([
q.addressmodel1.address_1,
q.addressmodel1.city,
q.addressmodel1.state,
q.addressmodel1.zip_code,
people[0].email if len(people) > 0 else "",
people[0].phone_number if len(people) > 0 else "",
people[0].first_name if len(people) > 0 else "",
people[0].last_name if len(people) > 0 else "",
people[1].email if len(people) > 1 else "",
people[1].phone_number if len(people) > 1 else "",
people[1].first_name if len(people) > 1 else "",
people[1].last_name if len(people) > 1 else "",
])
yield csvfile.getvalue()
now = datetime.now()
filename = now.strftime("%Y_%m_%d_%H_%M_%S") + "_scha_member_by_address.csv"
response = HttpResponse(stream_csv(queryset), content_type="text/csv")
response['Content-Disposition'] = "attachment; filename={}".format(filename)
return response
class MembershipAdmin(admin.ModelAdmin):
inlines = [MembershipAddressInline, MembershipPersonInline, MembershipCommiteeInline, MembershipServicesInline]
actions=[download_csv_by_address, download_csv_by_members]
class CalendarEventAddressInline(admin.TabularInline):
model = CalendarEventAddressModel
extra = 1
readonly_fields = ('id',)
class CalendarEventAdmin(admin.ModelAdmin):
inlines = [CalendarEventAddressInline]
list_display = ["event_name", "start_date", "end_date", "coordinator_email", "event_link_name"]
class AddressModelAdmin(admin.ModelAdmin):
pass
class MembershipPersonAdmin(admin.ModelAdmin):
pass
class MembershipCommitteeAdmin(admin.ModelAdmin):
pass
class MembershipServicesAdmin(admin.ModelAdmin):
pass
class CalendarEventAddressModelAdmin(admin.ModelAdmin):
pass
def download_payments(modelAdmin, request, queryset):
import csv
import io as StringIO
def stream_payment_csv(queryset):
csvfile = StringIO.StringIO()
writer = csv.writer(csvfile)
writer.writerow([
'email',
'date',
'status',
'first_name',
'last_name',
'phone_number'
])
for q in queryset:
first_name=""
last_name = ""
phone_number = ""
if q.person:
first_name = q.person.first_name if q.person.first_name else ""
last_name = q.person.last_name if q.person.last_name else ""
phone_number = q.person.phone_number if q.person.phone_number else ""
writer.writerow([
q.email,
q.date,
q.status,
first_name,
last_name,
phone_number,
])
yield csvfile.getvalue()
now = datetime.now()
filename = now.strftime("%Y_%m_%d_%H_%M_%S") + "_scha_payments_by_member.csv"
response = HttpResponse(stream_payment_csv(queryset), content_type="text/csv")
response['Content-Disposition'] = "attachment; filename={}".format(filename)
return response
class PaymentsAdmin(admin.ModelAdmin):
list_display = ["date", "status", "email"]
search_fields = ['email']
actions=[download_payments]
form = PaymentImport
admin.site.register(UsefulLinks, UsefulLinksAdmin)
admin.site.register(Membership, MembershipAdmin)
admin.site.register(CalendarEvent, CalendarEventAdmin)
admin.site.register(AddressModel1, AddressModelAdmin)
admin.site.register(MembershipPerson, MembershipPersonAdmin)
admin.site.register(MembershipCommittee, MembershipCommitteeAdmin)
admin.site.register(MembershipServices, MembershipServicesAdmin)
admin.site.register(CalendarEventAddressModel, CalendarEventAddressModelAdmin)
admin.site.register(Payments, PaymentsAdmin)