Added User API and serializer

This commit is contained in:
Oliver Walters 2017-04-20 22:40:59 +10:00
parent 92cbd43f0f
commit 4777b02080
12 changed files with 79 additions and 2 deletions

View File

@ -8,9 +8,12 @@ from stock.urls import stock_urls, stock_loc_urls, stock_track_urls
from project.urls import prj_urls, prj_part_urls, prj_cat_urls, prj_run_urls
from supplier.urls import cust_urls, manu_urls, supplier_part_urls, price_break_urls, supplier_urls
from track.urls import unique_urls, part_track_urls
from users.urls import user_urls
admin.site.site_header = "InvenTree Admin"
apipatterns = [
# Stock URLs
@ -40,6 +43,9 @@ apipatterns = [
url(r'^project-category/', include(prj_cat_urls)),
url(r'^project-part/', include(prj_part_urls)),
url(r'^project-run/', include(prj_run_urls)),
# User URLs
url(r'^user/', include(user_urls)),
]
urlpatterns = [

View File

@ -2,6 +2,7 @@ from __future__ import unicode_literals
from django.utils.translation import ugettext as _
from django.db import models
from django.core.validators import MinValueValidator
from django.contrib.auth.models import User
from supplier.models import SupplierPart
from part.models import Part
@ -29,6 +30,7 @@ class StockItem(models.Model):
# last time the stock was checked / counted
stocktake_date = models.DateField(blank=True, null=True)
stocktake_user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True)
review_needed = models.BooleanField(default=False)
@ -63,7 +65,7 @@ class StockItem(models.Model):
infinite = models.BooleanField(default=False)
def stocktake(self, count):
def stocktake(self, count, user):
""" Perform item stocktake.
When the quantity of an item is counted,
record the date of stocktake
@ -76,6 +78,7 @@ class StockItem(models.Model):
self.quantity = count
self.stocktake_date = datetime.now().date()
self.stocktake_user = user
self.save()
def add_stock(self, amount):

View File

@ -18,6 +18,7 @@ class StockItemSerializer(serializers.HyperlinkedModelSerializer):
'notes',
'updated',
'stocktake_date',
'stocktake_user',
'review_needed',
'expected_arrival')

View File

@ -62,7 +62,7 @@ class StockStocktakeEndpoint(generics.UpdateAPIView):
def update(self, request, *args, **kwargs):
object = self.get_object()
object.stocktake(request.data['quantity'])
object.stocktake(request.data['quantity'], request.user)
serializer = self.get_serializer(object)

View File

6
InvenTree/users/admin.py Normal file
View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
# Register your models here.

8
InvenTree/users/apps.py Normal file
View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'

View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.

View File

@ -0,0 +1,15 @@
from rest_framework import serializers
from django.contrib.auth.models import User
class UserSerializer(serializers.HyperlinkedModelSerializer):
""" Serializer for a User
"""
class Meta:
model = User
fields = ('username',
'first_name',
'last_name',
'email',)

6
InvenTree/users/tests.py Normal file
View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.test import TestCase
# Create your tests here.

9
InvenTree/users/urls.py Normal file
View File

@ -0,0 +1,9 @@
from django.conf.urls import url, include
from . import views
user_urls = [
url(r'^(?P<pk>[0-9]+)/?$', views.UserDetail.as_view(), name='user-detail'),
url(r'^$', views.UserList.as_view()),
]

17
InvenTree/users/views.py Normal file
View File

@ -0,0 +1,17 @@
from rest_framework import generics, permissions, response
from django.contrib.auth.models import User
from .serializers import UserSerializer
class UserDetail(generics.RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)