diff --git a/computers/forms.py b/computers/forms.py index 86a490c..802b89c 100644 --- a/computers/forms.py +++ b/computers/forms.py @@ -4,6 +4,7 @@ from core import utils from computers.models import Computer from computers.models import ComputerCpuRelation +from computers.models import ComputerDiskRelation from computers.models import ComputerGpuRelation from computers.models import ComputerRamRelation @@ -63,3 +64,10 @@ class ComputerGpuRelationCreateForm(forms.ModelForm): fields = '__all__' +class ComputerDiskRelationCreateForm(forms.ModelForm): + """ + Basic form class to use crispies HTML5 forms. + """ + class Meta: + model = ComputerDiskRelation + fields = '__all__' diff --git a/computers/templates/computers/computer_details.html b/computers/templates/computers/computer_details.html index 9443519..87db934 100644 --- a/computers/templates/computers/computer_details.html +++ b/computers/templates/computers/computer_details.html @@ -91,9 +91,9 @@

Disks:

{% for disk in disks_relations %} - {{ disk.amount }}x {{ disk.disk }}
+ {{ disk.amount }}x {{ disk.disk }} clear
{% endfor %} -

add

+

add

RAID

{% for raid, disks in raid_disk_pairs.items %} diff --git a/computers/templates/computers/disk_relation_create.html b/computers/templates/computers/disk_relation_create.html new file mode 100644 index 0000000..9d3a336 --- /dev/null +++ b/computers/templates/computers/disk_relation_create.html @@ -0,0 +1,14 @@ +{% extends "core/base.html" %} +{% load crispy_forms_tags %} + +{% block section_title %}Add RAM{% endblock %} +{% block content %} +
+
+ {% csrf_token %} + {{ form|crispy }} + + Cancel +
+
+{% endblock %} diff --git a/computers/urls.py b/computers/urls.py index cb43720..60a1af4 100644 --- a/computers/urls.py +++ b/computers/urls.py @@ -38,4 +38,10 @@ urlpatterns = [ path('delete/gpu-relation//', views.ComputerGpuRelationDeleteView.as_view(), name='gpu_relation_delete'), + path('create/disk-relation//', + views.ComputerDiskRelationCreateView.as_view(), + name='disk_relation_create'), + path('delete/disk-relation//', + views.ComputerDiskRelationDeleteView.as_view(), + name='disk_relation_delete'), ] diff --git a/computers/views.py b/computers/views.py index ca13ded..d48b51d 100644 --- a/computers/views.py +++ b/computers/views.py @@ -24,6 +24,7 @@ from .filters import ComputerFilter from .forms import ComputerCreateForm from .forms import ComputerUpdateForm from .forms import ComputerCpuRelationCreateForm +from .forms import ComputerDiskRelationCreateForm from .forms import ComputerGpuRelationCreateForm from .forms import ComputerRamRelationCreateForm from .models import Computer @@ -219,6 +220,28 @@ class ComputerGpuRelationDeleteView(LoginRequiredMixin, DeleteView): return reverse('computer', args=(self.object.computer.pk,)) +class ComputerDiskRelationCreateView(LoginRequiredMixin, CreateView): + model = ComputerDiskRelation + form_class = ComputerDiskRelationCreateForm + template_name = 'computers/disk_relation_create.html' + + def get_success_url(self): + return reverse('computer', args=(self.computer.pk,)) + + def get_initial(self): + """ + Set the device and customer dropdown to the device from the previous + view and the customer related to the device. + """ + self.computer = get_object_or_404(Computer, id=self.kwargs.get('pk')) + return { + 'computer': self.computer, + } + + +class ComputerDiskRelationDeleteView(LoginRequiredMixin, DeleteView): + model = ComputerDiskRelation + template_name = 'computers/relation_confirm_delete.html' def get_success_url(self): return reverse('computer', args=(self.object.computer.pk,))