1
0
Fork 0

You can now print Items, w/o explicitly defining Labels

This commit is contained in:
radex 2020-05-20 23:23:23 +02:00 committed by Piotr Dobrowolski
parent 2e0c031fab
commit 5160052dfd
3 changed files with 26 additions and 16 deletions

View File

@ -72,6 +72,15 @@ class ItemViewSet(viewsets.ModelViewSet):
except Label.DoesNotExist: except Label.DoesNotExist:
raise Http404() raise Http404()
@detail_route(methods=['post'], permission_classes=[AllowAny])
def print(self, request, pk):
# todo: deduplicate
quantity = min(int(request.query_params.get('quantity', 1)), 5)
obj = self.get_object()
for _ in range(quantity):
obj.print()
return obj
@detail_route() @detail_route()
def children(self, request, pk): def children(self, request, pk):
item = self.get_object() item = self.get_object()

View File

@ -89,6 +89,12 @@ class Item(models.Model, TreeModelMixin):
def primary_category(self): def primary_category(self):
return next((c for c in self.categories.all() if c.icon_id), None) return next((c for c in self.categories.all() if c.icon_id), None)
def print(self):
# todo: deduplicate
resp = requests.post(
'{}/api/1/print/{}'.format(settings.LABEL_API, self.short_id()))
resp.raise_for_status()
class Meta: class Meta:
ordering = ('path',) ordering = ('path',)

View File

@ -18,21 +18,16 @@
<div class="col-md-4"> <div class="col-md-4">
<iframe name="printframe" style="display: none"></iframe> <iframe name="printframe" style="display: none"></iframe>
{% for label in labels %}
<div class="label-item"> <div class="label-item">
<form action="/api/1/labels/{{ label.id }}/print/?quantity=2" method="POST" target="printframe" onsubmit="return confirm('Want to print 2 labels?')" style="display:inline-block"> <form action="/api/1/items/{{ item.short_id }}/print/?quantity=2" method="POST" target="printframe" onsubmit="return confirm('Want to print 2 labels?')" style="display:inline-block">
{% csrf_token %} {% csrf_token %}
<button class="btn btn-default btn-lg btn-primary"><i class="glyphicon glyphicon-print"></i>&nbsp;&nbsp;PRINT&nbsp;x&nbsp;2</button> <button class="btn btn-default btn-lg btn-primary"><i class="glyphicon glyphicon-print"></i>&nbsp;&nbsp;PRINT&nbsp;x&nbsp;2</button>
</form> </form>
<form action="/api/1/labels/{{ label.id }}/print/" method="POST" target="printframe" onsubmit="return confirm('Want to print this labels?')" style="display:inline-block"> <form action="/api/1/items/{{ item.short_id }}/print/" method="POST" target="printframe" onsubmit="return confirm('Want to print this labels?')" style="display:inline-block">
{% csrf_token %} {% csrf_token %}
<button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-print"></i></button> <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-print"></i></button>
{% if not has_one_label %}
<code>{{ label.id }}</code>
{% endif %}
</form> </form>
</div> </div>
{% endfor %}
<table class="table table-hover table-striped"> <table class="table table-hover table-striped">
{% if item.owner %} {% if item.owner %}
@ -75,7 +70,7 @@
{% endfor %} {% endfor %}
{% if labels %} {% if labels %}
<tr><td>a.k.a.</td><td> <tr><td>legacy labels</td><td>
{% for label in labels %} {% for label in labels %}
<code>{{ label.id }}</code>, <code>{{ label.id }}</code>,
{% endfor %} {% endfor %}