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
# destination: Can be set if called from Event
# override_destination_person_title: Title of person to use
# override_destination_organisation_title: Title of organisation to use
blank = ''
# ---------------------------- Set Destination --------------------------------
# destination => Web Page = follow-up Organisation or Person, Event
if destination is None:
......@@ -21,21 +18,24 @@ if destination is None:
destination_uid = None
# 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)
if len(destination_person_list) == 0:
if not destination_person_list:
# follow up
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 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)
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)
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 []
if len(destination_organisation_list) > 0:
if destination_organisation_list:
destination_organisation = destination_organisation_list[0]
destination = {}
......
......@@ -15,7 +15,6 @@ blank = ''
from Products.PythonScripts.standard import html_quote
# ------------------------------- Set Source ----------------------------------
source_logo_url = None
source_organisation = None
pref = context.getPortalObject().portal_preferences
default_bank_account_relative_url=pref.getPreferredCorporateIdentityTemplateDefaultBankAccountRelativeUrl()
......@@ -27,38 +26,42 @@ if source is None:
source_person_list = []
source_organisation_list = []
# source person => override => contributor => source_decision
if override_source_person_title is not None or override_source_person_title == blank:
# override => author(contributor) => source_decision
if 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 []
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()
if source_person_candidate and source_person_candidate.getPortalType() == "Person":
if source_person_candidate.getPortalType() == "Person":
Please register or sign in to reply
source_person_list = [source_person_candidate]
if len(source_person_list) > 0:
if source_person_list:
source_person = source_person_list[0]
contributor_title_string = ', '.join(x.get("name", blank) for x in source_person_list)
# source organisation
# 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)
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 []
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 []
if len(source_organisation_list) == 0 and source_person is not None:
for organisation_candidate in source_person_list:
organisation_candidate_list = context.Base_getTemplateProxyParameter(parameter="source", source_data=organisation_candidate.get("uid")) or []
if len(organisation_candidate_list) > 0:
if not source_organisation_list and source_person_list:
for source_person in source_person_list:
# person 's Career Subordination Value
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
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()
if source_organisation_candidate and source_organisation_candidate.getPortalType() == "Organisation":
if source_organisation_candidate.getPortalType() == "Organisation":
source_organisation_list = [source_organisation_candidate]
if len(source_organisation_list) > 0:
if source_organisation_list:
source_organisation = source_organisation_list[0]
source = {}
......@@ -74,7 +77,7 @@ else:
# override specific bank account (no default to pick correct one if multiple exist)
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 []
if len(override_bank_account_list) > 0:
if override_bank_account_list:
override_bank_account = override_bank_account_list[0]
source["bank"] = override_bank_account.get("bank")
source["bic"] = override_bank_account.get("bic")
......
......@@ -42,29 +42,29 @@ def populateProductDictFromCategoryList(my_category_list):
def populateProductDict(my_product_list):
result_list = []
for product in my_product_list:
output_dict = {}
output_dict["title"] = product.getTitle() or err("product software")
result_list.append(output_dict)
result_list.append({
"title": product.getTitle() or err("product software")
})
return result_list
def populateImageDict(my_image_list):
result_list = []
for image in my_image_list:
output_dict = {}
output_dict["relative_url"] = image.getRelativeUrl()
output_dict["reference"] = image.getReference() or err("reference")
output_dict["description"] = image.getDescription() or err("description")
result_list.append(output_dict)
result_list.append({
"relative_url": image.getRelativeUrl(),
"reference": image.getReference() or err("reference"),
"description": image.getDescription() or err("description")
})
return result_list
def populateBankDict(my_bank_list):
result_list = []
for bank in my_bank_list:
output_dict = {}
output_dict["bank"] = bank.getTitle() or err("bank account title")
output_dict["iban"] = bank.getIban() or err("iban")
output_dict["bic"] = bank.getBicCode() or err("bic")
result_list.append(output_dict)
result_list.append({
"bank": bank.getTitle() or err("bank account title"),
"iban": bank.getIban() or err("iban"),
"bic": bank.getBicCode() or err("bic")
})
return result_list
def populatePersonDict(my_person_list):
......@@ -80,7 +80,7 @@ def populatePersonDict(my_person_list):
output_dict["name"] = person.getTitle() or err("title")
output_dict["title"] = person.getFunctionTitle() or err("function title")
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["postal_code"] = person_address.getZipCode() or err("postal code")
output_dict["city"] = person_address.getCity() or err("city")
......@@ -88,17 +88,17 @@ def populatePersonDict(my_person_list):
output_dict["address"] = err("street_adress")
output_dict["postal_code"] = err("postal_code")
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["codification"] = person_region.getCodification() or err("country code")
else:
output_dict["country"] = err("country")
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")
else:
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")
else:
output_dict["email"] = err("email")
......@@ -125,7 +125,7 @@ def populateOrganisationDict(my_organisation_list):
output_dict["activity_code"] = organisation.getActivityCode() or err("activitiy code")
#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_data_url"] = 'data:image/png;;base64,%s' % (
b64encode(organisation_default_image.convert(format="png", display="thumbnail")[1])
......@@ -140,7 +140,7 @@ def populateOrganisationDict(my_organisation_list):
output_dict["vat"] = organisation.getVatCode() or err("vat")
output_dict["corporate_registration"] = organisation.getCorporateRegistrationCode() or err("corporate_registration")
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["postal_code"] = organisation_address.getZipCode() or err("postal code")
output_dict["city"] = organisation_address.getCity() or err("city")
......@@ -148,25 +148,26 @@ def populateOrganisationDict(my_organisation_list):
output_dict["address"] = err("street address")
output_dict["postal_code"] = err("postal code")
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["codification"] = organisation_region.getCodification() or err("country code")
else:
output_dict["country"] = err("country")
output_dict["codification"] = err("country code")
if organisation_phone is not None:
if organisation_phone:
output_dict["phone"] = organisation_phone.getCoordinateText() or err("phone")
else:
output_dict["phone"] = err("phone")
if organisation_fax is not None:
if organisation_fax:
output_dict["fax"] = organisation_fax.getCoordinateText() or err("fax")
else:
output_dict["fax"] = err("fax")
if len(organisation_link_list) == 1:
#XXXX only 1 ?
output_dict["website"] = organisation_link_list[0].getUrlString() or err("Website")
else:
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["iban"] = organisation_bank_list[0].getIban() or err("iban")
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:
# ---------------------- Override Person -------------------------------------
# returns [{person_dict}]
if pass_parameter == "override_person":
return populatePersonDict(portal_object.portal_catalog(
person_list = portal_object.portal_catalog(
portal_type="Person",
title=pass_source_data
))
)
person_list = [x for x in person_list if x.getTitle() == pass_source_data]
return populatePersonDict(person_list)
# -------------------------- Contributor -------------------------------------
# returns [{person_dict}, {person_dict...}]
......@@ -251,22 +254,19 @@ if pass_parameter is not None and pass_source_data is not None:
# -------------- Source/Destination (Person => Organisation) -----------------
# returns [{organisation_dict}]
if pass_parameter == "source" or pass_parameter == "destination":
person_candidate_list = portal_object.person_module.searchFolder(uid=pass_source_data)
organisation_candidate_list = portal_object.organisation_module.searchFolder(uid=pass_source_data)
candidate = portal_object.portal_catalog.getResultValue(
portal_type=('Person', 'Organisation'),
uid=pass_source_data)
if len(person_candidate_list) > 0:
for c in person_candidate_list:
organisation = c.getCareerSubordinationValue()
if candidate:
if candidate.getPortalType() == 'Person':
organisation = candidate.getCareerSubordinationValue()
if organisation is not None:
return populateOrganisationDict([organisation])
else:
return populatePersonDict([c])
# events might pass organisation as sender/recipient
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 populatePersonDict([candidate])
# events might pass organisation as sender/recipient
return populateOrganisationDict([candidate])
return []
......
......@@ -21,14 +21,11 @@ lookup_skin = blank
if skin:
lookup_skin = "?portal_skin=" + skin
theme_logo_list = []
theme_logo_dict = {}
theme_reference = None
theme = (
context.Base_getTemplateProxyParameter(parameter="theme", source_data=None) or
pref.getPreferredCorporateIdentityTemplateDefaultTheme()
)
if theme is not None:
theme = theme.lower()
theme_logo_prefix = pref.getPreferredCorporateIdentityTemplateDefaultLogoPrefix()
......@@ -37,24 +34,22 @@ if theme is not None:
theme_logo_list = context.Base_getTemplateProxyParameter(parameter="logo", source_data=theme_reference) or []
if len(theme_logo_list) > 0:
theme_logo_dict = theme_logo_list[0]
theme_dict = {}
theme_logo_url = pref.getPreferredCorporateIdentityTemplateFallbackLogoRelativeUrl() + "?format=png"
theme_dict["theme"] = theme
theme_dict["theme_logo_description"] = theme_logo_dict.get("description", blank)
theme_dict["theme_logo_url"] = theme_logo_url
theme_dict = {
"theme":theme,
"theme_logo_description":theme_logo_dict.get("description", blank)
}
fallback_logo_url = pref.getPreferredCorporateIdentityTemplateFallbackLogoRelativeUrl() + "?format=png"
# 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)
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"
else:
theme_dict["theme_logo_url"] = fallback_logo_url
theme_dict["template_css_url"] = css_path + pdf
theme_dict["fallback_img_url"] = theme_logo_url or blank
theme_dict["theme_css_font_list"] = []
theme_font_list = pref.getPreferredCorporateIdentityTemplateDefaultThemeFontList() or []
for font in theme_font_list:
theme_dict["theme_css_font_list"].append(font + pdf)
theme_dict["fallback_img_url"] = fallback_logo_url or blank
theme_dict["theme_css_font_list"] = [x + pdf for x in pref.getPreferredCorporateIdentityTemplateDefaultThemeFontList() or []]
theme_css_url = pref.getPreferredCorporateIdentityTemplateThemeCssRelativeUrl()
if theme_css_url:
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