Switched URL to use asset_id rather than the database ID

This commit is contained in:
Matthew Smith
2019-12-04 20:13:09 +00:00
parent c4cad76653
commit 15acc02f74
8 changed files with 33 additions and 21 deletions

View File

@@ -100,7 +100,7 @@ class Asset(models.Model):
return row[0]
def get_absolute_url(self):
return reverse('asset_detail', kwargs={'pk': self.pk})
return reverse('asset_detail', kwargs={'pk': self.asset_id})
def __str__(self):
out = str(self.asset_id) + ' - ' + self.description

View File

@@ -16,7 +16,7 @@
</h1>
</div>
{% if duplicate %}
<form method="post" id="asset_update_form" action="{% url 'asset_duplicate' pk=previous_asset_pk%}">
<form method="post" id="asset_update_form" action="{% url 'asset_duplicate' pk=previous_asset_id%}">
{% else %}
<form method="post" id="asset_update_form" action="{% url 'asset_create'%}">
{% endif %}

View File

@@ -15,7 +15,7 @@
{% endif %}
</h1>
</div>
<form method="post" id="asset_update_form" action="{% url 'asset_update' pk=object.pk%}">
<form method="post" id="asset_update_form" action="{% url 'asset_update' pk=object.asset_id%}">
{% include 'form_errors.html' %}
{% csrf_token %}
<input type="hidden" name="id" value="{{ object.id|default:0 }}" hidden=true>

View File

@@ -11,15 +11,15 @@
{% else %}
<!--detail view-->
<div class="btn-group">
<a href="{% url 'asset_update' object.pk %}" class="btn btn-default"><i class="glyphicon glyphicon-edit"></i> Edit</a>
<a class="btn btn-default" href="{% url 'asset_duplicate' object.pk %}"><i class="glyphicon glyphicon-duplicate"></i> Duplicate</a>
<a href="{% url 'asset_update' object.asset_id %}" class="btn btn-default"><i class="glyphicon glyphicon-edit"></i> Edit</a>
<a class="btn btn-default" href="{% url 'asset_duplicate' object.asset_id %}"><i class="glyphicon glyphicon-duplicate"></i> Duplicate</a>
</div>
{% endif %}
{% if create or edit or duplicate %}
<br>
<button type="reset" class="btn btn-link" onclick="
{%if duplicate%}
{% url 'asset_detail' previous_asset_pk %}
{% url 'asset_detail' previous_asset_id %}
{%else%}
history.back(){%endif%}">Cancel</button>
{% endif %}

View File

@@ -11,17 +11,17 @@
info
{% endif %}
">
<td style="vertical-align: middle;"><a href="{% url 'asset_detail' item.pk %}">{{ item.asset_id }}</a></td>
<td style="vertical-align: middle;"><a href="{% url 'asset_detail' item.asset_id %}">{{ item.asset_id }}</a></td>
<td style="vertical-align: middle; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; max-width: 25vw">{{ item.description }}</td>
<td style="vertical-align: middle;">{{ item.category }}</td>
<td style="vertical-align: middle;">{{ item.status }}</td>
<td class="hidden-xs">
<div class="btn-group" role="group">
<a type="button" class="btn btn-default btn-sm" href="{% url 'asset_detail' item.pk %}"><i class="glyphicon glyphicon-eye-open"></i> View</a>
<a type="button" class="btn btn-default btn-sm" href="{% url 'asset_detail' item.asset_id %}"><i class="glyphicon glyphicon-eye-open"></i> View</a>
{% if perms.assets.change_asset %}
<a type="button" class="btn btn-default btn-sm" href="{% url 'asset_update' item.pk %}"><i class="glyphicon glyphicon-edit"></i> Edit</a>
<a type="button" class="btn btn-default btn-sm" href="{% url 'asset_duplicate' item.pk %}"><i class="glyphicon glyphicon-duplicate"></i> Duplicate</a>
<a type="button" class="btn btn-default btn-sm" href="{% url 'asset_update' item.asset_id %}"><i class="glyphicon glyphicon-edit"></i> Edit</a>
<a type="button" class="btn btn-default btn-sm" href="{% url 'asset_duplicate' item.asset_id %}"><i class="glyphicon glyphicon-duplicate"></i> Duplicate</a>
{% endif %}
</div>
</td>

View File

@@ -15,7 +15,7 @@
<dt>Parent</dt>
<dd>
{% if object.parent %}
<a href="{% url 'asset_detail' object.parent.pk %}">
<a href="{% url 'asset_detail' object.parent.asset_id %}">
{{ object.parent.asset_id }} - {{ object.parent.description }}
</a>
{% else %}
@@ -27,7 +27,7 @@
{% if object.asset_parent.all %}
{% for child in object.asset_parent.all %}
<dd>
<a href="{% url 'asset_detail' child.pk %}">
<a href="{% url 'asset_detail' child.asset_id %}">
{{ child.asset_id }} - {{ child.description }}
</a>
</dd>

View File

@@ -6,10 +6,10 @@ from PyRIGS.decorators import permission_required_with_403
urlpatterns = [
path('', views.AssetList.as_view(), name='asset_index'),
path('asset/list/', views.AssetList.as_view(), name='asset_list'),
path('asset/<int:pk>/', views.AssetDetail.as_view(), name='asset_detail'),
path('asset/id/<str:pk>/', views.AssetDetail.as_view(), name='asset_detail'),
path('asset/create/', permission_required_with_403('assets.create_asset')(views.AssetCreate.as_view()), name='asset_create'),
path('asset/<int:pk>/edit/', permission_required_with_403('assets.change_asset')(views.AssetEdit.as_view()), name='asset_update'),
path('asset/<int:pk>/duplicate/', permission_required_with_403('assets.create_asset')(views.AssetDuplicate.as_view()), name='asset_duplicate'),
path('asset/id/<str:pk>/edit/', permission_required_with_403('assets.change_asset')(views.AssetEdit.as_view()), name='asset_update'),
path('asset/id/<str:pk>/duplicate/', permission_required_with_403('assets.create_asset')(views.AssetDuplicate.as_view()), name='asset_duplicate'),
path('asset/search/', views.AssetSearch.as_view(), name='asset_search_json'),

View File

@@ -65,12 +65,25 @@ class AssetSearch(AssetList):
return JsonResponse(result, safe=False)
class AssetDetail(LoginRequiredMixin, generic.DetailView):
class AssetIDUrlMixin:
def get_object(self, queryset=None):
pk = self.kwargs.get(self.pk_url_kwarg)
queryset = models.Asset.objects.filter(asset_id=pk)
try:
# Get the single item from the filtered queryset
obj = queryset.get()
except queryset.model.DoesNotExist:
raise Http404(_("No %(verbose_name)s found matching the query") %
{'verbose_name': queryset.model._meta.verbose_name})
return obj
class AssetDetail(LoginRequiredMixin, AssetIDUrlMixin, generic.DetailView):
model = models.Asset
template_name = 'asset_update.html'
class AssetEdit(LoginRequiredMixin, generic.UpdateView):
class AssetEdit(LoginRequiredMixin, AssetIDUrlMixin, generic.UpdateView):
template_name = 'asset_update.html'
model = models.Asset
form_class = forms.AssetForm
@@ -83,7 +96,7 @@ class AssetEdit(LoginRequiredMixin, generic.UpdateView):
return context
def get_success_url(self):
return reverse("asset_detail", kwargs={"pk": self.object.id})
return reverse("asset_detail", kwargs={"pk": self.object.asset_id})
class AssetCreate(LoginRequiredMixin, generic.CreateView):
@@ -104,7 +117,7 @@ class AssetCreate(LoginRequiredMixin, generic.CreateView):
return initial
def get_success_url(self):
return reverse("asset_detail", kwargs={"pk": self.object.id})
return reverse("asset_detail", kwargs={"pk": self.object.asset_id})
class DuplicateMixin:
@@ -114,7 +127,7 @@ class DuplicateMixin:
return self.render_to_response(self.get_context_data())
class AssetDuplicate(DuplicateMixin, AssetCreate):
class AssetDuplicate(DuplicateMixin, AssetIDUrlMixin, AssetCreate):
model = models.Asset
def get_context_data(self, **kwargs):
@@ -122,7 +135,6 @@ class AssetDuplicate(DuplicateMixin, AssetCreate):
context["create"] = None
context["duplicate"] = True
context['previous_asset_id'] = self.get_object().asset_id
context["previous_asset_pk"] = self.kwargs.get(self.pk_url_kwarg)
return context