Initial label printing integration
This commit is contained in:
parent
3fe571c32b
commit
c4c21e0ec1
|
@ -1,3 +1,5 @@
|
||||||
|
certifi==2017.4.17
|
||||||
|
chardet==3.0.3
|
||||||
Django==1.10.1
|
Django==1.10.1
|
||||||
git+https://github.com/djangonauts/django-hstore@61427e474cb2f4be8fdfce225d78a5330bc77eb0#egg=django-hstore
|
git+https://github.com/djangonauts/django-hstore@61427e474cb2f4be8fdfce225d78a5330bc77eb0#egg=django-hstore
|
||||||
git+https://github.com/informatic/django-tree@993cec827ed989d3c162698a739da95b9227604b#egg=django-tree
|
git+https://github.com/informatic/django-tree@993cec827ed989d3c162698a739da95b9227604b#egg=django-tree
|
||||||
|
@ -9,3 +11,5 @@ Pillow==3.3.1
|
||||||
psycopg2==2.6.2
|
psycopg2==2.6.2
|
||||||
djangorestframework-hstore==1.3
|
djangorestframework-hstore==1.3
|
||||||
pyldap==2.4.28
|
pyldap==2.4.28
|
||||||
|
requests==2.16.5
|
||||||
|
urllib3==1.21.1
|
||||||
|
|
|
@ -182,3 +182,5 @@ REST_FRAMEWORK = {
|
||||||
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
|
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LABEL_API = 'http://label.waw.hackerspace.pl:5678'
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.1 on 2017-05-28 19:45
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.utils.timezone
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('storage', '0003_auto_20170424_2002'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='label',
|
||||||
|
name='revision',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='label',
|
||||||
|
name='created',
|
||||||
|
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='label',
|
||||||
|
name='style',
|
||||||
|
field=models.CharField(choices=[('basic_99012_v1', 'Basic Dymo 89x36mm label')], default='basic_99012_v1', max_length=32),
|
||||||
|
),
|
||||||
|
]
|
|
@ -1,13 +1,17 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
import re
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django_hstore import hstore
|
from django_hstore import hstore
|
||||||
import uuid
|
|
||||||
|
|
||||||
from tree.fields import PathField
|
from tree.fields import PathField
|
||||||
from tree.models import TreeModelMixin
|
from tree.models import TreeModelMixin
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
STATES = (
|
STATES = (
|
||||||
('present', 'Present'),
|
('present', 'Present'),
|
||||||
|
@ -17,7 +21,6 @@ STATES = (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
class Category(models.Model):
|
class Category(models.Model):
|
||||||
name = models.CharField(max_length=127)
|
name = models.CharField(max_length=127)
|
||||||
|
|
||||||
|
@ -53,6 +56,17 @@ class Item(models.Model, TreeModelMixin):
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
return reverse('item-display', kwargs={'pk': str(self.pk)})
|
return reverse('item-display', kwargs={'pk': str(self.pk)})
|
||||||
|
|
||||||
|
def get_or_create_label(self, **kwargs):
|
||||||
|
defaults = {
|
||||||
|
'id': re.sub('[^A-Z0-9]', '', self.name.upper())[:16],
|
||||||
|
}
|
||||||
|
|
||||||
|
defaults.update(kwargs)
|
||||||
|
|
||||||
|
obj, created = self.labels.get_or_create(**kwargs, defaults=defaults)
|
||||||
|
|
||||||
|
return obj
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('path',)
|
ordering = ('path',)
|
||||||
|
|
||||||
|
@ -65,4 +79,15 @@ class ItemImage(models.Model):
|
||||||
class Label(models.Model):
|
class Label(models.Model):
|
||||||
id = models.CharField(max_length=64, primary_key=True)
|
id = models.CharField(max_length=64, primary_key=True)
|
||||||
item = models.ForeignKey(Item, related_name='labels')
|
item = models.ForeignKey(Item, related_name='labels')
|
||||||
revision = models.IntegerField()
|
style = models.CharField(max_length=32, choices=(
|
||||||
|
('basic_99012_v1', 'Basic Dymo 89x36mm label'),
|
||||||
|
), default='basic_99012_v1')
|
||||||
|
created = models.DateTimeField(auto_now_add=True, blank=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.id
|
||||||
|
|
||||||
|
def print(self):
|
||||||
|
resp = requests.post(
|
||||||
|
'{}/api/1/print/{}'.format(settings.LABEL_API, self.id))
|
||||||
|
resp.raise_for_status()
|
||||||
|
|
|
@ -12,4 +12,4 @@ class LabelSerializer(serializers.ModelSerializer):
|
||||||
item = ItemSerializer()
|
item = ItemSerializer()
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Label
|
model = Label
|
||||||
fields = ('id', 'item', 'revision')
|
fields = ('id', 'item', 'style')
|
||||||
|
|
Loading…
Reference in New Issue