Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .weblate.json
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,11 @@
"filemask": "student_organization/i18n/*.po",
"new_base": "student_organization/i18n/student_organization.pot"
},
{
"name": "summer_camps",
"filemask": "summer_camps/i18n/*.po",
"new_base": "summer_camps/i18n/summer_camps.pot"
},
{
"name": "surveyor",
"filemask": "surveyor/i18n/*.po",
Expand Down
71 changes: 71 additions & 0 deletions summer_camps/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{
'name': 'Summer Camps',
'version': '1.0',
'category': 'Services',
'author': 'Odoo S.A.',
'depends': [
'appointment_crm',
'base_industry_data',
'crm_enterprise',
'event_crm',
'hr',
'knowledge',
'sale_crm',
'sale_project',
'sign',
'survey',
'website_crm',
'website_event_sale',
],
'data': [
'data/ir_attachment.xml',
'data/appointment_type.xml',
'data/appointment_slot.xml',
'data/product_template.xml',
'data/product_product.xml',
'data/event_tag_category.xml',
'data/event_tag.xml',
'data/event_type.xml',
'data/knowledge_cover.xml',
'data/knowledge_article.xml',
'data/product_attribute.xml',
'data/product_public_category.xml',
'data/project_task_type.xml',
'data/project_project.xml',
'data/sign_template.xml',
'data/sign_document.xml',
'data/mail_message.xml',
'data/knowledge_article_favorite.xml',
'data/website_menu.xml',
],
'demo': [
'demo/appointment_type.xml',
'demo/hr_department.xml',
'demo/crm_tag.xml',
'demo/hr_employee.xml',
'demo/res_partner.xml',
'demo/crm_lead.xml',
'demo/project_task.xml',
'demo/event_question.xml',
'demo/event_question_answer.xml',
'demo/event_event.xml',
'demo/event_event_ticket.xml',
'demo/sale_order.xml',
'demo/sale_order_line.xml',
'demo/sale_order_confirm.xml',
'demo/sign_request.xml',
'demo/payment_provider_demo.xml',
'demo/website_view.xml',
'demo/website_theme_apply.xml',
'demo/website_menu.xml',
'demo/website.xml',
],
'license': 'OPL-1',
'cloc_exclude': [
'data/knowledge_article.xml',
"demo/website_view.xml",
],
'images': [
'images/main.png',
],
}
56 changes: 56 additions & 0 deletions summer_camps/data/appointment_slot.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="appointment_slot_1" model="appointment.slot">
<field name="start_hour">9.0</field>
<field name="end_hour">12.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_2" model="appointment.slot">
<field name="start_hour">14.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_3" model="appointment.slot">
<field name="weekday">2</field>
<field name="start_hour">9.0</field>
<field name="end_hour">12.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_4" model="appointment.slot">
<field name="weekday">2</field>
<field name="start_hour">14.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_5" model="appointment.slot">
<field name="weekday">3</field>
<field name="start_hour">9.0</field>
<field name="end_hour">12.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_6" model="appointment.slot">
<field name="weekday">3</field>
<field name="start_hour">14.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_7" model="appointment.slot">
<field name="weekday">4</field>
<field name="start_hour">9.0</field>
<field name="end_hour">12.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_8" model="appointment.slot">
<field name="weekday">4</field>
<field name="start_hour">14.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_9" model="appointment.slot">
<field name="weekday">5</field>
<field name="start_hour">9.0</field>
<field name="end_hour">12.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
<record id="appointment_slot_10" model="appointment.slot">
<field name="weekday">5</field>
<field name="start_hour">14.0</field>
<field name="appointment_type_id" ref="appointment_type_1"/>
</record>
</odoo>
25 changes: 25 additions & 0 deletions summer_camps/data/appointment_type.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="appointment_type_1" model="appointment.type">
<field name="name">Meet a Counsellor</field>
<field name="appointment_duration">0.5</field>
<field name="allow_guests" eval="True"/>
<field name="category">recurring</field>
<field name="show_avatars">False</field>
<field name="message_intro"><![CDATA[<p>Have questions about our summer camps? Want to make sure it’s the right fit for your child? Book a one-on-one chat with one of our friendly camp counsellors!</p>

<p>Whether you're wondering about daily activities, camper safety, food options, or what to pack—we're here to help.</p>

<p>Choose a time that works for you, and we’ll be happy to guide you through everything.</p>

<p>🗓️ <strong>Available by video or phone</strong></p>

<p>
👨‍👩‍👧‍👦 <strong>Parents and kids are both welcome</strong></p>

<p>
📍 <strong>No commitment—just friendly advice</strong></p>]]></field>
<field name="slot_creation_interval">0.5</field>
<field name="staff_user_ids" eval="[(6, 0, [ref('base.user_admin')])]"/>
</record>
</odoo>
82 changes: 82 additions & 0 deletions summer_camps/data/event_tag.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="event_tag_1" model="event.tag">
<field name="name">🎂 Ages 8-14</field>
<field name="category_id" ref="event_tag_category_1"/>
<field name="color">3</field>
</record>
<record id="event_tag_7" model="event.tag">
<field name="name">🎂 Ages 8-12</field>
<field name="category_id" ref="event_tag_category_1"/>
<field name="color">3</field>
</record>
<record id="event_tag_8" model="event.tag">
<field name="name">🎂 Ages 10-18</field>
<field name="category_id" ref="event_tag_category_1"/>
<field name="color">1</field>
</record>
<record id="event_tag_9" model="event.tag">
<field name="name">🎂 Ages 14-18</field>
<field name="category_id" ref="event_tag_category_1"/>
<field name="color">3</field>
</record>
<record id="event_tag_2" model="event.tag">
<field name="name">⚽️ Sports</field>
<field name="category_id" ref="event_tag_category_2"/>
<field name="color">4</field>
</record>
<record id="event_tag_5" model="event.tag">
<field name="name">🎨 Arts &amp; Crafts</field>
<field name="category_id" ref="event_tag_category_2"/>
</record>
<record id="event_tag_6" model="event.tag">
<field name="name">💻 IT Camp</field>
<field name="category_id" ref="event_tag_category_2"/>
<field name="color">8</field>
</record>
<record id="event_tag_3" model="event.tag">
<field name="name">🏕️ Camping</field>
<field name="category_id" ref="event_tag_category_3"/>
<field name="color">5</field>
</record>
<record id="event_tag_4" model="event.tag">
<field name="name">🏡 Residence</field>
<field name="category_id" ref="event_tag_category_3"/>
<field name="color">6</field>
</record>
<record id="event_tag_10" model="event.tag">
<field name="name">🍜 Full Board</field>
<field name="category_id" ref="event_tag_category_4"/>
<field name="color">7</field>
</record>
<record id="event_tag_11" model="event.tag">
<field name="name">🥐 Half Board</field>
<field name="category_id" ref="event_tag_category_4"/>
<field name="color">7</field>
</record>
<record id="event_tag_12" model="event.tag">
<field name="name">⭕️ No Meals included</field>
<field name="category_id" ref="event_tag_category_4"/>
<field name="color">3</field>
</record>
<record id="event_tag_13" model="event.tag">
<field name="name">📅 1 week</field>
<field name="category_id" ref="event_tag_category_5"/>
<field name="color">9</field>
</record>
<record id="event_tag_14" model="event.tag">
<field name="name">📅 2 weeks</field>
<field name="category_id" ref="event_tag_category_5"/>
<field name="color">2</field>
</record>
<record id="event_tag_15" model="event.tag">
<field name="name">📅 3 weeks</field>
<field name="category_id" ref="event_tag_category_5"/>
<field name="color">10</field>
</record>
<record id="event_tag_16" model="event.tag">
<field name="name">📅 4 weeks</field>
<field name="category_id" ref="event_tag_category_5"/>
<field name="color">9</field>
</record>
</odoo>
18 changes: 18 additions & 0 deletions summer_camps/data/event_tag_category.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="event_tag_category_1" model="event.tag.category">
<field name="name">Age Group</field>
</record>
<record id="event_tag_category_2" model="event.tag.category">
<field name="name">Camp Type</field>
</record>
<record id="event_tag_category_3" model="event.tag.category">
<field name="name">Accommodation</field>
</record>
<record id="event_tag_category_4" model="event.tag.category">
<field name="name">Board</field>
</record>
<record id="event_tag_category_5" model="event.tag.category">
<field name="name">Duration</field>
</record>
</odoo>
23 changes: 23 additions & 0 deletions summer_camps/data/event_type.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="event_type_1" model="event.type">
<field name="name">Summer Camp</field>
<field name="ticket_instructions"><![CDATA[<h3 data-oe-version="2.0">✅ <strong>Next Steps</strong></h3><p>Thank you for booking your child’s place at <strong>Camp Adventure</strong>! We’re thrilled to welcome them to an unforgettable summer in the heart of the Ardennes.</p><p>Here’s what happens next:</p><ul>
<li><p>📬 <strong>Confirmation Email</strong></p><p>
You’ll receive a confirmation email shortly with all your camp details, including dates, payment summary, and a digital copy of your welcome guide.</p></li>
<li><p>🧳 <strong>Packing List</strong></p><p>
A complete checklist will be sent 2 weeks before camp starts, with everything your child needs—from hiking shoes to silly costumes.</p></li>
<li><p>🧾 <strong>Medical &amp; Emergency Form</strong></p><p>
Please complete the required forms before your child’s first day. You’ll find them linked in your email or through your parent dashboard.</p></li>
<li><p>🕒 <strong>Stay Informed</strong></p><p>
One week before camp, you’ll receive a reminder with drop-off and pick-up times, and details about our welcome desk.</p></li>
</ul><p>Need to make changes? You can manage your booking anytime via your personal account.</p><h3>🗺️ <strong>How to Get There</strong></h3><p><strong>Camp Adventure&nbsp;– La Roche-en-Ardenne</strong></p><p>
Chemin des Fougères 17, 6980 La Roche, Belgium</p><p>📍 Tucked away in the lush forests near the Ourthe River, our camp is easily accessible by car or public transport.</p><ul>
<li><p>🚗 <strong>By Car:</strong></p><p>
From Brussels, take the E411 towards Namur, then follow signs to Marche-en-Famenne and La Roche. Free parking is available on-site for drop-off and pickup days.</p></li>
<li><p>🚉 <strong>By Train + Shuttle:</strong></p><p>
Take a train to <strong>Marloie Station</strong>. From there, we offer a supervised shuttle service to camp for an extra fee. Don’t forget to book it in advance through your dashboard.</p></li>
<li><p>🧭 <strong>Navigation Tip:</strong></p><p>
Enter “Camp Sylva – Ardennes” into Google Maps or Waze. The entrance is marked by wooden signs and friendly faces!</p></li></ul>]]></field>
</record>
</odoo>
104 changes: 104 additions & 0 deletions summer_camps/data/ir_attachment.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="ir_attachment_1132" model="ir.attachment">
<field name="name">CleanShot2025-1132.png</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/[email protected]"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1131" model="ir.attachment">
<field name="name">CleanShot2025-1131.png</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/[email protected]"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1130" model="ir.attachment">
<field name="name">CleanShot2025-1130.png</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/[email protected]"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1128" model="ir.attachment">
<field name="name">CleanShot2025-1128.png</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/[email protected]"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1127" model="ir.attachment">
<field name="name">CleanShot2025-1127.png</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/[email protected]"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1125" model="ir.attachment">
<field name="name">Parental Consent.pdf</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1125-ParentalConsent.pdf"/>
<field name="website_id" ref="website.default_website"/>
</record>
<record id="ir_attachment_1124" model="ir.attachment">
<field name="name">unsplash_f7b6WX_p1N0_.jpg</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1124-unsplash_f7b6WX_p1N0_.jpg"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1123" model="ir.attachment">
<field name="name">unsplash-1123.jpg</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1123-unsplash_DqgMHzeio7g_.jpg"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1122" model="ir.attachment">
<field name="name">unsplash-1122.jpg</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1122-unsplash_hGuGRayJrv0_.jpg"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1120" model="ir.attachment">
<field name="name">Styled_Adventure_Summer_Camp_Packing_List.pdf</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1120-Styled_Adventure_Summer_Camp_Packing_List.pdf"/>
<field name="res_model">mail.message</field>
<field name="website_id" ref="website.default_website"/>
</record>
<record id="ir_attachment_1093" model="ir.attachment">
<field name="name">Event'SummerCamp-2025'coverimage.webp</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1093-Event'SummerCamp-2025'coverimage.webp"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1104" model="ir.attachment">
<field name="name">Event'🏕️CreativeSummerCamp'coverimage.webp</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1104-Event'🏕️CreativeSummerCamp'coverimage.webp"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1106" model="ir.attachment">
<field name="name">Event'💻CampPixel'coverimage.webp</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1106-Event'💻CampPixel'coverimage.webp"/>
<field name="public">True</field>
</record>
<record id="ir_attachment_1109" model="ir.attachment">
<field name="name">luis-wittenberg-s3iJ2TnaxLc-unsplash.jpg</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/1109-luis-wittenberg-s3iJ2TnaxLc-unsplash.jpg"/>
<field name="public">True</field>
</record>
<record id="configurator_1_s_three_columns_default_image_3" model="ir.attachment" forcecreate="1">
<field name="name">website.s_three_columns_default_image_3</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/972-website.s_three_columns_default_image_3"/>
<field name="key">website.s_three_columns_default_image_3</field>
<field name="public">True</field>
</record>
<record id="configurator_1_s_three_columns_default_image_2" model="ir.attachment" forcecreate="1">
<field name="name">website.s_three_columns_default_image_2</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/971-website.s_three_columns_default_image_2"/>
<field name="key">website.s_three_columns_default_image_2</field>
<field name="public">True</field>
</record>
<record id="configurator_1_s_three_columns_default_image_1" model="ir.attachment" forcecreate="1">
<field name="name">website.s_three_columns_default_image_1</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/970-website.s_three_columns_default_image_1"/>
<field name="key">website.s_three_columns_default_image_1</field>
<field name="public">True</field>
</record>
<record id="configurator_1_s_image_text_default_image" model="ir.attachment" forcecreate="1">
<field name="name">website.s_image_text_default_image</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/968-website.s_image_text_default_image"/>
<field name="key">website.s_image_text_default_image</field>
<field name="public">True</field>
</record>
<record id="configurator_1_s_parallax_default_image" model="ir.attachment" forcecreate="1">
<field name="name">website.s_parallax_default_image</field>
<field name="datas" type="base64" file="summer_camps/static/src/binary/ir_attachment/959-website.s_parallax_default_image"/>
<field name="key">website.s_parallax_default_image</field>
<field name="public">True</field>
</record>
</odoo>
Loading