1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-22 11:52:21 +01:00

Merge branch 'dev' into staging

This commit is contained in:
Du Peng 2024-01-02 14:01:12 +01:00
commit 434f0ffdc0
11 changed files with 57 additions and 71 deletions

View File

@ -1,39 +1,20 @@
FROM ruby:3.2.2-alpine
MAINTAINER contact@fab-manager.com
FROM ruby:3.2.2
MAINTAINER contact@sleede.com
# Install upgrade system packages
RUN apk update && apk upgrade && \
# Install runtime apk dependencies
apk add --update \
bash \
curl \
nodejs \
yarn \
git \
openssh \
imagemagick \
supervisor \
tzdata \
libc-dev \
ruby-dev \
zlib-dev \
xz \
xz-dev \
postgresql-dev \
postgresql-client \
libxml2-dev \
libxslt-dev \
libsass-dev \
libsass \
libc6-compat \
libidn-dev \
shared-mime-info && \
# Install buildtime apk dependencies
apk add --update --no-cache --virtual .build-deps \
alpine-sdk \
build-base \
linux-headers \
patch
# First we need to be able to fetch from https repositories
RUN apt-get update && \
apt-get install -y apt-transport-https \
ca-certificates apt-utils supervisor locales
RUN locale-gen C.UTF-8
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash -\
&& apt-get update -qq && apt-get install -qq --no-install-recommends \
nodejs \
&& apt-get upgrade -qq \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*\
&& npm install -g yarn@1
# Fix bug: LoadError: Could not open library '/usr/local/bundle/gems/sassc-2.1.0-x86_64-linux/lib/sassc/libsass.so': Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /usr/local/bundle/gems/sassc-2.1.0-x86_64-linux/lib/sassc/libsass.so)
# add libsass-dev libsass libc6-compat and env below
@ -46,19 +27,9 @@ RUN bundle config --global frozen 1
# Install gems in a cache efficient way
WORKDIR /tmp
COPY Gemfile* /tmp/
RUN bundle config set --local without 'development test doc' && bundle install && bundle binstubs --all
# Prepare the application directories
RUN mkdir -p /var/log/supervisor && \
mkdir -p /usr/src/app/tmp/sockets && \
mkdir -p /usr/src/app/tmp/pids && \
mkdir -p /usr/src/app/tmp/cache && \
mkdir -p /usr/src/app/log && \
mkdir -p /usr/src/app/node_modules && \
mkdir -p /usr/src/app/public/api && \
chmod -R a+w /usr/src/app && \
chmod -R a+w /var/run
COPY Gemfile /tmp/
COPY Gemfile.lock /tmp/
RUN bundle install --binstubs --without development test doc
# Install Javascript packages
WORKDIR /usr/src/app
@ -66,16 +37,21 @@ COPY package.json /usr/src/app/package.json
COPY yarn.lock /usr/src/app/yarn.lock
RUN yarn install
# Clean up build deps, cached packages and temp files
RUN apk del .build-deps && \
yarn cache clean && \
rm -rf /tmp/* \
/var/tmp/* \
/var/cache/apk/* \
/usr/lib/ruby/gems/*/cache/* && \
chmod -R a+w /usr/src/app/node_modules
# Web app
RUN mkdir -p /usr/src/app && \
mkdir -p /usr/src/app/config && \
mkdir -p /usr/src/app/invoices && \
mkdir -p /usr/src/app/payment_schedules && \
mkdir -p /usr/src/app/exports && \
mkdir -p /usr/src/app/imports && \
mkdir -p /usr/src/app/log && \
mkdir -p /usr/src/app/public/uploads && \
mkdir -p /usr/src/app/public/packs && \
mkdir -p /usr/src/app/accounting && \
mkdir -p /usr/src/app/supporting_document_files && \
mkdir -p /usr/src/app/tmp/sockets && \
mkdir -p /usr/src/app/tmp/pids
# Copy source files
COPY docker/database.yml /usr/src/app/config/database.yml
COPY . /usr/src/app

View File

@ -2,7 +2,7 @@
<p><%= t('.body.reservation_saved_html', RESERVATION: @attached_object.reservable.name) %></p>
<p><%= t('.body.your_reserved_slots') %> </p>
<p><%= t('.body.your_reserved_slots') %></p>
<ul>
<% @attached_object.slots.each do |slot| %>
<% if @attached_object.reservable_type == 'Event' %>
@ -14,3 +14,4 @@
<% end %>
<% end %>
</ul>
<p><%= t('.body.reservation_warning', RESERVATION: @attached_object.reservable.name) %></p>

View File

@ -83,6 +83,7 @@ de:
body:
reservation_saved_html: "You pre-registration <strong><em>%{RESERVATION}</em></strong> has been successfully saved"
your_reserved_slots: "Your pre-booked slots are:"
reservation_warning: "<strong><em>This email does not count as registration to %{RESERVATION}.</em></strong><br/>You will receive another email to confirm or deny your request."
notify_member_subscribed_plan_is_changed:
subject: "Ihr Abonnement wurde aktualisiert"
body:

View File

@ -83,6 +83,7 @@ en:
body:
reservation_saved_html: "You pre-registration <strong><em>%{RESERVATION}</em></strong> has been successfully saved"
your_reserved_slots: "Your pre-booked slots are:"
reservation_warning: "<strong><em>This email does not count as registration to %{RESERVATION}.</em></strong><br/>You will receive another email to confirm or deny your request."
notify_member_subscribed_plan_is_changed:
subject: "Your subscription has been updated"
body:

View File

@ -83,6 +83,7 @@ es-MX:
body:
reservation_saved_html: "Su preinscripción de <strong><em>%{RESERVATION}</em></strong> se ha guardado correctamente"
your_reserved_slots: "Sus franjas horarias preinscritas son:"
reservation_warning: "<strong><em>Este email no es una confirmación de su inscripción a %{RESERVATION}</em></strong><br/>. Recibirá otro email para confirmar o rechazar su solicitud."
notify_member_subscribed_plan_is_changed:
subject: "Su suscripción ha sido actualizada"
body:

View File

@ -83,6 +83,7 @@ es:
body:
reservation_saved_html: "Su preinscripción de <strong><em>%{RESERVATION}</em></strong> se ha guardado correctamente"
your_reserved_slots: "Sus franjas horarias preinscritas son:"
reservation_warning: "<strong><em>Este email no es una confirmación de su inscripción a %{RESERVATION}</em></strong><br/>. Recibirá otro email para confirmar o rechazar su solicitud."
notify_member_subscribed_plan_is_changed:
subject: "Su suscripción ha sido actualizada"
body:

View File

@ -35,7 +35,7 @@ fr:
notify_admin_subscription_extended:
subject: "Un abonnement a été prolongé"
body:
subscription_extended_html: "L'abonnement <strong><em>{PLAN}</em></strong> du membre <strong><em>{NAME}</strong></em> a été prolongé {FREE, select, true{gratuitment} other{}} jusqu'au {DATE}." #messageFormat interpolation
subscription_extended_html: "L'abonnement <strong><em>{PLAN}</em></strong> du membre <strong><em>{NAME}</strong></em> a été prolongé {FREE, select, true{gratuitement} other{}} jusqu'au {DATE}." #messageFormat interpolation
notify_member_subscription_extended:
subject: "Votre abonnement a été prolongé"
body:
@ -79,10 +79,11 @@ fr:
reservation_saved_html: "Votre réservation <strong><em>%{RESERVATION}</em></strong> a bien été enregistrée."
your_reserved_slots: "Les créneaux que vous avez réservés sont :"
notify_member_pre_booked_reservation:
subject: "Votre pré-inscription a bien été prise en compte"
subject: "Votre demande de pré-inscription a bien été prise en compte"
body:
reservation_saved_html: "Votre réservation <strong><em>%{RESERVATION}</em></strong> a bien été prise en compte."
your_reserved_slots: "Les créneaux que vous avez pré-inscrit sont :"
reservation_saved_html: "Votre demande de pré-inscription à <strong><em>%{RESERVATION}</em></strong> a bien été prise en compte."
your_reserved_slots: "Les créneaux sur lesquels vous êtes pré-inscrits sont :"
reservation_warning: "<strong><em>Ce mail ne vaut pas inscription à %{RESERVATION}.</em></strong><br/>Un mail vous sera envoyé pour valider ou non votre demande."
notify_member_subscribed_plan_is_changed:
subject: "Votre abonnement a été mis à jour"
body:
@ -157,7 +158,7 @@ fr:
notify_member_training_invalidated:
subject: "Votre autorisation a été invalidée"
body:
training_invalidated_html: "<p>Vous avez suivi la formation %{TRAINING}, le %{DATE} vous donnant accès aux %{MACHINES}.</p><p>En raison de l'abscence de réservation pour l'une de ces machines au cours des %{PERIOD} derniers mois, votre autorisation a été invalidée.</p><p>Veuillez valider la formation à nouveau afin de continuer à réserver ces machines.</p>."
training_invalidated_html: "<p>Vous avez suivi la formation %{TRAINING}, le %{DATE} vous donnant accès aux %{MACHINES}.</p><p>En raison de l'absence de réservation pour l'une de ces machines au cours des %{PERIOD} derniers mois, votre autorisation a été invalidée.</p><p>Veuillez valider la formation à nouveau afin de continuer à réserver ces machines.</p>."
notify_member_subscription_is_expired:
subject: "Votre abonnement est arrivé à expiration"
body:
@ -346,13 +347,13 @@ fr:
subject: "[URGENT] Erreur lors du prélèvement par carte"
body:
remember: "Conformément à l'échéancier de paiement %{REFERENCE}, un prélèvement par carte de %{AMOUNT} était prévu le %{DATE}."
error: "Malheureusement, une erreur s'est prouite et ce prélèvement n'a pas pu être effectué correctement."
error: "Malheureusement, une erreur s'est produite et ce prélèvement n'a pas pu être effectué correctement."
action: "Veuillez ensuite consulter le tableau de bord de %{GATEWAY} et contacter le membre dès que possible pour résoudre le problème."
notify_member_payment_schedule_error:
subject: "[URGENT] Erreur lors du prélèvement par carte"
body:
remember: "Conformément à votre échéancier de paiement %{REFERENCE}, un prélèvement par carte de %{AMOUNT} était prévu le %{DATE}."
error: "Malheureusement, une erreur s'est prouite et ce prélèvement n'a pas pu être effectué correctement."
error: "Malheureusement, une erreur s'est produite et ce prélèvement n'a pas pu être effectué correctement."
action: "Veuillez contacter un responsable dès que possible pour résoudre le problème."
notify_admin_payment_schedule_failed:
subject: "[URGENT] Échec du prélèvement par carte"

View File

@ -83,6 +83,7 @@ it:
body:
reservation_saved_html: "You pre-registration <strong><em>%{RESERVATION}</em></strong> has been successfully saved"
your_reserved_slots: "Your pre-booked slots are:"
reservation_warning: "<strong><em>This email does not count as registration to %{RESERVATION}.</em></strong><br/>You will receive another email to confirm or deny your request."
notify_member_subscribed_plan_is_changed:
subject: "Il tuo abbonamento è stato aggiornato"
body:

View File

@ -83,6 +83,7 @@
body:
reservation_saved_html: "You pre-registration <strong><em>%{RESERVATION}</em></strong> has been successfully saved"
your_reserved_slots: "Your pre-booked slots are:"
reservation_warning: "<strong><em>This email does not count as registration to %{RESERVATION}.</em></strong><br/>You will receive another email to confirm or deny your request."
notify_member_subscribed_plan_is_changed:
subject: "Medlemskapet ditt er oppdatert"
body:

View File

@ -83,6 +83,7 @@ pt:
body:
reservation_saved_html: "You pre-registration <strong><em>%{RESERVATION}</em></strong> has been successfully saved"
your_reserved_slots: "Your pre-booked slots are:"
reservation_warning: "<strong><em>This email does not count as registration to %{RESERVATION}.</em></strong><br/>You will receive another email to confirm or deny your request."
notify_member_subscribed_plan_is_changed:
subject: "Sua inscrição foi modificada"
body:

View File

@ -83,6 +83,7 @@ zu:
body:
reservation_saved_html: "crwdns38037:0%{RESERVATION}crwdne38037:0"
your_reserved_slots: "crwdns38039:0crwdne38039:0"
reservation_warning: "crwdns38136:0%{RESERVATION}crwdne38136:0"
notify_member_subscribed_plan_is_changed:
subject: "crwdns29590:0crwdne29590:0"
body:
@ -343,37 +344,37 @@ zu:
schedule_in_your_dashboard_html: "crwdns29878:0%{DASHBOARD}crwdne29878:0"
your_dashboard: "crwdns29880:0crwdne29880:0"
notify_admin_payment_schedule_error:
subject: "crwdns29882:0[URGENT]crwdne29882:0"
subject: "crwdns29882:0crwdne29882:0"
body:
remember: "crwdns29884:0%{REFERENCE}crwdnd29884:0%{AMOUNT}crwdnd29884:0%{DATE}crwdne29884:0"
error: "crwdns29886:0crwdne29886:0"
action: "crwdns29888:0%{GATEWAY}crwdne29888:0"
notify_member_payment_schedule_error:
subject: "crwdns29890:0[URGENT]crwdne29890:0"
subject: "crwdns29890:0crwdne29890:0"
body:
remember: "crwdns29892:0%{REFERENCE}crwdnd29892:0%{AMOUNT}crwdnd29892:0%{DATE}crwdne29892:0"
error: "crwdns29894:0crwdne29894:0"
action: "crwdns29896:0crwdne29896:0"
notify_admin_payment_schedule_failed:
subject: "crwdns29898:0[URGENT]crwdne29898:0"
subject: "crwdns29898:0crwdne29898:0"
body:
remember: "crwdns29900:0%{REFERENCE}crwdnd29900:0%{AMOUNT}crwdnd29900:0%{DATE}crwdne29900:0"
error: "crwdns29902:0crwdne29902:0"
action: "crwdns29904:0crwdne29904:0"
notify_member_payment_schedule_failed:
subject: "crwdns29906:0[URGENT]crwdne29906:0"
subject: "crwdns29906:0crwdne29906:0"
body:
remember: "crwdns29908:0%{REFERENCE}crwdnd29908:0%{AMOUNT}crwdnd29908:0%{DATE}crwdne29908:0"
error: "crwdns29910:0crwdne29910:0"
action_html: "crwdns29912:0%{DASHBOARD}crwdne29912:0"
your_dashboard: "crwdns29914:0crwdne29914:0"
notify_admin_payment_schedule_gateway_canceled:
subject: "crwdns29916:0[URGENT]crwdne29916:0"
subject: "crwdns29916:0crwdne29916:0"
body:
error: "crwdns29918:0%{REFERENCE}crwdnd29918:0%{GATEWAY}crwdne29918:0"
action: "crwdns29920:0crwdne29920:0"
notify_member_payment_schedule_gateway_canceled:
subject: "crwdns29922:0[URGENT]crwdne29922:0"
subject: "crwdns29922:0crwdne29922:0"
body:
error: "crwdns29924:0%{REFERENCE}crwdne29924:0"
action: "crwdns29926:0crwdne29926:0"