class AreaCoordinatorListSerializer(serializers.Serializer): type_of = serializers.IntegerField( source="user.member.type_of", read_only=True, ) organization_name = serializers.CharField( allow_blank=False, validators=[], source="user.member.contact.organization_name", read_only=True, ) organization_type_of = serializers.IntegerField( read_only=True, allow_null=True, source="user.member.contact.organization_type_of", ) first_name = serializers.CharField( read_only=True, allow_blank=False, validators=[], source="user.member.contact.first_name", ) last_name = serializers.CharField( read_only=True, allow_blank=False, validators=[], source="user.member.contact.last_name", ) primary_phone_e164 = E164PhoneNumberField( allow_null=False, read_only=True, source="user.member.contact.primary_phone", ) primary_phone_national = NationalPhoneNumberField( allow_null=False, read_only=True, source="user.member.contact.primary_phone", ) email = serializers.EmailField( read_only=True, allow_blank=False, validators=[], source="user.member.contact.email", ) slug = serializers.SlugField( read_only=True, allow_blank=False, validators=[], source="user.slug", ) street_address = serializers.CharField( read_only=True, allow_blank=False, validators=[], source="user.member.address.street_address", ) country = serializers.CharField( read_only=True, allow_blank=False, validators=[], source="user.member.address.country", ) province = serializers.CharField( read_only=True, allow_blank=False, validators=[], source="user.member.address.province", ) city = serializers.CharField( read_only=True, allow_blank=False, validators=[], source="user.member.address.city", ) postal_code = serializers.CharField( read_only=True, allow_blank=False, validators=[], source="user.member.address.postal_code", ) state = serializers.CharField( read_only=True, source="user.member.state", ) position = serializers.SerializerMethodField() def setup_eager_loading(cls, queryset): """ Perform necessary eager loading of data. """ queryset = queryset.prefetch_related('user', 'user__groups', 'user__member__contact', 'user__member__address', 'user__member__metric', 'created_by', 'last_modified_by') return queryset def get_position(self, obj): return get_arr_from_point(obj.user.member.address.position)
class AreaCoordinatorRetrieveSerializer(serializers.Serializer): # ------ MEMBER ------ # slug = serializers.SlugField( source="user.slug", read_only=True, ) type_of = serializers.IntegerField( source="user.member.type_of", read_only=True, ) type_of_label = serializers.CharField( source="user.member.get_pretty_type_of", read_only=True, allow_null=True, ) avatar_url = serializers.SerializerMethodField() state = serializers.CharField( source="user.member.state", read_only=True, ) # ------ MEMBER CONTACT ------ # is_ok_to_email = serializers.IntegerField( source="user.member.contact.is_ok_to_email", read_only=True, ) is_ok_to_text = serializers.IntegerField( source="user.member.contact.is_ok_to_text", read_only=True, ) organization_name = serializers.CharField( source="user.member.contact.organization_name", read_only=True, allow_null=True, ) organization_type_of = serializers.IntegerField( source="user.member.contact.organization_type_of", read_only=True, ) first_name = serializers.CharField( source="user.member.contact.first_name", read_only=True, allow_null=True, ) last_name = serializers.CharField( source="user.member.contact.last_name", read_only=True, allow_null=True, ) full_name = serializers.SerializerMethodField() email = serializers.EmailField( source="user.member.contact.email", read_only=True, ) primary_phone_e164 = E164PhoneNumberField( source="user.member.contact.primary_phone", read_only=True, ) primary_phone_national = NationalPhoneNumberField( source="user.member.contact.primary_phone", read_only=True, ) secondary_phone_e164 = E164PhoneNumberField( source="user.member.contact.secondary_phone", read_only=True, ) secondary_phone_national = NationalPhoneNumberField( source="user.member.contact.secondary_phone", read_only=True, ) # ------ MEMBER ADDRESS ------ # country = serializers.CharField( source="user.member.address.country", read_only=True, ) province = serializers.CharField( source="user.member.address.province", read_only=True, ) city = serializers.CharField( source="user.member.address.city", read_only=True, ) street_number = serializers.CharField( source="user.member.address.street_number", read_only=True, ) street_name = serializers.CharField( source="user.member.address.street_name", read_only=True, ) apartment_unit = serializers.CharField( source="user.member.address.apartment_unit", read_only=True, ) street_type = serializers.IntegerField( source="user.member.address.street_type", read_only=True, ) street_type_other = serializers.CharField( source="user.member.address.street_type_other", read_only=True, ) street_direction = serializers.IntegerField( source="user.member.address.street_direction", read_only=True, ) postal_code = serializers.CharField( source="user.member.address.postal_code", read_only=True, ) address = serializers.CharField( source="user.member.address.street_address", read_only=True, ) google_maps_url = serializers.URLField( source="user.member.address.google_maps_url", read_only=True, ) position = serializers.SerializerMethodField() # ------ MEMBER WATCH ------ # #TODO: IMPLEMENT FIELDS. # ------ MEMBER METRICS ------ # tags = TagListCreateSerializer( source="user.member.metric.tags", many=True, read_only=True, ) how_did_you_hear = serializers.PrimaryKeyRelatedField( source="user.member.metric.how_did_you_hear", many=False, read_only=True, allow_null=False, ) how_did_you_hear_other = serializers.CharField( source="user.member.metric.how_did_you_hear_other", allow_null=True, allow_blank=True, read_only=True, ) how_did_you_hear_label = serializers.CharField( source="user.member.metric.how_did_you_hear.text", read_only=True, allow_null=True, ) expectation = serializers.PrimaryKeyRelatedField( source="user.member.metric.expectation", many=False, read_only=True, allow_null=False, ) expectation_other = serializers.CharField( source="user.member.metric.expectation_other", allow_null=True, allow_blank=True, read_only=True, ) expectation_label = serializers.CharField( source="user.member.metric.expectation.text", read_only=True, allow_null=True, ) meaning = serializers.PrimaryKeyRelatedField( source="user.member.metric.meaning", many=False, read_only=True, allow_null=False, ) meaning_other = serializers.CharField( source="user.member.metric.meaning_other", allow_null=True, allow_blank=True, read_only=True, ) meaning_label = serializers.CharField( source="user.member.metric.meaning.text", read_only=True, allow_null=True, ) gender = serializers.IntegerField( source="user.member.metric.gender", read_only=True, ) gender_label = serializers.CharField( source="user.member.metric.get_pretty_gender", read_only=True, allow_null=True, ) willing_to_volunteer = serializers.IntegerField( source="user.member.metric.willing_to_volunteer", read_only=True, ) willing_to_volunteer_label = serializers.CharField( source="user.member.metric.get_pretty_willing_to_volunteer", read_only=True, allow_null=True, ) another_household_member_registered = serializers.BooleanField( source="user.member.metric.another_household_member_registered", read_only=True, ) year_of_birth = serializers.IntegerField( source="user.member.metric.year_of_birth", read_only=True, ) total_household_count = serializers.IntegerField( source="user.member.metric.total_household_count", read_only=True, ) over_18_years_household_count = serializers.IntegerField( source="user.member.metric.over_18_years_household_count", read_only=True, ) organization_employee_count = serializers.IntegerField( source="user.member.metric.organization_employee_count", read_only=True, ) organization_founding_year = serializers.IntegerField( source="user.member.metric.organization_founding_year", read_only=True, ) # ------ AUDITING ------ # created_by = serializers.CharField( source="created_by.get_full_name", allow_null=True, read_only=True, ) last_modified_by = serializers.CharField( source="last_modified_by.get_full_name", allow_null=True, read_only=True, ) # ------ FUNCTIONS ------ # def get_full_name(self, obj): try: return obj.user.member.contact.first_name + " " + obj.user.member.contact.last_name except Exception as e: print(e) return None def get_avatar_url(self, obj): try: return obj.user.member.avatar_image.image_file.url except Exception as e: return None def get_position(self, obj): return get_arr_from_point(obj.user.member.address.position)
class MemberListSerializer(serializers.Serializer): type_of = serializers.IntegerField() organization_name = serializers.CharField( required=True, allow_blank=False, validators=[], source="contact.organization_name", ) organization_type_of = serializers.IntegerField( required=False, allow_null=True, source="contact.organization_type_of", ) first_name = serializers.CharField( required=True, allow_blank=False, validators=[], source="contact.first_name", ) last_name = serializers.CharField( required=True, allow_blank=False, validators=[], source="contact.last_name", ) primary_phone_e164 = E164PhoneNumberField( allow_null=False, required=True, source="contact.primary_phone", ) primary_phone_national = NationalPhoneNumberField( allow_null=False, required=True, source="contact.primary_phone", ) email = serializers.EmailField( required=True, allow_blank=False, validators=[], source="contact.email", ) slug = serializers.SlugField( required=True, allow_blank=False, validators=[], source="user.slug", ) street_address = serializers.CharField( required=True, allow_blank=False, validators=[], source="address.street_address", ) country = serializers.CharField( required=True, allow_blank=False, validators=[], source="address.country", ) province = serializers.CharField( required=True, allow_blank=False, validators=[], source="address.province", ) city = serializers.CharField( required=True, allow_blank=False, validators=[], source="address.city", ) postal_code = serializers.CharField( required=True, allow_blank=False, validators=[], source="address.postal_code", ) state = serializers.CharField(read_only=True, ) role_id = serializers.IntegerField(read_only=True, source="user.role_id") def setup_eager_loading(cls, queryset): """ Perform necessary eager loading of data. """ queryset = queryset.prefetch_related('user', 'user__groups', 'contact', 'address', 'metric', 'created_by', 'last_modified_by') return queryset
class MemberRetrieveSerializer(serializers.Serializer): # ------ MEMBER ------ # slug = serializers.SlugField(source="user.slug", read_only=True,) type_of = serializers.IntegerField(read_only=True,) type_of_label = serializers.CharField(source="get_pretty_type_of", read_only=True,) avatar_url = serializers.SerializerMethodField() state = serializers.CharField(read_only=True,) role_id = serializers.IntegerField(source="user.role_id", read_only=True,) role_label = serializers.CharField(source="get_role_label", read_only=True,) # ------ MEMBER CONTACT ------ # is_ok_to_email = serializers.IntegerField(source="contact.is_ok_to_email", read_only=True,) is_ok_to_text = serializers.IntegerField(source="contact.is_ok_to_text", read_only=True,) organization_name = serializers.CharField(source="contact.organization_name", read_only=True,) organization_type_of = serializers.IntegerField(source="contact.organization_type_of", read_only=True,) first_name = serializers.CharField(source="contact.first_name", read_only=True,) last_name = serializers.CharField(source="contact.last_name", read_only=True,) full_name = serializers.SerializerMethodField() email = serializers.EmailField(source="contact.email", read_only=True,) primary_phone_e164 = E164PhoneNumberField(source="contact.primary_phone", read_only=True,) primary_phone_national = NationalPhoneNumberField(source="contact.primary_phone", read_only=True,) secondary_phone_e164 = E164PhoneNumberField(source="contact.secondary_phone", read_only=True,) secondary_phone_national = NationalPhoneNumberField(source="contact.secondary_phone", read_only=True,) # ------ MEMBER ADDRESS ------ # country = serializers.CharField(source="address.country", read_only=True,) province = serializers.CharField(source="address.province", read_only=True,) city = serializers.CharField(source="address.city", read_only=True,) street_number = serializers.CharField(source="address.street_number", read_only=True,) street_name =serializers.CharField(source="address.street_name", read_only=True,) apartment_unit = serializers.CharField(source="address.apartment_unit", read_only=True,) street_type = serializers.IntegerField(source="address.street_type", read_only=True,) street_type_other = serializers.CharField(source="address.street_type_other", read_only=True,) street_direction = serializers.IntegerField(source="address.street_direction", read_only=True,) postal_code = serializers.CharField(source="address.postal_code", read_only=True,) address = serializers.CharField(source="address.street_address", read_only=True,) google_maps_url = serializers.URLField(source="address.google_maps_url", read_only=True,) position = serializers.SerializerMethodField() # ------ MEMBER WATCH ------ # watch_name = serializers.CharField(source="watch.name", read_only=True,) watch_slug = serializers.SlugField(source="watch.slug", read_only=True,) watch_type_of = serializers.IntegerField(source="watch.type_of", read_only=True,) watch_is_virtual = serializers.BooleanField(source="watch.is_virtual", read_only=True,) # ------ MEMBER METRICS ------ # tags = TagListCreateSerializer(source="metric.tags", many=True, read_only=True,) how_did_you_hear = serializers.PrimaryKeyRelatedField( source="metric.how_did_you_hear", many=False, required=True, allow_null=False, queryset=HowHearAboutUsItem.objects.all() ) how_did_you_hear_other = serializers.CharField( source="metric.how_did_you_hear_other", required=False, allow_null=True, allow_blank=True,) how_did_you_hear_label = serializers.CharField( source="metric.how_did_you_hear.text", allow_null=True, read_only=True,) expectation = serializers.PrimaryKeyRelatedField( source="metric.expectation", many=False, required=True, allow_null=False, queryset=ExpectationItem.objects.all() ) expectation_other = serializers.CharField( source="metric.expectation_other", required=False, allow_null=True, allow_blank=True,) expectation_label = serializers.CharField( source="metric.expectation.text", allow_null=True, read_only=True,) meaning = serializers.PrimaryKeyRelatedField( source="metric.meaning", many=False, required=True, allow_null=False, queryset=MeaningItem.objects.all() ) meaning_other = serializers.CharField(source="metric.meaning_other", allow_null=True, allow_blank=True, read_only=True,) meaning_label = serializers.CharField(source="metric.meaning.text", allow_null=True, read_only=True,) gender = serializers.IntegerField(source="metric.gender", read_only=True,) gender_label = serializers.CharField(source="metric.get_pretty_gender", read_only=True,) willing_to_volunteer = serializers.IntegerField(source="metric.willing_to_volunteer", read_only=True,) willing_to_volunteer_label = serializers.CharField(source="metric.get_pretty_willing_to_volunteer", read_only=True,) another_household_member_registered = serializers.BooleanField(source="metric.another_household_member_registered", read_only=True,) year_of_birth = serializers.IntegerField(source="metric.year_of_birth", read_only=True,) total_household_count = serializers.IntegerField(source="metric.total_household_count", read_only=True,) over_18_years_household_count = serializers.IntegerField(source="metric.over_18_years_household_count", read_only=True,) organization_employee_count = serializers.IntegerField(source="metric.organization_employee_count", read_only=True,) organization_founding_year = serializers.IntegerField(source="metric.organization_founding_year", read_only=True,) is_aboriginal = serializers.BooleanField(allow_null=True, read_only=True, source="metric.is_aboriginal",) is_transgender = serializers.BooleanField(allow_null=True, read_only=True, source="metric.is_transgender",) is_visible_minority = serializers.BooleanField(allow_null=True, read_only=True, source="metric.is_visible_minority",) is_disabled_or_has_barriers = serializers.BooleanField(allow_null=True, read_only=True, source="metric.is_disabled_or_has_barriers",) is_over_fifty_five = serializers.BooleanField(allow_null=True, read_only=True, source="metric.is_over_fifty_five",) # ------ AUDITING ------ # created_by = serializers.CharField(source="created_by.get_full_name", allow_null=True, read_only=True,) last_modified_by = serializers.CharField(source="last_modified_by.get_full_name", allow_null=True, read_only=True,) # ------ OPERATIONS ------ # badges = BadgeRetrieveSerializer(source="user.badges", read_only=True, many=True,) # ------ FUNCTIONS ------ # def get_full_name(self, obj): try: return obj.contact.first_name + " " + obj.contact.last_name except Exception as e: print(e) return None def get_avatar_url(self, obj): try: return obj.avatar_image.image_file.url except Exception as e: return None def get_position(self, obj): return get_arr_from_point(obj.address.position)