Exemplo n.º 1
0
    def get_contact_fields(self, obj):
        if not obj.is_active:
            return {}

        fields = {}
        for contact_field in self.context['contact_fields']:
            value = obj.get_field(contact_field.key)
            fields[contact_field.key] = Contact.serialize_field_value(contact_field, value)
        return fields
Exemplo n.º 2
0
    def get_contact_fields(self, obj):
        if not obj.is_active:
            return {}

        fields = {}
        for contact_field in self.context['contact_fields']:
            value = obj.get_field(contact_field.key)
            fields[contact_field.key] = Contact.serialize_field_value(contact_field, value)
        return fields
Exemplo n.º 3
0
def serialize_contact(contact):
    from temba.contacts.models import Contact
    from temba.msgs.models import Msg
    from temba.values.models import Value

    org_fields = {
        f.id: f
        for f in contact.org.contactfields.filter(is_active=True)
    }
    values = Value.objects.filter(contact=contact,
                                  contact_field_id__in=org_fields.keys())
    field_values = {}
    for v in values:
        field = org_fields[v.contact_field_id]
        field_values[field.key] = {
            'value': Contact.serialize_field_value(field, v),
            'created_on': v.created_on.isoformat()
        }

    _contact, contact_urn = Msg.resolve_recipient(contact.org, None, contact,
                                                  None)

    serialized = {
        'uuid': contact.uuid,
        'name': contact.name,
        'urns': [urn.urn for urn in contact.urns.all()],
        'group_uuids': [group.uuid for group in contact.user_groups.all()],
        'timezone': "UTC",
        'language': contact.language,
        'fields': field_values
    }

    # only populate channel if this contact can actually be reached (ie, has a URN)
    if contact_urn:
        channel = contact.org.get_send_channel(contact_urn=contact_urn)
        if channel:
            serialized['channel_uuid'] = channel.uuid

    return serialized