Merge remote-tracking branch 'inventree/master'
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 198 KiB |
@ -9,7 +9,7 @@ from django_filters.rest_framework import DjangoFilterBackend
|
|||||||
from rest_framework import generics, permissions
|
from rest_framework import generics, permissions
|
||||||
from rest_framework import filters
|
from rest_framework import filters
|
||||||
|
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url, include
|
||||||
|
|
||||||
from InvenTree.helpers import str2bool
|
from InvenTree.helpers import str2bool
|
||||||
|
|
||||||
@ -17,10 +17,12 @@ from part.models import Part
|
|||||||
from company.models import SupplierPart
|
from company.models import SupplierPart
|
||||||
|
|
||||||
from .models import PurchaseOrder, PurchaseOrderLineItem
|
from .models import PurchaseOrder, PurchaseOrderLineItem
|
||||||
from .serializers import POSerializer, POLineItemSerializer
|
from .models import PurchaseOrderAttachment
|
||||||
|
from .serializers import POSerializer, POLineItemSerializer, POAttachmentSerializer
|
||||||
|
|
||||||
from .models import SalesOrder, SalesOrderLineItem
|
from .models import SalesOrder, SalesOrderLineItem
|
||||||
from .serializers import SalesOrderSerializer, SOLineItemSerializer
|
from .models import SalesOrderAttachment
|
||||||
|
from .serializers import SalesOrderSerializer, SOLineItemSerializer, SOAttachmentSerializer
|
||||||
|
|
||||||
|
|
||||||
class POList(generics.ListCreateAPIView):
|
class POList(generics.ListCreateAPIView):
|
||||||
@ -198,6 +200,25 @@ class POLineItemDetail(generics.RetrieveUpdateAPIView):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SOAttachmentList(generics.ListCreateAPIView):
|
||||||
|
"""
|
||||||
|
API endpoint for listing (and creating) a SalesOrderAttachment (file upload)
|
||||||
|
"""
|
||||||
|
|
||||||
|
queryset = SalesOrderAttachment.objects.all()
|
||||||
|
serializer_class = SOAttachmentSerializer
|
||||||
|
|
||||||
|
filter_backends = [
|
||||||
|
DjangoFilterBackend,
|
||||||
|
filters.OrderingFilter,
|
||||||
|
filters.SearchFilter,
|
||||||
|
]
|
||||||
|
|
||||||
|
filter_fields = [
|
||||||
|
'order',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class SOList(generics.ListCreateAPIView):
|
class SOList(generics.ListCreateAPIView):
|
||||||
"""
|
"""
|
||||||
API endpoint for accessing a list of SalesOrder objects.
|
API endpoint for accessing a list of SalesOrder objects.
|
||||||
@ -378,10 +399,32 @@ class SOLineItemDetail(generics.RetrieveUpdateAPIView):
|
|||||||
permission_classes = [permissions.IsAuthenticated]
|
permission_classes = [permissions.IsAuthenticated]
|
||||||
|
|
||||||
|
|
||||||
|
class POAttachmentList(generics.ListCreateAPIView):
|
||||||
|
"""
|
||||||
|
API endpoint for listing (and creating) a PurchaseOrderAttachment (file upload)
|
||||||
|
"""
|
||||||
|
|
||||||
|
queryset = PurchaseOrderAttachment.objects.all()
|
||||||
|
serializer_class = POAttachmentSerializer
|
||||||
|
|
||||||
|
filter_backends = [
|
||||||
|
DjangoFilterBackend,
|
||||||
|
filters.OrderingFilter,
|
||||||
|
filters.SearchFilter,
|
||||||
|
]
|
||||||
|
|
||||||
|
filter_fields = [
|
||||||
|
'order',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
order_api_urls = [
|
order_api_urls = [
|
||||||
# API endpoints for purchase orders
|
# API endpoints for purchase orders
|
||||||
url(r'^po/(?P<pk>\d+)/$', PODetail.as_view(), name='api-po-detail'),
|
url(r'^po/(?P<pk>\d+)/$', PODetail.as_view(), name='api-po-detail'),
|
||||||
url(r'^po/$', POList.as_view(), name='api-po-list'),
|
url(r'po/attachment/', include([
|
||||||
|
url(r'^.*$', POAttachmentList.as_view(), name='api-po-attachment-list'),
|
||||||
|
])),
|
||||||
|
url(r'^po/.*$', POList.as_view(), name='api-po-list'),
|
||||||
|
|
||||||
# API endpoints for purchase order line items
|
# API endpoints for purchase order line items
|
||||||
url(r'^po-line/(?P<pk>\d+)/$', POLineItemDetail.as_view(), name='api-po-line-detail'),
|
url(r'^po-line/(?P<pk>\d+)/$', POLineItemDetail.as_view(), name='api-po-line-detail'),
|
||||||
@ -389,7 +432,11 @@ order_api_urls = [
|
|||||||
|
|
||||||
# API endpoints for sales ordesr
|
# API endpoints for sales ordesr
|
||||||
url(r'^so/(?P<pk>\d+)/$', SODetail.as_view(), name='api-so-detail'),
|
url(r'^so/(?P<pk>\d+)/$', SODetail.as_view(), name='api-so-detail'),
|
||||||
url(r'^so/$', SOList.as_view(), name='api-so-list'),
|
url(r'so/attachment/', include([
|
||||||
|
url(r'^.*$', SOAttachmentList.as_view(), name='api-so-attachment-list'),
|
||||||
|
])),
|
||||||
|
|
||||||
|
url(r'^so/.*$', SOList.as_view(), name='api-so-list'),
|
||||||
|
|
||||||
# API endpoints for sales order line items
|
# API endpoints for sales order line items
|
||||||
url(r'^so-line/(?P<pk>\d+)/$', SOLineItemDetail.as_view(), name='api-so-line-detail'),
|
url(r'^so-line/(?P<pk>\d+)/$', SOLineItemDetail.as_view(), name='api-so-line-detail'),
|
||||||
|
@ -14,6 +14,7 @@ from company.serializers import CompanyBriefSerializer, SupplierPartSerializer
|
|||||||
from part.serializers import PartBriefSerializer
|
from part.serializers import PartBriefSerializer
|
||||||
|
|
||||||
from .models import PurchaseOrder, PurchaseOrderLineItem
|
from .models import PurchaseOrder, PurchaseOrderLineItem
|
||||||
|
from .models import PurchaseOrderAttachment, SalesOrderAttachment
|
||||||
from .models import SalesOrder, SalesOrderLineItem
|
from .models import SalesOrder, SalesOrderLineItem
|
||||||
from .models import SalesOrderAllocation
|
from .models import SalesOrderAllocation
|
||||||
|
|
||||||
@ -106,6 +107,22 @@ class POLineItemSerializer(InvenTreeModelSerializer):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class POAttachmentSerializer(InvenTreeModelSerializer):
|
||||||
|
"""
|
||||||
|
Serializers for the PurchaseOrderAttachment model
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = PurchaseOrderAttachment
|
||||||
|
|
||||||
|
fields = [
|
||||||
|
'pk',
|
||||||
|
'order',
|
||||||
|
'attachment',
|
||||||
|
'comment',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class SalesOrderSerializer(InvenTreeModelSerializer):
|
class SalesOrderSerializer(InvenTreeModelSerializer):
|
||||||
"""
|
"""
|
||||||
Serializers for the SalesOrder object
|
Serializers for the SalesOrder object
|
||||||
@ -231,3 +248,19 @@ class SOLineItemSerializer(InvenTreeModelSerializer):
|
|||||||
'part',
|
'part',
|
||||||
'part_detail',
|
'part_detail',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SOAttachmentSerializer(InvenTreeModelSerializer):
|
||||||
|
"""
|
||||||
|
Serializers for the SalesOrderAttachment model
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = SalesOrderAttachment
|
||||||
|
|
||||||
|
fields = [
|
||||||
|
'pk',
|
||||||
|
'order',
|
||||||
|
'attachment',
|
||||||
|
'comment',
|
||||||
|
]
|
||||||
|
@ -31,7 +31,7 @@ class OrderTest(APITestCase):
|
|||||||
|
|
||||||
return self.client.get(url + "?" + options, format='json')
|
return self.client.get(url + "?" + options, format='json')
|
||||||
|
|
||||||
def test_po_list(self,):
|
def test_po_list(self):
|
||||||
|
|
||||||
url = reverse('api-po-list')
|
url = reverse('api-po-list')
|
||||||
|
|
||||||
@ -42,3 +42,19 @@ class OrderTest(APITestCase):
|
|||||||
# Filter by stuff
|
# Filter by stuff
|
||||||
response = self.doGet(url, 'status=10&part=1&supplier_part=1')
|
response = self.doGet(url, 'status=10&part=1&supplier_part=1')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
def test_po_attachments(self):
|
||||||
|
|
||||||
|
url = reverse('api-po-attachment-list')
|
||||||
|
|
||||||
|
response = self.doGet(url)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
def test_so_attachments(self):
|
||||||
|
|
||||||
|
url = reverse('api-so-attachment-list')
|
||||||
|
|
||||||
|
response = self.doGet(url)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
@ -19,6 +19,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
from .models import Part, PartCategory, BomItem, PartStar
|
from .models import Part, PartCategory, BomItem, PartStar
|
||||||
from .models import PartParameter, PartParameterTemplate
|
from .models import PartParameter, PartParameterTemplate
|
||||||
|
from .models import PartAttachment
|
||||||
|
|
||||||
from . import serializers as part_serializers
|
from . import serializers as part_serializers
|
||||||
|
|
||||||
@ -105,6 +106,27 @@ class CategoryDetail(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
queryset = PartCategory.objects.all()
|
queryset = PartCategory.objects.all()
|
||||||
|
|
||||||
|
|
||||||
|
class PartAttachmentList(generics.ListCreateAPIView):
|
||||||
|
"""
|
||||||
|
API endpoint for listing (and creating) a PartAttachment (file upload).
|
||||||
|
"""
|
||||||
|
|
||||||
|
queryset = PartAttachment.objects.all()
|
||||||
|
serializer_class = part_serializers.PartAttachmentSerializer
|
||||||
|
|
||||||
|
permission_classes = [permissions.IsAuthenticated]
|
||||||
|
|
||||||
|
filter_backends = [
|
||||||
|
DjangoFilterBackend,
|
||||||
|
filters.OrderingFilter,
|
||||||
|
filters.SearchFilter,
|
||||||
|
]
|
||||||
|
|
||||||
|
filter_fields = [
|
||||||
|
'part',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class PartThumbs(generics.ListAPIView):
|
class PartThumbs(generics.ListAPIView):
|
||||||
""" API endpoint for retrieving information on available Part thumbnails """
|
""" API endpoint for retrieving information on available Part thumbnails """
|
||||||
|
|
||||||
@ -618,33 +640,31 @@ class BomItemValidate(generics.UpdateAPIView):
|
|||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
cat_api_urls = [
|
|
||||||
|
|
||||||
url(r'^(?P<pk>\d+)/?', CategoryDetail.as_view(), name='api-part-category-detail'),
|
|
||||||
|
|
||||||
url(r'^$', CategoryList.as_view(), name='api-part-category-list'),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
part_star_api_urls = [
|
|
||||||
url(r'^(?P<pk>\d+)/?', PartStarDetail.as_view(), name='api-part-star-detail'),
|
|
||||||
|
|
||||||
# Catchall
|
|
||||||
url(r'^.*$', PartStarList.as_view(), name='api-part-star-list'),
|
|
||||||
]
|
|
||||||
|
|
||||||
part_param_api_urls = [
|
|
||||||
url(r'^template/$', PartParameterTemplateList.as_view(), name='api-part-param-template-list'),
|
|
||||||
|
|
||||||
url(r'^.*$', PartParameterList.as_view(), name='api-part-param-list'),
|
|
||||||
]
|
|
||||||
|
|
||||||
part_api_urls = [
|
part_api_urls = [
|
||||||
url(r'^tree/?', PartCategoryTree.as_view(), name='api-part-tree'),
|
url(r'^tree/?', PartCategoryTree.as_view(), name='api-part-tree'),
|
||||||
|
|
||||||
url(r'^category/', include(cat_api_urls)),
|
# Base URL for PartCategory API endpoints
|
||||||
url(r'^star/', include(part_star_api_urls)),
|
url(r'^category/', include([
|
||||||
url(r'^parameter/', include(part_param_api_urls)),
|
url(r'^(?P<pk>\d+)/?', CategoryDetail.as_view(), name='api-part-category-detail'),
|
||||||
|
url(r'^$', CategoryList.as_view(), name='api-part-category-list'),
|
||||||
|
])),
|
||||||
|
|
||||||
|
# Base URL for PartAttachment API endpoints
|
||||||
|
url(r'attachment/', include([
|
||||||
|
url(r'^$', PartAttachmentList.as_view(), name='api-part-attachment-list'),
|
||||||
|
])),
|
||||||
|
|
||||||
|
# Base URL for PartStar API endpoints
|
||||||
|
url(r'^star/', include([
|
||||||
|
url(r'^(?P<pk>\d+)/?', PartStarDetail.as_view(), name='api-part-star-detail'),
|
||||||
|
url(r'^$', PartStarList.as_view(), name='api-part-star-list'),
|
||||||
|
])),
|
||||||
|
|
||||||
|
# Base URL for PartParameter API endpoints
|
||||||
|
url(r'^parameter/', include([
|
||||||
|
url(r'^template/$', PartParameterTemplateList.as_view(), name='api-part-param-template-list'),
|
||||||
|
url(r'^.*$', PartParameterList.as_view(), name='api-part-param-list'),
|
||||||
|
])),
|
||||||
|
|
||||||
url(r'^thumbs/', PartThumbs.as_view(), name='api-part-thumbs'),
|
url(r'^thumbs/', PartThumbs.as_view(), name='api-part-thumbs'),
|
||||||
|
|
||||||
@ -653,16 +673,12 @@ part_api_urls = [
|
|||||||
url(r'^.*$', PartList.as_view(), name='api-part-list'),
|
url(r'^.*$', PartList.as_view(), name='api-part-list'),
|
||||||
]
|
]
|
||||||
|
|
||||||
bom_item_urls = [
|
|
||||||
|
|
||||||
url(r'^validate/?', BomItemValidate.as_view(), name='api-bom-item-validate'),
|
|
||||||
|
|
||||||
url(r'^.*$', BomDetail.as_view(), name='api-bom-item-detail'),
|
|
||||||
]
|
|
||||||
|
|
||||||
bom_api_urls = [
|
bom_api_urls = [
|
||||||
# BOM Item Detail
|
# BOM Item Detail
|
||||||
url(r'^(?P<pk>\d+)/', include(bom_item_urls)),
|
url(r'^(?P<pk>\d+)/', include([
|
||||||
|
url(r'^validate/?', BomItemValidate.as_view(), name='api-bom-item-validate'),
|
||||||
|
url(r'^.*$', BomDetail.as_view(), name='api-bom-item-detail'),
|
||||||
|
])),
|
||||||
|
|
||||||
# Catch-all
|
# Catch-all
|
||||||
url(r'^.*$', BomList.as_view(), name='api-bom-list'),
|
url(r'^.*$', BomList.as_view(), name='api-bom-list'),
|
||||||
|
@ -9,6 +9,7 @@ from .models import Part, PartStar
|
|||||||
from .models import PartCategory
|
from .models import PartCategory
|
||||||
from .models import BomItem
|
from .models import BomItem
|
||||||
from .models import PartParameter, PartParameterTemplate
|
from .models import PartParameter, PartParameterTemplate
|
||||||
|
from .models import PartAttachment
|
||||||
|
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
@ -39,6 +40,22 @@ class CategorySerializer(InvenTreeModelSerializer):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class PartAttachmentSerializer(InvenTreeModelSerializer):
|
||||||
|
"""
|
||||||
|
Serializer for the PartAttachment class
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = PartAttachment
|
||||||
|
|
||||||
|
fields = [
|
||||||
|
'pk',
|
||||||
|
'part',
|
||||||
|
'attachment',
|
||||||
|
'comment'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class PartThumbSerializer(serializers.Serializer):
|
class PartThumbSerializer(serializers.Serializer):
|
||||||
"""
|
"""
|
||||||
Serializer for the 'image' field of the Part model.
|
Serializer for the 'image' field of the Part model.
|
||||||
|
@ -12,6 +12,7 @@ from django.db.models import Q
|
|||||||
|
|
||||||
from .models import StockLocation, StockItem
|
from .models import StockLocation, StockItem
|
||||||
from .models import StockItemTracking
|
from .models import StockItemTracking
|
||||||
|
from .models import StockItemAttachment
|
||||||
|
|
||||||
from part.models import Part, PartCategory
|
from part.models import Part, PartCategory
|
||||||
from part.serializers import PartBriefSerializer
|
from part.serializers import PartBriefSerializer
|
||||||
@ -22,6 +23,7 @@ from company.serializers import SupplierPartSerializer
|
|||||||
from .serializers import StockItemSerializer
|
from .serializers import StockItemSerializer
|
||||||
from .serializers import LocationSerializer, LocationBriefSerializer
|
from .serializers import LocationSerializer, LocationBriefSerializer
|
||||||
from .serializers import StockTrackingSerializer
|
from .serializers import StockTrackingSerializer
|
||||||
|
from .serializers import StockItemAttachmentSerializer
|
||||||
|
|
||||||
from InvenTree.views import TreeSerializer
|
from InvenTree.views import TreeSerializer
|
||||||
from InvenTree.helpers import str2bool, isNull
|
from InvenTree.helpers import str2bool, isNull
|
||||||
@ -624,6 +626,25 @@ class StockList(generics.ListCreateAPIView):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class StockAttachmentList(generics.ListCreateAPIView):
|
||||||
|
"""
|
||||||
|
API endpoint for listing (and creating) a StockItemAttachment (file upload)
|
||||||
|
"""
|
||||||
|
|
||||||
|
queryset = StockItemAttachment.objects.all()
|
||||||
|
serializer_class = StockItemAttachmentSerializer
|
||||||
|
|
||||||
|
filter_backends = [
|
||||||
|
DjangoFilterBackend,
|
||||||
|
filters.OrderingFilter,
|
||||||
|
filters.SearchFilter,
|
||||||
|
]
|
||||||
|
|
||||||
|
filter_fields = [
|
||||||
|
'stock_item',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class StockTrackingList(generics.ListCreateAPIView):
|
class StockTrackingList(generics.ListCreateAPIView):
|
||||||
""" API endpoint for list view of StockItemTracking objects.
|
""" API endpoint for list view of StockItemTracking objects.
|
||||||
|
|
||||||
@ -692,6 +713,11 @@ stock_api_urls = [
|
|||||||
url(r'remove/?', StockRemove.as_view(), name='api-stock-remove'),
|
url(r'remove/?', StockRemove.as_view(), name='api-stock-remove'),
|
||||||
url(r'transfer/?', StockTransfer.as_view(), name='api-stock-transfer'),
|
url(r'transfer/?', StockTransfer.as_view(), name='api-stock-transfer'),
|
||||||
|
|
||||||
|
# Base URL for StockItemAttachment API endpoints
|
||||||
|
url(r'^attachment/', include([
|
||||||
|
url(r'^$', StockAttachmentList.as_view(), name='api-stock-attachment-list'),
|
||||||
|
])),
|
||||||
|
|
||||||
url(r'track/?', StockTrackingList.as_view(), name='api-stock-track'),
|
url(r'track/?', StockTrackingList.as_view(), name='api-stock-track'),
|
||||||
|
|
||||||
url(r'^tree/?', StockCategoryTree.as_view(), name='api-stock-tree'),
|
url(r'^tree/?', StockCategoryTree.as_view(), name='api-stock-tree'),
|
||||||
|
@ -6,6 +6,7 @@ from rest_framework import serializers
|
|||||||
|
|
||||||
from .models import StockItem, StockLocation
|
from .models import StockItem, StockLocation
|
||||||
from .models import StockItemTracking
|
from .models import StockItemTracking
|
||||||
|
from .models import StockItemAttachment
|
||||||
|
|
||||||
from django.db.models import Sum, Count
|
from django.db.models import Sum, Count
|
||||||
from django.db.models.functions import Coalesce
|
from django.db.models.functions import Coalesce
|
||||||
@ -189,6 +190,20 @@ class LocationSerializer(InvenTreeModelSerializer):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class StockItemAttachmentSerializer(InvenTreeModelSerializer):
|
||||||
|
""" Serializer for StockItemAttachment model """
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = StockItemAttachment
|
||||||
|
|
||||||
|
fields = [
|
||||||
|
'pk',
|
||||||
|
'stock_item',
|
||||||
|
'attachment',
|
||||||
|
'comment'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class StockTrackingSerializer(InvenTreeModelSerializer):
|
class StockTrackingSerializer(InvenTreeModelSerializer):
|
||||||
""" Serializer for StockItemTracking model """
|
""" Serializer for StockItemTracking model """
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 198 KiB |
@ -28,9 +28,9 @@
|
|||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:current-layer="g2907"
|
inkscape:current-layer="g2907"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:cy="-58.405079"
|
inkscape:cy="426.62472"
|
||||||
inkscape:cx="353.97119"
|
inkscape:cx="-960.58794"
|
||||||
inkscape:zoom="0.63286057"
|
inkscape:zoom="0.31819805"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
@ -64,7 +64,7 @@
|
|||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title></dc:title>
|
<dc:title />
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
@ -76,47 +76,216 @@
|
|||||||
<g
|
<g
|
||||||
id="g2907"
|
id="g2907"
|
||||||
transform="matrix(1.7132796,0,0,1.7132796,460.05136,236.12365)">
|
transform="matrix(1.7132796,0,0,1.7132796,460.05136,236.12365)">
|
||||||
<path
|
<g
|
||||||
style="opacity:1;vector-effect:none;fill:#d1d9de;fill-opacity:1;stroke:#28170b;stroke-width:2.08303189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
id="g5713">
|
||||||
d="M -151.78571,473.69238 V 344.99077 l 35.12976,-15.60968 v 31.63051 l 49.460798,-21.93317 V 307.6535 l 26.213684,-12.45447 v 127.1615 l -26.213684,11.92625 v -83.81393 l -49.460798,20.95926 v 86.11213 z"
|
<path
|
||||||
id="path913"
|
sodipodi:nodetypes="ccccc"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="ccccccccccccc" />
|
id="path4896"
|
||||||
|
d="m -151.78571,359.62883 v 112.76373 l 97.068507,-56.04253 V 303.14815 Z"
|
||||||
|
style="fill:#ddbc91;fill-opacity:1;stroke:#000000;stroke-width:1.5622561;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#d9b383;fill-opacity:1;stroke:#000000;stroke-width:1.5622561;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m -151.78571,359.62883 v 112.76373 l -97.0685,-56.04253 V 303.14815 Z"
|
||||||
|
id="path4898"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4900"
|
||||||
|
d="m -54.717203,303.14815 -97.068507,56.48068 -97.0685,-56.48068 97.0685,-56.17354 z"
|
||||||
|
style="fill:#ddbc91;fill-opacity:1;stroke:#000000;stroke-width:1.5622561;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<g
|
||||||
|
id="g4916"
|
||||||
|
transform="matrix(1.4761476,0,0,1.4761476,-218.87903,128.54472)"
|
||||||
|
style="opacity:1;vector-effect:none;fill:#f3f4e4;fill-opacity:1;stroke:#000000;stroke-width:1.05833328;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1">
|
||||||
|
<path
|
||||||
|
id="path4910"
|
||||||
|
transform="matrix(0.40703466,0,0,0.40703466,-35.955294,75.175547)"
|
||||||
|
d="M 78.833984,129.19141 V 270.49609 L 200,340.45117 321.16602,270.49609 V 129.19141 L 200,199.69336 Z"
|
||||||
|
style="vector-effect:none;fill:#f3f4e4;fill-opacity:1;stroke:#000000;stroke-width:2.600106;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="vector-effect:none;fill:#f3f4e4;fill-opacity:1;stroke:#000000;stroke-width:1.05833328;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="M 94.770135,127.76116 45.451638,156.45782 -3.8668589,127.76116 45.451638,99.220548 Z"
|
||||||
|
id="path4914"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#d9dbbc;fill-opacity:1;stroke:#000000;stroke-width:1.56225622;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m -151.7857,275.0089 v 84.49065 l -72.80137,42.54091 v -84.90142 z"
|
||||||
|
id="path4918"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4920"
|
||||||
|
d="m -151.7857,275.0089 v 84.49065 l 72.801373,42.54091 v -84.90142 z"
|
||||||
|
style="opacity:1;vector-effect:none;fill:#eaeccf;fill-opacity:1;stroke:#000000;stroke-width:1.56225622;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<g
|
||||||
|
style="opacity:1;vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.58749998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
transform="matrix(0.9840984,0,0,0.9840984,-196.5146,205.65597)"
|
||||||
|
id="g4928">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4922"
|
||||||
|
d="m 45.451638,156.45782 v 57.29292 l 49.318497,-28.47405 v -57.51553 z"
|
||||||
|
style="vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 45.451638,156.45782 v 57.29292 L -3.866859,185.27669 v -57.51553 z"
|
||||||
|
id="path4924"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4926"
|
||||||
|
d="M 94.770135,127.76116 45.451638,156.45782 -3.8668589,127.76116 45.451638,99.220548 Z"
|
||||||
|
style="vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(0,102.8232)"
|
||||||
|
id="g5856"
|
||||||
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001">
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.7510277;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m -587.59709,399.25327 v 126.38928 l 108.79755,-62.8143 V 335.94789 Z"
|
||||||
|
id="path5850"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5852"
|
||||||
|
d="m -587.59709,399.25327 v 126.38928 l -108.79754,-62.8143 V 335.94789 Z"
|
||||||
|
style="opacity:1;vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.7510277;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.7510277;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m -478.79954,335.94789 -108.79755,63.30538 -108.79754,-63.30538 108.79754,-62.96113 z"
|
||||||
|
id="path5854"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g5848"
|
||||||
|
transform="translate(0,-23.56608)"
|
||||||
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5803"
|
||||||
|
d="m -587.59709,399.25327 v 126.38928 l 108.79755,-62.8143 V 335.94789 Z"
|
||||||
|
style="opacity:1;vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.7510277;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.7510277;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m -587.59709,399.25327 v 126.38928 l -108.79754,-62.8143 V 335.94789 Z"
|
||||||
|
id="path5805"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5807"
|
||||||
|
d="m -478.79954,335.94789 -108.79755,63.30538 -108.79754,-63.30538 108.79754,-62.96113 z"
|
||||||
|
style="opacity:1;vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.7510277;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
<path
|
<path
|
||||||
sodipodi:nodetypes="ccccc"
|
sodipodi:nodetypes="ccccc"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path915"
|
id="path4649"
|
||||||
d="M -151.78571,473.69238 V 344.99077 l -110.80424,-49.79174 v 127.1615 z"
|
d="m -587.59709,249.29791 v 126.38928 l 108.79755,-62.8143 V 185.99253 Z"
|
||||||
style="opacity:1;vector-effect:none;fill:#cec391;fill-opacity:1;stroke:#28170b;stroke-width:2.91837955;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-variant-east_asian:normal" />
|
style="fill:#ddbc91;fill-opacity:1;stroke:#000000;stroke-width:1.75102758;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001" />
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#d9b383;fill-opacity:1;stroke:#000000;stroke-width:1.5622561;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m -587.59709,249.29791 v 126.38928 l -108.79754,-62.8143 V 185.99253 Z"
|
||||||
|
id="path4651"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001" />
|
||||||
<path
|
<path
|
||||||
sodipodi:nodetypes="ccccc"
|
sodipodi:nodetypes="ccccc"
|
||||||
style="opacity:1;vector-effect:none;fill:#cec391;fill-opacity:1;stroke:#28170b;stroke-width:2.91837955;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-variant-east_asian:normal"
|
|
||||||
d="m -262.58995,295.19903 112.10613,-49.52424 109.502352,49.52424 c -88.312322,39.27262 -35.08964,16.14845 -110.804242,49.79174 z"
|
|
||||||
id="path917"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;vector-effect:none;fill:#cec391;fill-opacity:1;stroke:#28170b;stroke-width:2.91837955;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m -118.93959,307.94982 -85.80387,-38.34551"
|
|
||||||
id="path919"
|
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="cc" />
|
id="path4653"
|
||||||
|
d="m -478.79954,185.99253 -108.79755,63.30538 -108.79754,-63.30538 108.79754,-62.96113 z"
|
||||||
|
style="fill:#ddbc91;fill-opacity:1;stroke:#000000;stroke-width:1.75102758;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001" />
|
||||||
|
<g
|
||||||
|
id="g4703"
|
||||||
|
transform="matrix(1.6545144,0,0,1.6545144,-662.79747,-9.7087)"
|
||||||
|
style="opacity:1;vector-effect:none;fill:#f3f4e4;fill-opacity:1;stroke:#000000;stroke-width:1.05833328;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="vector-effect:none;fill:#f3f4e4;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m -713.3418,130.54492 v 163.03516 l 139.79883,80.71484 139.80078,-80.71484 V 130.54492 l -139.80078,81.3457 z"
|
||||||
|
transform="matrix(0.35277777,0,0,0.35277777,247.78456,81.707826)"
|
||||||
|
id="path4697" />
|
||||||
|
<path
|
||||||
|
style="vector-effect:none;fill:#f3f4e4;fill-opacity:1;stroke:#000000;stroke-width:1.05833328;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="M 94.770135,127.76116 45.451638,156.45782 -3.8668589,127.76116 45.451638,99.220548 Z"
|
||||||
|
id="path4701"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
</g>
|
||||||
<path
|
<path
|
||||||
style="opacity:1;vector-effect:none;fill:#cec391;fill-opacity:1;stroke:#28170b;stroke-width:2.91837955;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-variant-east_asian:normal"
|
style="opacity:1;vector-effect:none;fill:#d9dbbc;fill-opacity:1;stroke:#000000;stroke-width:1.7510277;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
d="M -151.78571,473.69238 V 344.99077 l 110.804242,-49.79174 v 127.1615 z"
|
d="m -587.59709,154.45314 v 94.69988 l -81.59816,47.68125 v -95.1603 z"
|
||||||
id="path2976"
|
id="path4788"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="ccccc" />
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001" />
|
||||||
<path
|
<path
|
||||||
style="opacity:1;vector-effect:none;fill:#4581cf;fill-opacity:1;stroke:#28170b;stroke-width:4.66940737;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m -73.77322,436.55913 0,-77.51647 -35.3752,15.6134 v 78.16692 z"
|
|
||||||
id="path921"
|
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="ccccc" />
|
id="path4830"
|
||||||
<path
|
d="m -587.59709,154.45314 v 94.69988 l 81.59817,47.68125 v -95.1603 z"
|
||||||
style="opacity:1;vector-effect:none;fill:#4581cf;fill-opacity:1;stroke:#28170b;stroke-width:8.00000043;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-variant-east_asian:normal"
|
style="opacity:1;vector-effect:none;fill:#eaeccf;fill-opacity:1;stroke:#000000;stroke-width:1.7510277;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
d="M 290.59375 95.947266 L 232.01953 123.67578 L 273.04883 141.67188 L 273.04883 184.96094 L 333.65625 158.70508 L 333.65625 115.98242 L 290.59375 95.947266 z "
|
inkscape:export-xdpi="499.92001"
|
||||||
transform="matrix(0.58367589,0,0,0.58367589,-268.52089,242.94838)"
|
inkscape:export-ydpi="499.92001" />
|
||||||
id="path923" />
|
<g
|
||||||
|
style="opacity:1;vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.58749998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
transform="matrix(1.1030096,0,0,1.1030096,-637.73068,76.7201)"
|
||||||
|
id="g4695"
|
||||||
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4689"
|
||||||
|
d="m 45.451638,156.45782 v 57.29292 l 49.318497,-28.47405 v -57.51553 z"
|
||||||
|
style="vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 45.451638,156.45782 v 57.29292 L -3.866859,185.27669 v -57.51553 z"
|
||||||
|
id="path4691"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4693"
|
||||||
|
d="M 94.770135,127.76116 45.451638,156.45782 -3.8668589,127.76116 45.451638,99.220548 Z"
|
||||||
|
style="vector-effect:none;fill:#90a8d8;fill-opacity:1;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:none;stroke-width:1.41293824;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect5777"
|
||||||
|
width="281.65912"
|
||||||
|
height="552.58508"
|
||||||
|
x="-728.42657"
|
||||||
|
y="95.064545"
|
||||||
|
inkscape:export-xdpi="499.92001"
|
||||||
|
inkscape:export-ydpi="499.92001" />
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 16 KiB |
BIN
images/logo/inventree_logo_large.png
Normal file
After Width: | Height: | Size: 341 KiB |