added s3 integration

This commit is contained in:
Yhael S
2023-09-30 22:58:38 -05:00
parent 5a1a268395
commit 007ffc441c
7 changed files with 138 additions and 15 deletions

View File

@@ -44,6 +44,18 @@ RUN apt-get update && apt-get install -y \
# Clean up the apt cache to reduce the image size
&& rm -rf /var/lib/apt/lists/*
#---------------------#
# PIP Dependecies #
#---------------------#
# Upgrade pip
RUN pip3 install --upgrade pip
# Copy & Install PIP requirements
COPY --chown=odoo:odoo ./odoo/requirements.txt /tmp/requirements.txt
RUN python3 -m pip install -r /tmp/requirements.txt && \
rm /tmp/requirements.txt
#-----------------------#
# Odoo Enterprise #
#-----------------------#
@@ -67,18 +79,6 @@ RUN mkdir -p ${THIRD_PARTY_ADDONS} && \
COPY --chown=odoo:odoo ./odoo/third-party-addons.sh /
RUN /third-party-addons.sh && chown odoo:odoo ${THIRD_PARTY_ADDONS}
#---------------------#
# PIP Dependecies #
#---------------------#
# Upgrade pip
RUN pip3 install --upgrade pip
# Copy & Install PIP requirements
COPY --chown=odoo:odoo ./odoo/requirements.txt /tmp/requirements.txt
RUN python3 -m pip install -r /tmp/requirements.txt && \
rm /tmp/requirements.txt
#---------------------#
# Logging #
#---------------------#

View File

@@ -5,4 +5,10 @@
<field name="key">report.url</field>
<field name="value">http://127.0.0.1:8069</field>
</record>
<!-- When initializing Odoo with S3 storage. -->
<record id="ir_attachment_location" model="ir.config_parameter">
<field name="key">ir_attachment.location</field>
<field name="value">s3</field>
</record>
</odoo>

View File

@@ -109,6 +109,13 @@ defaults=(
[ODOO_SESSION_REDIS_PREFIX]=${ODOO_SESSION_REDIS_PREFIX}
[ODOO_SESSION_REDIS_EXPIRATION]=${ODOO_SESSION_REDIS_EXPIRATION}
[ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS]=${ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
[DISABLE_ATTACHMENT_STORAGE]=${DISABLE_ATTACHMENT_STORAGE}
[AWS_HOST]=${AWS_HOST}
[AWS_REGION]=${AWS_REGION}
[AWS_ACCESS_KEY_ID]=${AWS_ACCESS_KEY_ID}
[AWS_SECRET_ACCESS_KEY]=${AWS_SECRET_ACCESS_KEY}
[AWS_BUCKETNAME]=${AWS_BUCKETNAME}
)
# Define the template
@@ -405,6 +412,24 @@ ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION}
; -- Time in seconds before expiration of the anonymous sessions (default is 3 hours)
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
;----------;
; S3 ;
;----------;
; -- Disable S3 storage
DISABLE_ATTACHMENT_STORAGE = {DISABLE_ATTACHMENT_STORAGE}
; -- Not required if using AWS S3
AWS_HOST = {AWS_HOST}
; -- Required if using AWS services
AWS_REGION = {AWS_REGION}
AWS_ACCESS_KEY_ID = {AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY = {AWS_SECRET_ACCESS_KEY}
; Optional {db_name} placeholder
AWS_BUCKETNAME = {AWS_BUCKETNAME}
EOF
)

View File

@@ -1,3 +1,4 @@
debugpy
websocket-client
redis
boto3

View File

@@ -1,2 +1,48 @@
git clone https://github.com/camptocamp/odoo-cloud-platform.git --depth 1 --branch ${ODOO_TAG} --single-branch --no-tags;
cp -r odoo-cloud-platform/session_redis ${THIRD_PARTY_ADDONS}/session_redis
# Check if the repository directory exists
if [ ! -d "odoo-cloud-platform" ]; then
git clone https://github.com/camptocamp/odoo-cloud-platform.git --depth 1 --branch ${ODOO_TAG} --single-branch --no-tags;
cp -r odoo-cloud-platform/session_redis ${THIRD_PARTY_ADDONS}/session_redis
cp -r odoo-cloud-platform/base_attachment_object_storage ${THIRD_PARTY_ADDONS}/base_attachment_object_storage
cp -r odoo-cloud-platform/attachment_s3 ${THIRD_PARTY_ADDONS}/attachment_s3
fi
# Define the path to the manifest file
manifest_file_path="${THIRD_PARTY_ADDONS}/attachment_s3/__manifest__.py"
# Use Python to modify the manifest file
python3 -c "
filename = '${manifest_file_path}'
# Read the file content
with open(filename, 'r') as file:
lines = file.readlines()
# Find the start and end index of the manifest dictionary
start_index = next(i for i, line in enumerate(lines) if line.strip().startswith('{'))
end_index = next(i for i, line in enumerate(lines) if line.strip().endswith('}'))
# Construct and evaluate the manifest dictionary
manifest_dict = eval(''.join(lines[start_index:end_index + 1]))
# Modify the manifest dictionary
manifest_dict['installable'] = True
manifest_dict['auto_install'] = True
# Construct the modified manifest string
modified_manifest_lines = ['{\n']
for key, value in manifest_dict.items():
modified_manifest_lines.append(f' \'{key}\': {repr(value)},\n')
modified_manifest_lines.append('}\n')
# Replace the manifest dictionary string in the content
lines[start_index:end_index + 1] = modified_manifest_lines
# Write the modified content back to the file
with open(filename, 'w') as file:
file.writelines(lines)
"
echo "Modified $manifest_file_path"
# Optional: Cat the file to verify changes
cat $manifest_file_path