Commit 7ce94186 authored by Xiaowu Zhang's avatar Xiaowu Zhang

erp5_corporate_identity: make code more readable

parent 246d3c85
...@@ -8,9 +8,6 @@ Create a destination dict for filling templates ...@@ -8,9 +8,6 @@ Create a destination dict for filling templates
# destination: Can be set if called from Event # destination: Can be set if called from Event
# override_destination_person_title: Title of person to use # override_destination_person_title: Title of person to use
# override_destination_organisation_title: Title of organisation to use # override_destination_organisation_title: Title of organisation to use
blank = ''
# ---------------------------- Set Destination -------------------------------- # ---------------------------- Set Destination --------------------------------
# destination => Web Page = follow-up Organisation or Person, Event # destination => Web Page = follow-up Organisation or Person, Event
if destination is None: if destination is None:
...@@ -21,21 +18,24 @@ if destination is None: ...@@ -21,21 +18,24 @@ if destination is None:
destination_uid = None destination_uid = None
# destination person # destination person
if override_destination_person_title is not None or override_destination_person_title == blank: if override_destination_person_title:
destination_person_list = context.Base_getTemplateProxyParameter(parameter="override_person", source_data=override_destination_person_title) destination_person_list = context.Base_getTemplateProxyParameter(parameter="override_person", source_data=override_destination_person_title)
if len(destination_person_list) == 0: if not destination_person_list:
# follow up
destination_person_list = context.Base_getTemplateProxyParameter(parameter="person", source_data=None) destination_person_list = context.Base_getTemplateProxyParameter(parameter="person", source_data=None)
if len(destination_person_list) > 0: if destination_person_list:
destination_person = destination_person_list[0] destination_person = destination_person_list[0]
# destination organisation # destination organisation
if override_destination_organisation_title is not None or override_destination_organisation_title == blank: if override_destination_organisation_title:
destination_organisation_list = context.Base_getTemplateProxyParameter(parameter="override_organisation", source_data=override_destination_organisation_title) destination_organisation_list = context.Base_getTemplateProxyParameter(parameter="override_organisation", source_data=override_destination_organisation_title)
if len(destination_organisation_list) == 0: if not destination_organisation_list:
#follow up value
destination_organisation_list = context.Base_getTemplateProxyParameter(parameter="organisation", source_data=None) destination_organisation_list = context.Base_getTemplateProxyParameter(parameter="organisation", source_data=None)
if len(destination_organisation_list) == 0 and destination_person is not None: if not destination_organisation_list and destination_person:
# person 's Career Subordination or itself if no career subordination
destination_organisation_list = context.Base_getTemplateProxyParameter(parameter="source", source_data=destination_person.get("uid")) or [] destination_organisation_list = context.Base_getTemplateProxyParameter(parameter="source", source_data=destination_person.get("uid")) or []
if len(destination_organisation_list) > 0: if destination_organisation_list:
destination_organisation = destination_organisation_list[0] destination_organisation = destination_organisation_list[0]
destination = {} destination = {}
......
...@@ -15,7 +15,6 @@ blank = '' ...@@ -15,7 +15,6 @@ blank = ''
from Products.PythonScripts.standard import html_quote from Products.PythonScripts.standard import html_quote
# ------------------------------- Set Source ---------------------------------- # ------------------------------- Set Source ----------------------------------
source_logo_url = None
source_organisation = None source_organisation = None
pref = context.getPortalObject().portal_preferences pref = context.getPortalObject().portal_preferences
default_bank_account_relative_url=pref.getPreferredCorporateIdentityTemplateDefaultBankAccountRelativeUrl() default_bank_account_relative_url=pref.getPreferredCorporateIdentityTemplateDefaultBankAccountRelativeUrl()
...@@ -27,38 +26,42 @@ if source is None: ...@@ -27,38 +26,42 @@ if source is None:
source_person_list = [] source_person_list = []
source_organisation_list = [] source_organisation_list = []
# source person => override => contributor => source_decision # override => author(contributor) => source_decision
if override_source_person_title is not None or override_source_person_title == blank: if override_source_person_title:
source_person_list = context.Base_getTemplateProxyParameter(parameter="override_person", source_data=override_source_person_title) source_person_list = context.Base_getTemplateProxyParameter(parameter="override_person", source_data=override_source_person_title)
if len(source_person_list) == 0: if not source_person_list:
source_person_list = context.Base_getTemplateProxyParameter(parameter="author", source_data=None) or [] source_person_list = context.Base_getTemplateProxyParameter(parameter="author", source_data=None) or []
if len(source_person_list) == 0 and getattr(context, 'getSourceDecisionValue', None) is not None: if not source_person_list and getattr(context, 'getSourceDecisionValue', None):
source_person_candidate = context.getSourceDecisionValue() source_person_candidate = context.getSourceDecisionValue()
if source_person_candidate and source_person_candidate.getPortalType() == "Person": if source_person_candidate.getPortalType() == "Person":
source_person_list = [source_person_candidate] source_person_list = [source_person_candidate]
if len(source_person_list) > 0: if source_person_list:
source_person = source_person_list[0] source_person = source_person_list[0]
contributor_title_string = ', '.join(x.get("name", blank) for x in source_person_list) contributor_title_string = ', '.join(x.get("name", blank) for x in source_person_list)
# source organisation # source organisation
# order: override => follow-up => default_organisation_uid => default_company_relative_url => source_person career subordinate => source decision # order: override => follow-up => default_organisation_uid => default_company_relative_url => source_person career subordinate => source decision
if override_source_organisation_title is not None or override_source_organisation_title == blank: # override
if override_source_organisation_title:
source_organisation_list = context.Base_getTemplateProxyParameter(parameter="override_organisation", source_data=override_source_organisation_title) source_organisation_list = context.Base_getTemplateProxyParameter(parameter="override_organisation", source_data=override_source_organisation_title)
if len(source_organisation_list) == 0: if not source_organisation_list:
# follow up
source_organisation_list = context.Base_getTemplateProxyParameter(parameter="organisation", source_data=None) or [] source_organisation_list = context.Base_getTemplateProxyParameter(parameter="organisation", source_data=None) or []
if len(source_organisation_list) == 0 and default_company_relative_url: if not source_organisation_list and default_company_relative_url:
# default company
source_organisation_list = context.Base_getTemplateProxyParameter(parameter="override_organisation_relative_url", source_data=default_company_relative_url) or [] source_organisation_list = context.Base_getTemplateProxyParameter(parameter="override_organisation_relative_url", source_data=default_company_relative_url) or []
if len(source_organisation_list) == 0 and source_person is not None: if not source_organisation_list and source_person_list:
for organisation_candidate in source_person_list: for source_person in source_person_list:
organisation_candidate_list = context.Base_getTemplateProxyParameter(parameter="source", source_data=organisation_candidate.get("uid")) or [] # person 's Career Subordination Value
if len(organisation_candidate_list) > 0: organisation_candidate_list = context.Base_getTemplateProxyParameter(parameter="source", source_data=source_person.get("uid")) or []
if organisation_candidate_list:
source_organisation_list = organisation_candidate_list source_organisation_list = organisation_candidate_list
break break
if len(source_organisation_list) == 0 and getattr(context, 'getSourceDecisionValue', None) is not None: if not source_organisation_list and getattr(context, 'getSourceDecisionValue', None):
source_organisation_candidate = context.getSourceDecisionValue() source_organisation_candidate = context.getSourceDecisionValue()
if source_organisation_candidate and source_organisation_candidate.getPortalType() == "Organisation": if source_organisation_candidate.getPortalType() == "Organisation":
source_organisation_list = [source_organisation_candidate] source_organisation_list = [source_organisation_candidate]
if len(source_organisation_list) > 0: if source_organisation_list:
source_organisation = source_organisation_list[0] source_organisation = source_organisation_list[0]
source = {} source = {}
...@@ -74,7 +77,7 @@ else: ...@@ -74,7 +77,7 @@ else:
# override specific bank account (no default to pick correct one if multiple exist) # override specific bank account (no default to pick correct one if multiple exist)
if default_bank_account_relative_url is not None: if default_bank_account_relative_url is not None:
override_bank_account_list = context.Base_getTemplateProxyParameter(parameter="bank", source_data=default_bank_account_relative_url) or [] override_bank_account_list = context.Base_getTemplateProxyParameter(parameter="bank", source_data=default_bank_account_relative_url) or []
if len(override_bank_account_list) > 0: if override_bank_account_list:
override_bank_account = override_bank_account_list[0] override_bank_account = override_bank_account_list[0]
source["bank"] = override_bank_account.get("bank") source["bank"] = override_bank_account.get("bank")
source["bic"] = override_bank_account.get("bic") source["bic"] = override_bank_account.get("bic")
......
...@@ -42,29 +42,29 @@ def populateProductDictFromCategoryList(my_category_list): ...@@ -42,29 +42,29 @@ def populateProductDictFromCategoryList(my_category_list):
def populateProductDict(my_product_list): def populateProductDict(my_product_list):
result_list = [] result_list = []
for product in my_product_list: for product in my_product_list:
output_dict = {} result_list.append({
output_dict["title"] = product.getTitle() or err("product software") "title": product.getTitle() or err("product software")
result_list.append(output_dict) })
return result_list return result_list
def populateImageDict(my_image_list): def populateImageDict(my_image_list):
result_list = [] result_list = []
for image in my_image_list: for image in my_image_list:
output_dict = {} result_list.append({
output_dict["relative_url"] = image.getRelativeUrl() "relative_url": image.getRelativeUrl(),
output_dict["reference"] = image.getReference() or err("reference") "reference": image.getReference() or err("reference"),
output_dict["description"] = image.getDescription() or err("description") "description": image.getDescription() or err("description")
result_list.append(output_dict) })
return result_list return result_list
def populateBankDict(my_bank_list): def populateBankDict(my_bank_list):
result_list = [] result_list = []
for bank in my_bank_list: for bank in my_bank_list:
output_dict = {} result_list.append({
output_dict["bank"] = bank.getTitle() or err("bank account title") "bank": bank.getTitle() or err("bank account title"),
output_dict["iban"] = bank.getIban() or err("iban") "iban": bank.getIban() or err("iban"),
output_dict["bic"] = bank.getBicCode() or err("bic") "bic": bank.getBicCode() or err("bic")
result_list.append(output_dict) })
return result_list return result_list
def populatePersonDict(my_person_list): def populatePersonDict(my_person_list):
...@@ -80,7 +80,7 @@ def populatePersonDict(my_person_list): ...@@ -80,7 +80,7 @@ def populatePersonDict(my_person_list):
output_dict["name"] = person.getTitle() or err("title") output_dict["name"] = person.getTitle() or err("title")
output_dict["title"] = person.getFunctionTitle() or err("function title") output_dict["title"] = person.getFunctionTitle() or err("function title")
output_dict["uid"] = person.getUid() or err("uid") output_dict["uid"] = person.getUid() or err("uid")
if person.getDefaultAddress() is not None: if person_address:
output_dict["address"] = person_address.getStreetAddress() or err("street address") output_dict["address"] = person_address.getStreetAddress() or err("street address")
output_dict["postal_code"] = person_address.getZipCode() or err("postal code") output_dict["postal_code"] = person_address.getZipCode() or err("postal code")
output_dict["city"] = person_address.getCity() or err("city") output_dict["city"] = person_address.getCity() or err("city")
...@@ -88,17 +88,17 @@ def populatePersonDict(my_person_list): ...@@ -88,17 +88,17 @@ def populatePersonDict(my_person_list):
output_dict["address"] = err("street_adress") output_dict["address"] = err("street_adress")
output_dict["postal_code"] = err("postal_code") output_dict["postal_code"] = err("postal_code")
output_dict["city"] = err("city") output_dict["city"] = err("city")
if person_region is not None: if person_region:
output_dict["country"] = person_region.getTitle() or err("country") output_dict["country"] = person_region.getTitle() or err("country")
output_dict["codification"] = person_region.getCodification() or err("country code") output_dict["codification"] = person_region.getCodification() or err("country code")
else: else:
output_dict["country"] = err("country") output_dict["country"] = err("country")
output_dict["codification"] = err("country code") output_dict["codification"] = err("country code")
if person_default_telephone is not None: if person_default_telephone:
output_dict["phone"] = person_default_telephone.getCoordinateText() or err("phone") output_dict["phone"] = person_default_telephone.getCoordinateText() or err("phone")
else: else:
output_dict["phone"] = err("phone") output_dict["phone"] = err("phone")
if person_default_mail is not None: if person_default_mail:
output_dict["email"] = person_default_mail.getUrlString() or err("email") output_dict["email"] = person_default_mail.getUrlString() or err("email")
else: else:
output_dict["email"] = err("email") output_dict["email"] = err("email")
...@@ -125,7 +125,7 @@ def populateOrganisationDict(my_organisation_list): ...@@ -125,7 +125,7 @@ def populateOrganisationDict(my_organisation_list):
output_dict["activity_code"] = organisation.getActivityCode() or err("activitiy code") output_dict["activity_code"] = organisation.getActivityCode() or err("activitiy code")
#output_dict["logo_url"] = organisation.getDefaultImageAbsoluteUrl() or err("logo_url") #output_dict["logo_url"] = organisation.getDefaultImageAbsoluteUrl() or err("logo_url")
if organisation_default_image is not None: if organisation_default_image:
output_dict["logo_url"] = organisation_default_image.getRelativeUrl() output_dict["logo_url"] = organisation_default_image.getRelativeUrl()
output_dict["logo_data_url"] = 'data:image/png;;base64,%s' % ( output_dict["logo_data_url"] = 'data:image/png;;base64,%s' % (
b64encode(organisation_default_image.convert(format="png", display="thumbnail")[1]) b64encode(organisation_default_image.convert(format="png", display="thumbnail")[1])
...@@ -140,7 +140,7 @@ def populateOrganisationDict(my_organisation_list): ...@@ -140,7 +140,7 @@ def populateOrganisationDict(my_organisation_list):
output_dict["vat"] = organisation.getVatCode() or err("vat") output_dict["vat"] = organisation.getVatCode() or err("vat")
output_dict["corporate_registration"] = organisation.getCorporateRegistrationCode() or err("corporate_registration") output_dict["corporate_registration"] = organisation.getCorporateRegistrationCode() or err("corporate_registration")
output_dict["email"] = organisation.getDefaultEmailText() or err("email") output_dict["email"] = organisation.getDefaultEmailText() or err("email")
if organisation.getDefaultAddress() is not None: if organisation_address:
output_dict["address"] = organisation_address.getStreetAddress() or err("street address") output_dict["address"] = organisation_address.getStreetAddress() or err("street address")
output_dict["postal_code"] = organisation_address.getZipCode() or err("postal code") output_dict["postal_code"] = organisation_address.getZipCode() or err("postal code")
output_dict["city"] = organisation_address.getCity() or err("city") output_dict["city"] = organisation_address.getCity() or err("city")
...@@ -148,25 +148,26 @@ def populateOrganisationDict(my_organisation_list): ...@@ -148,25 +148,26 @@ def populateOrganisationDict(my_organisation_list):
output_dict["address"] = err("street address") output_dict["address"] = err("street address")
output_dict["postal_code"] = err("postal code") output_dict["postal_code"] = err("postal code")
output_dict["city"] = err("city") output_dict["city"] = err("city")
if organisation_region is not None: if organisation_region:
output_dict["country"] = organisation_region.getTitle() or err("country") output_dict["country"] = organisation_region.getTitle() or err("country")
output_dict["codification"] = organisation_region.getCodification() or err("country code") output_dict["codification"] = organisation_region.getCodification() or err("country code")
else: else:
output_dict["country"] = err("country") output_dict["country"] = err("country")
output_dict["codification"] = err("country code") output_dict["codification"] = err("country code")
if organisation_phone is not None: if organisation_phone:
output_dict["phone"] = organisation_phone.getCoordinateText() or err("phone") output_dict["phone"] = organisation_phone.getCoordinateText() or err("phone")
else: else:
output_dict["phone"] = err("phone") output_dict["phone"] = err("phone")
if organisation_fax is not None: if organisation_fax:
output_dict["fax"] = organisation_fax.getCoordinateText() or err("fax") output_dict["fax"] = organisation_fax.getCoordinateText() or err("fax")
else: else:
output_dict["fax"] = err("fax") output_dict["fax"] = err("fax")
if len(organisation_link_list) == 1: if len(organisation_link_list) == 1:
#XXXX only 1 ?
output_dict["website"] = organisation_link_list[0].getUrlString() or err("Website") output_dict["website"] = organisation_link_list[0].getUrlString() or err("Website")
else: else:
output_dict["website"] = err("web site") output_dict["website"] = err("web site")
if len(organisation_bank_list) > 0: if organisation_bank_list:
output_dict["bank"] = organisation_bank_list[0].getTitle() or err("bank account title") output_dict["bank"] = organisation_bank_list[0].getTitle() or err("bank account title")
output_dict["iban"] = organisation_bank_list[0].getIban() or err("iban") output_dict["iban"] = organisation_bank_list[0].getIban() or err("iban")
output_dict["bic"] = organisation_bank_list[0].getBicCode() or err("bic") output_dict["bic"] = organisation_bank_list[0].getBicCode() or err("bic")
...@@ -219,10 +220,12 @@ if pass_parameter is not None and pass_source_data is not None: ...@@ -219,10 +220,12 @@ if pass_parameter is not None and pass_source_data is not None:
# ---------------------- Override Person ------------------------------------- # ---------------------- Override Person -------------------------------------
# returns [{person_dict}] # returns [{person_dict}]
if pass_parameter == "override_person": if pass_parameter == "override_person":
return populatePersonDict(portal_object.portal_catalog( person_list = portal_object.portal_catalog(
portal_type="Person", portal_type="Person",
title=pass_source_data title=pass_source_data
)) )
person_list = [x for x in person_list if x.getTitle() == pass_source_data]
return populatePersonDict(person_list)
# -------------------------- Contributor ------------------------------------- # -------------------------- Contributor -------------------------------------
# returns [{person_dict}, {person_dict...}] # returns [{person_dict}, {person_dict...}]
...@@ -251,22 +254,19 @@ if pass_parameter is not None and pass_source_data is not None: ...@@ -251,22 +254,19 @@ if pass_parameter is not None and pass_source_data is not None:
# -------------- Source/Destination (Person => Organisation) ----------------- # -------------- Source/Destination (Person => Organisation) -----------------
# returns [{organisation_dict}] # returns [{organisation_dict}]
if pass_parameter == "source" or pass_parameter == "destination": if pass_parameter == "source" or pass_parameter == "destination":
person_candidate_list = portal_object.person_module.searchFolder(uid=pass_source_data) candidate = portal_object.portal_catalog.getResultValue(
organisation_candidate_list = portal_object.organisation_module.searchFolder(uid=pass_source_data) portal_type=('Person', 'Organisation'),
uid=pass_source_data)
if len(person_candidate_list) > 0: if candidate:
for c in person_candidate_list: if candidate.getPortalType() == 'Person':
organisation = c.getCareerSubordinationValue() organisation = candidate.getCareerSubordinationValue()
if organisation is not None: if organisation is not None:
return populateOrganisationDict([organisation]) return populateOrganisationDict([organisation])
else: else:
return populatePersonDict([c]) return populatePersonDict([candidate])
# events might pass organisation as sender/recipient
# events might pass organisation as sender/recipient return populateOrganisationDict([candidate])
if len(organisation_candidate_list) > 0:
organisation_candidate_list = portal_object.organisation_module.searchFolder(uid=pass_source_data)
for o in organisation_candidate_list:
return populateOrganisationDict([o])
return [] return []
......
...@@ -21,14 +21,11 @@ lookup_skin = blank ...@@ -21,14 +21,11 @@ lookup_skin = blank
if skin: if skin:
lookup_skin = "?portal_skin=" + skin lookup_skin = "?portal_skin=" + skin
theme_logo_list = []
theme_logo_dict = {} theme_logo_dict = {}
theme_reference = None
theme = ( theme = (
context.Base_getTemplateProxyParameter(parameter="theme", source_data=None) or context.Base_getTemplateProxyParameter(parameter="theme", source_data=None) or
pref.getPreferredCorporateIdentityTemplateDefaultTheme() pref.getPreferredCorporateIdentityTemplateDefaultTheme()
) )
if theme is not None: if theme is not None:
theme = theme.lower() theme = theme.lower()
theme_logo_prefix = pref.getPreferredCorporateIdentityTemplateDefaultLogoPrefix() theme_logo_prefix = pref.getPreferredCorporateIdentityTemplateDefaultLogoPrefix()
...@@ -37,24 +34,22 @@ if theme is not None: ...@@ -37,24 +34,22 @@ if theme is not None:
theme_logo_list = context.Base_getTemplateProxyParameter(parameter="logo", source_data=theme_reference) or [] theme_logo_list = context.Base_getTemplateProxyParameter(parameter="logo", source_data=theme_reference) or []
if len(theme_logo_list) > 0: if len(theme_logo_list) > 0:
theme_logo_dict = theme_logo_list[0] theme_logo_dict = theme_logo_list[0]
theme_dict = {} theme_dict = {
theme_logo_url = pref.getPreferredCorporateIdentityTemplateFallbackLogoRelativeUrl() + "?format=png" "theme":theme,
"theme_logo_description":theme_logo_dict.get("description", blank)
theme_dict["theme"] = theme }
theme_dict["theme_logo_description"] = theme_logo_dict.get("description", blank)
theme_dict["theme_logo_url"] = theme_logo_url
fallback_logo_url = pref.getPreferredCorporateIdentityTemplateFallbackLogoRelativeUrl() + "?format=png"
# if a theme logo is available, use it instead and add format=png (note, image # if a theme logo is available, use it instead and add format=png (note, image
# conversion doesn't seem to work with files loaded from skins folders) # conversion doesn't seem to work with files loaded from skins folders)
if theme_logo_dict.get("relative_url", None) is not None: if theme_logo_dict.get("relative_url", None):
theme_dict["theme_logo_url"] = theme_logo_dict.get("relative_url") + "?format=png" theme_dict["theme_logo_url"] = theme_logo_dict.get("relative_url") + "?format=png"
else:
theme_dict["theme_logo_url"] = fallback_logo_url
theme_dict["template_css_url"] = css_path + pdf theme_dict["template_css_url"] = css_path + pdf
theme_dict["fallback_img_url"] = theme_logo_url or blank theme_dict["fallback_img_url"] = fallback_logo_url or blank
theme_dict["theme_css_font_list"] = [] theme_dict["theme_css_font_list"] = [x + pdf for x in pref.getPreferredCorporateIdentityTemplateDefaultThemeFontList() or []]
theme_font_list = pref.getPreferredCorporateIdentityTemplateDefaultThemeFontList() or []
for font in theme_font_list:
theme_dict["theme_css_font_list"].append(font + pdf)
theme_css_url = pref.getPreferredCorporateIdentityTemplateThemeCssRelativeUrl() theme_css_url = pref.getPreferredCorporateIdentityTemplateThemeCssRelativeUrl()
if theme_css_url: if theme_css_url:
theme_dict["theme_css_url"] = theme_css_url + lookup_skin theme_dict["theme_css_url"] = theme_css_url + lookup_skin
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment