From e3e6e2de57d6b009de1ea0d42095d143cd3a1f92 Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Tue, 6 Aug 2019 09:29:22 -0700 Subject: [PATCH 1/2] NEW Addition to gitlab-ci for creating merge reqeusts --- .gitlab-ci-automerge.sh | 58 +++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 10 +++++++ 2 files changed, 68 insertions(+) create mode 100755 .gitlab-ci-automerge.sh diff --git a/.gitlab-ci-automerge.sh b/.gitlab-ci-automerge.sh new file mode 100755 index 00000000..eda4db46 --- /dev/null +++ b/.gitlab-ci-automerge.sh @@ -0,0 +1,58 @@ +#!/bin/sh +set -e +set -x + +echo "Processing for merge requests." + +HOST="${HOST}api/v4/projects/" + +TARGET_BRANCH=$RELEASE + +BODY="{ + \"id\": ${CI_PROJECT_ID}, + \"source_branch\": \"${CI_COMMIT_REF_NAME}\", + \"target_branch\": \"${TARGET_BRANCH}\", + \"remove_source_branch\": true, + \"title\": \"WIP RELEASE: ${CI_COMMIT_REF_NAME}\", + \"assignee_id\":\"${GITLAB_USER_ID}\" +}"; + +LISTMR=`curl --silent "${HOST}${CI_PROJECT_ID}/merge_requests?state=opened" --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}"`; +MATCHES=`echo ${LISTMR} | jq ".[] | {target_branch: .target_branch | match(\"${TARGET_BRANCH}\"), source_branch: .source_branch | match(\"${CI_COMMIT_REF_NAME}\")}"`; + +# No MR found, let's create a new one +if [ -z "${MATCHES}" ]; then + curl -X POST "${HOST}${CI_PROJECT_ID}/merge_requests" \ + --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" \ + --header "Content-Type: application/json" \ + --data "${BODY}"; + + echo "Opened a new merge request: WIP RELEASE: ${CI_COMMIT_REF_NAME} and assigned to you"; +fi + +# Test +TARGET_BRANCH="${RELEASE}-test" + +BODY="{ + \"id\": ${CI_PROJECT_ID}, + \"source_branch\": \"${CI_COMMIT_REF_NAME}\", + \"target_branch\": \"${TARGET_BRANCH}\", + \"remove_source_branch\": false, + \"title\": \"WIP TEST: ${CI_COMMIT_REF_NAME}\", + \"assignee_id\":\"${GITLAB_USER_ID}\" +}"; + +LISTMR=`curl --silent "${HOST}${CI_PROJECT_ID}/merge_requests?state=opened" --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}"`; +MATCHES=`echo ${LISTMR} | jq ".[] | {target_branch: .target_branch | match(\"${TARGET_BRANCH}\"), source_branch: .source_branch | match(\"${CI_COMMIT_REF_NAME}\")}"`; + +# No MR found, let's create a new one +if [ -z "${MATCHES}" ]; then + curl -X POST "${HOST}${CI_PROJECT_ID}/merge_requests" \ + --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" \ + --header "Content-Type: application/json" \ + --data "${BODY}"; + + echo "Opened a new merge request: WIP TEST: ${CI_COMMIT_REF_NAME} and assigned to you"; +fi + + diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 97144120..3b65e88e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,6 +21,16 @@ before_script: - git submodule sync --recursive - git submodule update --init --recursive +merge_request: + before_script: + - apk add curl jq + stage: build + only: + - /(^new\/)|(^mig\/)|(^imp\/)|(^fix\/)/ + script: + - ls -lah + - RELEASE=$(echo $CI_COMMIT_REF_NAME | sed "s{.*\/\(.*\)\/.*{\1{g") HOST=$(echo $CI_PROJECT_URL | sed 's{\(^https://[^/]*/\).*{\1{g') CI_PROJECT_ID=${CI_PROJECT_ID} CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME} GITLAB_USER_ID=${GITLAB_USER_ID} PRIVATE_TOKEN=${PRIVATE_TOKEN} ./.gitlab-ci-automerge.sh + build: stage: build script: From 7a6eee075d5402ab64a85d5fd0b6e5c8f2714f2d Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Tue, 6 Aug 2019 16:11:36 -0700 Subject: [PATCH 2/2] FIX `sale_planner` It is possible that the 'fall back' core geo_localize can raise an index error --- sale_planner/models/partner.py | 29 ++++++++++-------- sale_planner/wizard/order_planner.py | 44 +++++++++++++++------------- 2 files changed, 39 insertions(+), 34 deletions(-) diff --git a/sale_planner/models/partner.py b/sale_planner/models/partner.py index fe44f548..23e258d3 100644 --- a/sale_planner/models/partner.py +++ b/sale_planner/models/partner.py @@ -13,17 +13,20 @@ class Partner(models.Model): def geo_localize(self): # We need country names in English below for partner in self.with_context(lang='en_US'): - if SearchEngine and partner.zip: - with SearchEngine() as search: - zipcode = search.by_zipcode(str(self.zip).split('-')[0]) - if zipcode and zipcode.lat: - partner.write({ - 'partner_latitude': zipcode.lat, - 'partner_longitude': zipcode.lng, - 'date_localization': fields.Date.context_today(partner), - }) - else: - super(Partner, partner).geo_localize() - else: - super(Partner, partner).geo_localize() + try: + if SearchEngine and partner.zip: + with SearchEngine() as search: + zipcode = search.by_zipcode(str(self.zip).split('-')[0]) + if zipcode and zipcode.lat: + partner.write({ + 'partner_latitude': zipcode.lat, + 'partner_longitude': zipcode.lng, + 'date_localization': fields.Date.context_today(partner), + }) + else: + super(Partner, partner).geo_localize() + else: + super(Partner, partner).geo_localize() + except: + pass return True diff --git a/sale_planner/wizard/order_planner.py b/sale_planner/wizard/order_planner.py index 6e27fcff..d7274e88 100644 --- a/sale_planner/wizard/order_planner.py +++ b/sale_planner/wizard/order_planner.py @@ -58,28 +58,30 @@ class FakePartner(): @property def date_localization(self): - if not hasattr(self, 'date_localization') and self.date_localization: - self.date_localization = 'TODAY!' - # The fast way. - if SearchEngine and self.zip: - with SearchEngine() as search: - zipcode = search.by_zipcode(str(self.zip).split('-')[0]) - if zipcode and zipcode.lat: - self.partner_latitude = zipcode.lat - self.partner_longitude = zipcode.lng - return self.date_localization + if not self._date_localization: + try: + self._date_localization = 'TODAY!' + # The fast way. + if SearchEngine and self.zip: + with SearchEngine() as search: + zipcode = search.by_zipcode(str(self.zip).split('-')[0]) + if zipcode and zipcode.lat: + self.partner_latitude = zipcode.lat + self.partner_longitude = zipcode.lng + return self._date_localization - # The slow way. - result = geo_find(geo_query_address( - city=self.city, - state=self.state_id.name, - country=self.country_id.name, - )) - if result: - self.partner_latitude = result[0] - self.partner_longitude = result[1] - - return self.date_localization + # The slow way. + result = geo_find(geo_query_address( + city=self.city, + state=self.state_id.name, + country=self.country_id.name, + )) + if result: + self.partner_latitude = result[0] + self.partner_longitude = result[1] + except: + self._date_localization = 'ERROR' + return self._date_localization def __getattr__(self, item): return False