diff --git a/assets/forms.py b/assets/forms.py index c727a9d1..a7d4d052 100644 --- a/assets/forms.py +++ b/assets/forms.py @@ -1,4 +1,5 @@ from django import forms +from django.core.exceptions import ValidationError from assets import models @@ -7,7 +8,15 @@ class AssetForm(forms.ModelForm): class Meta: model = models.Asset fields = '__all__' + + def __init__(self, *args, **kwargs): + super(AssetForm, self).__init__(*args, **kwargs) + self.fields['asset_id'].disabled = True #You should not be able to change the asset ID, either in update or create + def clean_date_sold(self): + if self.cleaned_data["date_sold"] and self.cleaned_data["date_acquired"] > self.cleaned_data["date_sold"]: + raise ValidationError("Cannot sell an item before it is acquired") + return self.cleaned_data["date_sold"] class SupplierForm(forms.ModelForm): class Meta: diff --git a/assets/templates/asset_update.html b/assets/templates/asset_update.html index 6c3de1e0..3b906aad 100644 --- a/assets/templates/asset_update.html +++ b/assets/templates/asset_update.html @@ -19,7 +19,11 @@ {% endif %} - +{% if create %} +
+{% else %} + +{% endif %}
@@ -27,7 +31,6 @@
- {% csrf_token %}
@@ -76,7 +79,7 @@ {% render_field form.serial_number|add_class:'form-control' value=object.serial_number %}
- +
{% render_field form.comments|add_class:'form-control' %} @@ -143,16 +146,20 @@ {% if object.date_acquired %} - {% render_field form.date_acquired|add_class:'form-control'|attr:'type="date"' value=object.date_acquired|date %} + {% with date_acq=object.date_acquired|date:"Y-m-d" %} + {% render_field form.date_acquired|add_class:'form-control'|attr:'type="date"' value=date_acq %} + {% endwith %} {% else %} - {% endif %}
- {% render_field form.date_sold|add_class:'form-control'|attr:'type="date"' value=object.date_sold|date %} + {% with date_sol=object.form.date_sold|date:"Y-m-d" %} + {% render_field form.date_sold|add_class:'form-control'|attr:'type="date"' value=date_sol %} + {% endwith %}
{% else %}
@@ -242,71 +249,15 @@ +
+
+ {% include 'partials/asset_buttons.html' %} +
+
-
-
- {% include 'partials/asset_buttons.html' %} -
-
+ {% include 'partials/confirm_delete.html' with object=object %} -{% endblock %} - -{% block js %} - - -{# #} - - - - -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/assets/templates/partials/asset_buttons.html b/assets/templates/partials/asset_buttons.html index d752e254..25eeac9c 100644 --- a/assets/templates/partials/asset_buttons.html +++ b/assets/templates/partials/asset_buttons.html @@ -1,16 +1,16 @@
{% if edit and object %} - + Duplicate Delete {% elif duplicate %} - + Cancel - {% elif not object %} + {% elif create %} - + {% else %} Edit diff --git a/assets/urls.py b/assets/urls.py index dcdf5569..900f4c33 100644 --- a/assets/urls.py +++ b/assets/urls.py @@ -10,7 +10,7 @@ urlpatterns = [ path('', views.AssetList.as_view(), name='index'), path('asset/list/', views.AssetList.as_view(), name='asset_list'), path('asset//', views.AssetDetail.as_view(), name='asset_detail'), - path('asset/create/', views.AssetEdit.as_view(), name='asset_create'), + path('asset/create/', views.AssetCreate.as_view(), name='asset_create'), path('asset//edit/', views.AssetEdit.as_view(), name='asset_update'), path('asset/delete/', views.asset_delete, name='ajax_asset_delete'), path('asset/update/', views.asset_update, name='ajax_asset_update'), diff --git a/assets/views.py b/assets/views.py index 62402a95..037937f4 100644 --- a/assets/views.py +++ b/assets/views.py @@ -53,8 +53,10 @@ class AssetDetail(LoginRequiredMixin, generic.DetailView): # template_name = 'asset_update.html' # # success_url = reverse_lazy('asset_list') -class AssetEdit(LoginRequiredMixin, generic.TemplateView): +class AssetEdit(LoginRequiredMixin, generic.UpdateView): template_name = 'asset_update.html' + model = models.Asset + form_class = forms.AssetForm def get_context_data(self, **kwargs): context = super(AssetEdit, self).get_context_data(**kwargs) @@ -75,6 +77,19 @@ class AssetEdit(LoginRequiredMixin, generic.TemplateView): return context + def get_success_url(self): + return reverse("asset_detail", kwargs={"pk":self.object.id}) + +class AssetCreate(LoginRequiredMixin, generic.CreateView): + template_name = 'asset_update.html' + model = models.Asset + form_class = forms.AssetForm + + def get_context_data(self, **kwargs): + context = super(AssetCreate, self).get_context_data(**kwargs) + context["create"] = True + return context + @login_required() def asset_update(request): context = dict()