Implement bulk print
parent
967d2079dc
commit
f91c854363
|
@ -163,14 +163,7 @@ class FaceshieldRequestAdmin(ModelView):
|
|||
@flask_admin.expose('/label/html')
|
||||
def label_html(self):
|
||||
model = self.get_one(request.args.get('id'))
|
||||
|
||||
if model.faceshield_full_delivered % 150 == 0 and model.faceshield_full_delivered // 150 > 1:
|
||||
label_count = model.faceshield_full_delivered // 150
|
||||
else:
|
||||
label_count = 1
|
||||
|
||||
return self.render('label.html', model=model, label_count=label_count)
|
||||
|
||||
return self.render('label.html', models=[model])
|
||||
|
||||
def bulk_status_change(self, ids, status):
|
||||
try:
|
||||
|
@ -212,6 +205,10 @@ class FaceshieldRequestAdmin(ModelView):
|
|||
def action_pickuppending(self, ids):
|
||||
self.bulk_status_change(ids, Status.pickuppending)
|
||||
|
||||
@flask_admin.actions.action('bulkprint', 'Print')
|
||||
def action_bulkprint(self, ids):
|
||||
models = self.get_query().filter(FaceshieldRequest.id.in_(ids)).all()
|
||||
return render_pdf(HTML(string=self.render('label.html', models=models)))
|
||||
|
||||
class FilteredFaceshieldRequestAdmin(FaceshieldRequestAdmin):
|
||||
def get_query(self):
|
||||
|
|
|
@ -70,6 +70,12 @@ class FaceshieldRequest(db.Model):
|
|||
def __str__(self):
|
||||
return '#{} {} ({})'.format(self.id, self.entity_info, self.status.name)
|
||||
|
||||
@property
|
||||
def label_count(self):
|
||||
if self.faceshield_full_delivered % 150 == 0 and self.faceshield_full_delivered // 150 > 1:
|
||||
return self.faceshield_full_delivered // 150
|
||||
return 1
|
||||
|
||||
|
||||
class RequestChange(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
|
|
|
@ -64,11 +64,12 @@ html, body {
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
{% for label_id in range(label_count) %}
|
||||
{% for model in models %}
|
||||
{% for label_id in range(model.label_count) %}
|
||||
<div class="container">
|
||||
<div class="line idline">
|
||||
<small>Warszawski Hackerspace / <u>https://covid.hackerspace.pl</u> / <b>{{ model.status.name }}</b></small>
|
||||
{{ model.faceshield_full_delivered }} <b>#{{ model.id }}</b>{% if label_count > 1 %} <small class="labelid">({{ label_id + 1 }}/{{ label_count }})</small>{% endif %}
|
||||
{{ model.faceshield_full_delivered }} <b>#{{ model.id }}</b>{% if model.label_count > 1 %} <small class="labelid">({{ label_id + 1 }}/{{ model.label_count }})</small>{% endif %}
|
||||
</div>
|
||||
<div class="line mark">
|
||||
{{ model.entity_info }}<br />
|
||||
|
@ -81,5 +82,6 @@ html, body {
|
|||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Reference in New Issue