redesign proto
This commit is contained in:
@@ -1,192 +1,250 @@
|
||||
from django.contrib import admin
|
||||
from .models import UsefulLinks, Membership,CalendarEvent, MembershipServices, AddressModel1, MembershipPerson, MembershipCommittee, CalendarEventAddressModel, Payments
|
||||
from .models import (
|
||||
UsefulLinks,
|
||||
Membership,
|
||||
CalendarEvent,
|
||||
MembershipServices,
|
||||
AddressModel1,
|
||||
MembershipPerson,
|
||||
MembershipCommittee,
|
||||
CalendarEventAddressModel,
|
||||
Payments,
|
||||
SCHAOfficer,
|
||||
)
|
||||
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',)
|
||||
readonly_fields = ("id",)
|
||||
|
||||
|
||||
class MembershipPersonInline(admin.TabularInline):
|
||||
model = MembershipPerson
|
||||
extra = 1
|
||||
readonly_fields = ('id',)
|
||||
readonly_fields = ("id",)
|
||||
|
||||
|
||||
class MembershipCommiteeInline(admin.TabularInline):
|
||||
model = MembershipCommittee
|
||||
extra = 1
|
||||
readonly_fields = ('id',)
|
||||
readonly_fields = ("id",)
|
||||
|
||||
|
||||
class MembershipServicesInline(admin.TabularInline):
|
||||
model = MembershipServices
|
||||
extra = 1
|
||||
readonly_fields = ('id',)
|
||||
readonly_fields = ("id",)
|
||||
|
||||
|
||||
def download_csv_by_members(modelAdmin, request, queryset):
|
||||
import csv
|
||||
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'
|
||||
])
|
||||
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)]
|
||||
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
|
||||
])
|
||||
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)
|
||||
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"])
|
||||
|
||||
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 "",
|
||||
])
|
||||
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)
|
||||
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]
|
||||
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',)
|
||||
readonly_fields = ("id",)
|
||||
|
||||
|
||||
class CalendarEventAdmin(admin.ModelAdmin):
|
||||
inlines = [CalendarEventAddressInline]
|
||||
list_display = ["event_name", "start_date", "end_date", "coordinator_email", "event_link_name"]
|
||||
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 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'
|
||||
])
|
||||
writer.writerow(
|
||||
["email", "date", "status", "first_name", "last_name", "phone_number"]
|
||||
)
|
||||
for q in queryset:
|
||||
first_name=""
|
||||
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,
|
||||
])
|
||||
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)
|
||||
response["Content-Disposition"] = "attachment; filename={}".format(filename)
|
||||
return response
|
||||
|
||||
|
||||
class PaymentsAdmin(admin.ModelAdmin):
|
||||
list_display = ["date", "status", "email"]
|
||||
search_fields = ['email']
|
||||
actions=[download_payments]
|
||||
search_fields = ["email"]
|
||||
actions = [download_payments]
|
||||
form = PaymentImport
|
||||
|
||||
class SCHAOfficerAdmin(admin.ModelAdmin):
|
||||
list_display = ["position", "name", "email"]
|
||||
|
||||
admin.site.register(UsefulLinks, UsefulLinksAdmin)
|
||||
admin.site.register(Membership, MembershipAdmin)
|
||||
admin.site.register(CalendarEvent, CalendarEventAdmin)
|
||||
admin.site.register(AddressModel1, AddressModelAdmin)
|
||||
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)
|
||||
admin.site.register(MembershipCommittee, MembershipCommitteeAdmin)
|
||||
admin.site.register(MembershipServices, MembershipServicesAdmin)
|
||||
admin.site.register(CalendarEventAddressModel, CalendarEventAddressModelAdmin)
|
||||
admin.site.register(Payments, PaymentsAdmin)
|
||||
admin.site.register(SCHAOfficer, SCHAOfficerAdmin)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user