diff --git a/__init__.py b/__init__.py
new file mode 100644
index 0000000..0650744
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/__manifest__.py b/__manifest__.py
new file mode 100644
index 0000000..11b5792
--- /dev/null
+++ b/__manifest__.py
@@ -0,0 +1,28 @@
+{
+ 'name': 'Open Workshop',
+ 'version': '1.0',
+ 'author': 'Dein Name / Deine Organisation',
+ 'category': 'Custom',
+ 'summary': 'Verwaltung von Maschinen & Einweisungen in einer offenen Werkstatt',
+ 'description': """
+Dieses Modul fügt zwei neue Modelle hinzu:
+- Maschinen (mit Metadaten)
+- Maschineneinweisungen (Verknüpfung zwischen Partner und Maschine)
+
+Außerdem wird das Partnerformular erweitert, damit man direkt sieht,
+für welche Maschinen ein Partner bereits eingewiesen ist.
+ """,
+ 'depends': [
+ 'base',
+ 'point_of_sale',
+ ],
+ 'data': [
+ 'security/ir.model.access.csv',
+ 'views/open_workshop_machine_views.xml',
+ 'views/open_workshop_training_views.xml',
+ 'views/res_partner_views.xml',
+ ],
+ 'installable': True,
+ 'application': True,
+}
+
diff --git a/models/__init__.py b/models/__init__.py
new file mode 100644
index 0000000..5ce593d
--- /dev/null
+++ b/models/__init__.py
@@ -0,0 +1,4 @@
+from . import machine
+from . import training
+from . import res_partner
+
diff --git a/models/machine.py b/models/machine.py
new file mode 100644
index 0000000..241b6cb
--- /dev/null
+++ b/models/machine.py
@@ -0,0 +1,12 @@
+from odoo import models, fields, api
+
+class OpenWorkshopMachine(models.Model):
+ _name = 'open.workshop.machine'
+ _description = 'Open Workshop Machine'
+
+ name = fields.Char(string='Name', required=True)
+ code = fields.Char(string='Maschinen-Code', help='Interner Code oder Inventar-Nr.')
+ location = fields.Char(string='Standort')
+ description = fields.Text(string='Beschreibung')
+ active = fields.Boolean(default=True)
+
diff --git a/models/res_partner.py b/models/res_partner.py
new file mode 100644
index 0000000..9d30ee0
--- /dev/null
+++ b/models/res_partner.py
@@ -0,0 +1,11 @@
+from odoo import models, fields
+
+class ResPartner(models.Model):
+ _inherit = 'res.partner'
+
+ machine_training_ids = fields.One2many(
+ 'open.workshop.machine.training',
+ 'partner_id',
+ string='Maschineneinweisungen'
+ )
+
diff --git a/models/training.py b/models/training.py
new file mode 100644
index 0000000..cb64bbb
--- /dev/null
+++ b/models/training.py
@@ -0,0 +1,29 @@
+from odoo import models, fields, api
+
+class OpenWorkshopMachineTraining(models.Model):
+ _name = 'open.workshop.machine.training'
+ _description = 'Machine Training for Partners'
+
+ partner_id = fields.Many2one(
+ 'res.partner',
+ string='Partner',
+ required=True,
+ ondelete='cascade'
+ )
+ machine_id = fields.Many2one(
+ 'open.workshop.machine',
+ string='Maschine',
+ required=True,
+ ondelete='restrict'
+ )
+ training_date = fields.Datetime(
+ string='Datum der Einweisung',
+ default=fields.Datetime.now
+ )
+ notes = fields.Text(string='Notizen')
+
+ trainer_id = fields.Many2one(
+ 'res.users',
+ string='Einweiser/In'
+ )
+
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
new file mode 100644
index 0000000..46e6374
--- /dev/null
+++ b/security/ir.model.access.csv
@@ -0,0 +1,4 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_open_workshop_machine_user,access_open_workshop_machine_user,model_open_workshop_machine,base.group_user,1,1,1,1
+access_open_workshop_training_user,access_open_workshop_training_user,model_open_workshop_machine_training,base.group_user,1,1,1,1
+
diff --git a/views/open_workshop_machine_views.xml b/views/open_workshop_machine_views.xml
new file mode 100644
index 0000000..5dc74e7
--- /dev/null
+++ b/views/open_workshop_machine_views.xml
@@ -0,0 +1,53 @@
+
+
+
+ Maschinen
+ open.workshop.machine
+ tree,form
+ Verwaltung aller Maschinen in der offenen Werkstatt
+
+
+
+
+
+
+
+ open.workshop.machine.tree
+ open.workshop.machine
+
+
+
+
+
+
+
+
+
+
+
+ open.workshop.machine.form
+ open.workshop.machine
+
+
+
+
+
+
diff --git a/views/open_workshop_training_views.xml b/views/open_workshop_training_views.xml
new file mode 100644
index 0000000..af07eee
--- /dev/null
+++ b/views/open_workshop_training_views.xml
@@ -0,0 +1,48 @@
+
+
+
+ Maschineneinweisungen
+ open.workshop.machine.training
+ tree,form
+ Verwaltung aller Maschineneinweisungen (Partner -> Maschine)
+
+
+
+
+
+ open.workshop.machine.training.tree
+ open.workshop.machine.training
+
+
+
+
+
+
+
+
+
+
+ open.workshop.machine.training.form
+ open.workshop.machine.training
+
+
+
+
+
+
diff --git a/views/res_partner_views.xml b/views/res_partner_views.xml
new file mode 100644
index 0000000..cf76d5f
--- /dev/null
+++ b/views/res_partner_views.xml
@@ -0,0 +1,30 @@
+
+
+
+ res.partner.form.open.workshop.inherit
+ res.partner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+