lawsoc-scraper/test/test_vobject_python3.py

237 lines
6.3 KiB
Python

#!/bin/python3
import vobject
import datetime
# import uuid
# the dict passed in (output_person_details-person_dict{},
# output_office_details-office_dict{}) should be of the form read from
# a valid vcf vcard by vobject.
def create_vcard(dict):
line = vobject.vCard()
line.add('n')
givenName = dict["name"].split(" ")[0]
familyName = dict["name"].split(" ")[-1]
familyName = "Harris"
givenName = "Jeffrey"
line.n.value = vobject.vcard.Name(family=familyName, given=givenName)
print(type(line))
line.add('fn')
# line.fn.value = dict["givenName"] + ' ' + dict["familyName"]
line.fn.value = dict["name"]
line.add('org')
line.org.value = dict['work_office']
# line.add('nickname')
# line.nickname.value = dict.nickname
# unlimited number of separate values, map to list with foreach areas of
# practice
if "Areas_of_Practice" in dict:
line.add('categories')
line.categories.type_param = "charset=utf"
for category in dict['Areas_of_Practice']:
line.categories.value = category # multiple line from list in dict, needs a loop FIXME
# six lines, but the last 4 are city, state, zip and country for thunderbird
# Reverse index for the last 5 lines, concatenate any remaining in first line.
if "address" in dict:
line.add('adr')
line.adr.type_param = "work"
print(dict["address"])
print(len(dict["address"]))
else:
print("Bust")
print(type(line))
line.prettyPrint()
# line.adr.value = ",".join(dict.address[0:len(dict.work_address)-5)]) # line one
# line.adr.value = dict.address[-5] # line two
# line.adr.value = dict.address[-4] # city
# line.adr.value = dict.address[-3] # state
# line.adr.value = dict.address[-2] # zip
# line.adr.value = dict.address[-1] # country
# six lines, but the last 4 are city, state, zip and country for thunderbird
# line.add('adr')
# line.type_param = "home"
# line.adr.value = dict. # line one
# line.adr.value = dict. # line two
# line.adr.value = dict. # city
# line.adr.value = dict. # state
# line.adr.value = dict. # zip
# line.adr.value = dict. # country
line.add('tel')
line.tel.type_param = "work"
line.tel.value = dict["tel"]
# line.add('tel')
# line.tel.type_param = "home"
# line.tel.value = dict["tel_home"]
# line.add('tel')
# line.tel.type_param = "cell"
# line.tel.value = dict["tel_cell"]
# line.add('tel')
# line.tel.type_param = "fax"
# line.tel.value = dict["tel_fax"]
# line.add('tel')
# line.tel.type_param = "pager"
# line.tel.value = dict["tel_pager"]
# line.add('x-mozilla-html')
# line.value = False
line.add('email')
line.email.type_param = "work"
line.email.value = dict["email"]
# line.add('email')
# line.email.type_param = "home"
# line.email.value = dict["email_home"]
line.add('url')
line.email.type_param = "work"
line.email.value = dict["url"]
# line.add('url')
# line.url.type_param = "home"
# line.url.value = dict["url_home"]
# line.add('title')
# line.title.value = dict["title"]
# Maybe reuse for date admitted or add an extra field
# line.add('bday')
# line.bday.value = '1970-01-01'
# line.bday.value = dict["bday"]
# custom value 1-4
# use for sra_id
line.add('custom1')
line.custom1.value = dict["sra_id"]
# use for dx_address
line.add('custom2')
line.custom2.value = dict["dx_address"]
# use for type
line.add('custom3')
line.custom3.value = dict["type"]
# line.add('custom4')
# line.custom4.value = dict[""]
# single value each separated with "\n"
line.add('note')
if 'areas_of_practice' in dict:
line.note.value = "\n".join(dict["areas_of_practice"].split(","))
else:
line.note.value = "\n".join(dict["facilities"].split(","))
line.add('geo')
if 'location' in dict:
line.geo.value = ";".join(dict["location"])
else:
pass
# line.add('x-aim')
# line.x-aim.value = dict.aim
# # generate uuid from lawsoc id number
# line.add('x-abuid')
# if 'person_id' in dict:
# line.x-abuid.value = uuid.uuid3(uuid.NAMESPACE_DNS, dict.person_id)
# else:
# line.x-abuid.value = uuid.uuid3(uuid.NAMESPACE_DNS, dict.solicitor_id)
#
line.add('rev')
# line.value = 2015-11-25T23:17:35+00:00 #use date function
now = datetime.datetime.now()
line.rev.value = now.isoformat()
# # morefunctionsforAB-TB3 fields
# # tab additional, 5 available slots
# line.add('email')
# line.email.type_param = "internet"
# line.email.value =
# line.email.value =
# line.email.value =
# line.email.value =
# line.email.value =
# # other data tab - aniversary, spouse, last modified, 8 extra categories
# line.add('x-anniversary')
# line.x-anniversay.value =
# line.add('x-spouse')
# line.x-spouse.value =
line.prettyPrint()
line.serialize()
person_dict = {
"accreditations": "[]",
"admitted_date": "2013/01/15",
"areas_of_practice": "['Private client - wills and probate']",
"dx_address": "",
"email": "penny.bull@rhodda.co.uk",
"languages": "['English']",
"name": "Victoria Malvina Methven",
"person_id": "54264",
"roles": "Employee",
"solicitor_id": "476467",
"sra_id": "430668",
"tel": "01255 433996",
"type": "SRA Regulated",
"work_office": "Mike Healy Solicitors",
"address": [
"Unit 3",
"The Croft",
"Stockbridge Village",
"Liverpool",
"Merseyside",
"L28 1NR",
"England"
],
"location": {
"lat": "53.43529",
"lon": "-2.867382"
},
"url": ""
}
office_dict = {
"address": [
"Unit 3",
"The Croft",
"Stockbridge Village",
"Liverpool",
"Merseyside",
"L28 1NR",
"England"
],
"dx_address": "",
"email": "mike@mikehealeysolicitors.com",
"facilities": "[]",
"location": {
"lat": "53.43529",
"lon": "-2.867382"
},
"name": "Mike Healey Solicitors",
"solicitor_id": "563684",
"sra_id": "615289",
"tel": "0151 480 2220",
"type": "Recognised sole practitioner law practice",
"web": ""
}
print(create_vcard(person_dict))