Add complete Member, Flag, and MemberFlag models
This commit is contained in:
parent
9997c129ff
commit
d50cec383e
@ -1,15 +1,29 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import Member
|
from .models import Member, Flag
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Member)
|
class ReadOnlyAdmin(admin.ModelAdmin):
|
||||||
class MemberAdmin(admin.ModelAdmin):
|
|
||||||
readonly_fields = [field.name for field in Member._meta.get_fields() if field.concrete]
|
|
||||||
search_fields = ['account_name']
|
|
||||||
|
|
||||||
def has_add_permission(self, request, obj=None):
|
def has_add_permission(self, request, obj=None):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def has_change_permission(self, request, obj=None):
|
||||||
|
return False
|
||||||
|
|
||||||
def has_delete_permission(self, request, obj=None):
|
def has_delete_permission(self, request, obj=None):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
class MemberFlagInline(admin.TabularInline):
|
||||||
|
model = Member.flags.through
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(Member)
|
||||||
|
class MemberAdmin(ReadOnlyAdmin):
|
||||||
|
search_fields = ['account_name']
|
||||||
|
inlines = [MemberFlagInline]
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(Flag)
|
||||||
|
class FlagAdmin(ReadOnlyAdmin):
|
||||||
|
inlines = [MemberFlagInline]
|
||||||
|
@ -1,13 +1,127 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Flag(models.Model):
|
||||||
|
id = models.CharField(max_length=24, primary_key=True)
|
||||||
|
name = models.TextField(null=True)
|
||||||
|
type = models.CharField(max_length=6)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f'{self.name} ({self.type})'
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
managed = False
|
||||||
|
db_table = 'flag'
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: is this still a temporal table?
|
||||||
class Member(models.Model):
|
class Member(models.Model):
|
||||||
# TODO: this is only a partial set of fields, may want to expand
|
uid = models.CharField(max_length=24, primary_key=True)
|
||||||
uid = models.CharField(primary_key=True, max_length=24)
|
year_of_birth = models.TextField(db_column="Year of Birth", null=True)
|
||||||
year_of_birth = models.TextField(db_column='Year of Birth', blank=True, null=True)
|
account_name = models.TextField(db_column="Account Name", null=True)
|
||||||
account_name = models.TextField(db_column='Account Name', blank=True, null=True)
|
first_name = models.TextField(db_column="First Name", null=True)
|
||||||
first_name = models.TextField(db_column='First Name', blank=True, null=True)
|
last_name = models.TextField(db_column="Last Name", null=True)
|
||||||
last_name = models.TextField(db_column='Last Name', blank=True, null=True)
|
phone = models.TextField(db_column="Phone", null=True)
|
||||||
|
email = models.TextField(db_column="Email", null=True)
|
||||||
|
address_street = models.TextField(db_column="Address (Street)", null=True)
|
||||||
|
address_city = models.TextField(db_column="Address (City)", null=True)
|
||||||
|
address_state_province = models.TextField(
|
||||||
|
db_column="Address (State/Province)", null=True
|
||||||
|
)
|
||||||
|
address_postal_code = models.TextField(db_column="Address (Postal Code)", null=True)
|
||||||
|
address_country = models.TextField(db_column="Address (Country)", null=True)
|
||||||
|
profile_description = models.TextField(db_column="Profile description", null=True)
|
||||||
|
website = models.TextField(db_column="Website", null=True)
|
||||||
|
fax = models.TextField(db_column="Fax", null=True)
|
||||||
|
contact_person = models.TextField(db_column="Contact Person", null=True)
|
||||||
|
password = models.TextField(db_column="Password", null=True)
|
||||||
|
position_relation = models.TextField(db_column="Position/relation", null=True)
|
||||||
|
parent_account_id = models.TextField(db_column="Parent Account ID", null=True)
|
||||||
|
gift_membership_purchased_by = models.TextField(
|
||||||
|
db_column="Gift Membership purchased by", null=True
|
||||||
|
)
|
||||||
|
purchased_gift_membership_for = models.TextField(
|
||||||
|
db_column="Purchased Gift Membership for", null=True
|
||||||
|
)
|
||||||
|
closet_storage = models.TextField(db_column="Closet Storage #", null=True)
|
||||||
|
storage_shelf = models.TextField(db_column="Storage Shelf #", null=True)
|
||||||
|
personal_studio_space = models.TextField(db_column="Personal Studio Space #", null=True)
|
||||||
|
access_permitted_shops_during_extended_hours = models.BooleanField(
|
||||||
|
db_column="Access Permitted Shops During Extended Hours?"
|
||||||
|
)
|
||||||
|
normal_access_permitted_during_covid19_limited_operations = models.BooleanField(
|
||||||
|
db_column="Normal Access Permitted During COVID-19 Limited Operations"
|
||||||
|
)
|
||||||
|
access_permitted_during_covid19_staffed_period_only = models.BooleanField(
|
||||||
|
db_column="Access Permitted During COVID-19 Staffed Period Only"
|
||||||
|
)
|
||||||
|
access_front_door_and_studio_space_during_extended_hours = models.BooleanField(
|
||||||
|
db_column="Access Front Door and Studio Space During Extended Hours?"
|
||||||
|
)
|
||||||
|
access_wood_shop = models.BooleanField(db_column="Access Wood Shop?")
|
||||||
|
access_metal_shop = models.BooleanField(db_column="Access Metal Shop?")
|
||||||
|
access_storage_closet = models.BooleanField(db_column="Access Storage Closet?")
|
||||||
|
access_studio_space = models.BooleanField(db_column="Access Studio Space?")
|
||||||
|
access_front_door = models.BooleanField(db_column="Access Front Door?")
|
||||||
|
access_card_number = models.TextField(db_column="Access Card Number", null=True)
|
||||||
|
access_card_facility_code = models.TextField(
|
||||||
|
db_column="Access Card Facility Code", null=True
|
||||||
|
)
|
||||||
|
auto_billing_id = models.TextField(db_column="Auto Billing ID", null=True)
|
||||||
|
billing_method = models.TextField(db_column="Billing Method", null=True)
|
||||||
|
renewal_date = models.DateField(db_column="Renewal Date", null=True)
|
||||||
|
join_date = models.DateField(db_column="Join Date", null=True)
|
||||||
|
admin_note = models.TextField(db_column="Admin note", null=True)
|
||||||
|
profile_gallery_image_url = models.TextField(
|
||||||
|
db_column="Profile gallery image URL", null=True
|
||||||
|
)
|
||||||
|
business_card_image_url = models.TextField(
|
||||||
|
db_column="Business card image URL", null=True
|
||||||
|
)
|
||||||
|
instagram = models.TextField(db_column="Instagram", null=True)
|
||||||
|
pinterest = models.TextField(db_column="Pinterest", null=True)
|
||||||
|
youtube = models.TextField(db_column="Youtube", null=True)
|
||||||
|
yelp = models.TextField(db_column="Yelp", null=True)
|
||||||
|
google = models.TextField(db_column="Google+", null=True)
|
||||||
|
bbb = models.TextField(db_column="BBB", null=True)
|
||||||
|
twitter = models.TextField(db_column="Twitter", null=True)
|
||||||
|
facebook = models.TextField(db_column="Facebook", null=True)
|
||||||
|
linked_in = models.TextField(db_column="LinkedIn", null=True)
|
||||||
|
do_not_show_street_address_in_profile = models.TextField(
|
||||||
|
db_column="Do not show street address in profile", null=True
|
||||||
|
)
|
||||||
|
do_not_list_in_directory = models.TextField(
|
||||||
|
db_column="Do not list in directory", null=True
|
||||||
|
)
|
||||||
|
how_did_you_hear = models.TextField(db_column="HowDidYouHear", null=True)
|
||||||
|
authorize_charge = models.TextField(db_column="authorizeCharge", null=True)
|
||||||
|
policy_agreement = models.TextField(db_column="policyAgreement", null=True)
|
||||||
|
waiver_form_signed_and_on_file_date = models.DateField(
|
||||||
|
db_column="Waiver form signed and on file date.", null=True
|
||||||
|
)
|
||||||
|
membership_agreement_signed_and_on_file_date = models.DateField(
|
||||||
|
db_column="Membership Agreement signed and on file date.", null=True
|
||||||
|
)
|
||||||
|
ip_address = models.TextField(db_column="IP Address", null=True)
|
||||||
|
audit_date = models.DateField(db_column="Audit Date", null=True)
|
||||||
|
agreement_version = models.TextField(db_column="Agreement Version", null=True)
|
||||||
|
paperwork_status = models.TextField(db_column="Paperwork status", null=True)
|
||||||
|
membership_agreement_dated = models.BooleanField(db_column="Membership agreement dated")
|
||||||
|
membership_agreement_acknowledgement_page_filled_out = models.BooleanField(
|
||||||
|
db_column="Membership Agreement Acknowledgement Page Filled Out"
|
||||||
|
)
|
||||||
|
membership_agreement_signed = models.BooleanField(
|
||||||
|
db_column="Membership Agreement Signed"
|
||||||
|
)
|
||||||
|
liability_form_filled_out = models.BooleanField(db_column="Liability Form Filled Out")
|
||||||
|
self_certify_essential_business = models.BooleanField(
|
||||||
|
db_column="selfCertifyEssentialBusiness"
|
||||||
|
)
|
||||||
|
accepted_covid19_policy = models.BooleanField(db_column="Accepted COVID-19 Policy")
|
||||||
|
flags = models.ManyToManyField(Flag, through='MemberFlag', related_name='members')
|
||||||
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.account_name}"
|
return f"{self.account_name}"
|
||||||
@ -16,3 +130,19 @@ class Member(models.Model):
|
|||||||
managed = False
|
managed = False
|
||||||
db_table = 'members'
|
db_table = 'members'
|
||||||
ordering = ('first_name', 'last_name')
|
ordering = ('first_name', 'last_name')
|
||||||
|
|
||||||
|
|
||||||
|
class MemberFlag(models.Model):
|
||||||
|
member = models.ForeignKey(Member, on_delete=models.PROTECT, db_column="uid")
|
||||||
|
flag = models.ForeignKey(Flag, on_delete=models.PROTECT)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f'{self.member} - {self.flag}'
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
managed = False
|
||||||
|
db_table = 'memberflag'
|
||||||
|
constraints = [
|
||||||
|
models.UniqueConstraint(fields=['member', 'flag_id'], name='unique_member_flag')
|
||||||
|
]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user