⬆️ Major bumps and django checks
Notably to django 3.2
This commit is contained in:
1 parent
a1437ab5d2
commit
d311e65058
9 files changed
+247
-38
No files matched your search
@@ -0,0 +1,20 @@
|
|||||||
|
[[source]]
|
||||||
|
url = "https://pypi.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
django-extensions = "==3.1.*"
|
||||||
|
easy-thumbnails = "==2.7.*"
|
||||||
|
facebook-sdk = "==3.0.0"
|
||||||
|
gunicorn = "==20.1.*"
|
||||||
|
mysqlclient = "==2.0.*"
|
||||||
|
djangorestframework = "==3.12.*"
|
||||||
|
sentry-sdk = "==1.*"
|
||||||
|
Django = "==3.2.*"
|
||||||
|
Pillow = "==8.*"
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.9"
|
||||||
Generated
+198
@@ -0,0 +1,198 @@
|
|||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "c079e1ab20a4d9bd30eed7407120599adbc7ef1de635764c5adcab332a08ca1e"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.9"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"asgiref": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9",
|
||||||
|
"sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==3.4.1"
|
||||||
|
},
|
||||||
|
"certifi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872",
|
||||||
|
"sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"
|
||||||
|
],
|
||||||
|
"version": "==2021.10.8"
|
||||||
|
},
|
||||||
|
"charset-normalizer": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0",
|
||||||
|
"sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3'",
|
||||||
|
"version": "==2.0.7"
|
||||||
|
},
|
||||||
|
"django": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:42573831292029639b798fe4d3812996bfe4ff3275f04566da90764daec011a5",
|
||||||
|
"sha256:f6d2c4069c9b9bfac03bedff927ea1f9e0d29e34525cec8a68fd28eb2a8df7af"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.2.8"
|
||||||
|
},
|
||||||
|
"django-extensions": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:50de8977794a66a91575dd40f87d5053608f679561731845edbd325ceeb387e3",
|
||||||
|
"sha256:5f0fea7bf131ca303090352577a9e7f8bfbf5489bd9d9c8aea9401db28db34a0"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.1.3"
|
||||||
|
},
|
||||||
|
"djangorestframework": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6d1d59f623a5ad0509fe0d6bfe93cbdfe17b8116ebc8eda86d45f6e16e819aaf",
|
||||||
|
"sha256:f747949a8ddac876e879190df194b925c177cdeb725a099db1460872f7c0a7f2"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.12.4"
|
||||||
|
},
|
||||||
|
"easy-thumbnails": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:9d7ed56a9b57aba7a8d0e03dc3b8507ca51aab5e0ed0bc705c3261ff1f659192",
|
||||||
|
"sha256:a7dd9cf97efaf70ba5d76484a962f08ba65b31f1681bc417257743650e9e8a8a"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==2.7.2"
|
||||||
|
},
|
||||||
|
"facebook-sdk": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:8ef0a0d2c98a515a926875bb4be9c9a4630a39fc8190bff8d5265d58af1ef257",
|
||||||
|
"sha256:c94df84b2bba1c497684c169ed28a713b57917bf56f95fba4c2a5290c16ce81e",
|
||||||
|
"sha256:f3d450ec313b62d3716fadc4e5098183760e1d2a9e0434a94b74e59ea6ea3e4d"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.0.0"
|
||||||
|
},
|
||||||
|
"gunicorn": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e",
|
||||||
|
"sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==20.1.0"
|
||||||
|
},
|
||||||
|
"idna": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff",
|
||||||
|
"sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3'",
|
||||||
|
"version": "==3.3"
|
||||||
|
},
|
||||||
|
"mysqlclient": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0ac0dd759c4ca02c35a9fedc24bc982cf75171651e8187c2495ec957a87dfff7",
|
||||||
|
"sha256:3381ca1a4f37ff1155fcfde20836b46416d66531add8843f6aa6d968982731c3",
|
||||||
|
"sha256:71c4b330cf2313bbda0307fc858cc9055e64493ba9bf28454d25cf8b3ee8d7f5",
|
||||||
|
"sha256:f6ebea7c008f155baeefe16c56cd3ee6239f7a5a9ae42396c2f1860f08a7c432",
|
||||||
|
"sha256:fc575093cf81b6605bed84653e48b277318b880dc9becf42dd47fa11ffd3e2b6"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==2.0.3"
|
||||||
|
},
|
||||||
|
"pillow": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:066f3999cb3b070a95c3652712cffa1a748cd02d60ad7b4e485c3748a04d9d76",
|
||||||
|
"sha256:0a0956fdc5defc34462bb1c765ee88d933239f9a94bc37d132004775241a7585",
|
||||||
|
"sha256:0b052a619a8bfcf26bd8b3f48f45283f9e977890263e4571f2393ed8898d331b",
|
||||||
|
"sha256:1394a6ad5abc838c5cd8a92c5a07535648cdf6d09e8e2d6df916dfa9ea86ead8",
|
||||||
|
"sha256:1bc723b434fbc4ab50bb68e11e93ce5fb69866ad621e3c2c9bdb0cd70e345f55",
|
||||||
|
"sha256:244cf3b97802c34c41905d22810846802a3329ddcb93ccc432870243211c79fc",
|
||||||
|
"sha256:25a49dc2e2f74e65efaa32b153527fc5ac98508d502fa46e74fa4fd678ed6645",
|
||||||
|
"sha256:2e4440b8f00f504ee4b53fe30f4e381aae30b0568193be305256b1462216feff",
|
||||||
|
"sha256:3862b7256046fcd950618ed22d1d60b842e3a40a48236a5498746f21189afbbc",
|
||||||
|
"sha256:3eb1ce5f65908556c2d8685a8f0a6e989d887ec4057326f6c22b24e8a172c66b",
|
||||||
|
"sha256:3f97cfb1e5a392d75dd8b9fd274d205404729923840ca94ca45a0af57e13dbe6",
|
||||||
|
"sha256:493cb4e415f44cd601fcec11c99836f707bb714ab03f5ed46ac25713baf0ff20",
|
||||||
|
"sha256:4acc0985ddf39d1bc969a9220b51d94ed51695d455c228d8ac29fcdb25810e6e",
|
||||||
|
"sha256:5503c86916d27c2e101b7f71c2ae2cddba01a2cf55b8395b0255fd33fa4d1f1a",
|
||||||
|
"sha256:5b7bb9de00197fb4261825c15551adf7605cf14a80badf1761d61e59da347779",
|
||||||
|
"sha256:5e9ac5f66616b87d4da618a20ab0a38324dbe88d8a39b55be8964eb520021e02",
|
||||||
|
"sha256:620582db2a85b2df5f8a82ddeb52116560d7e5e6b055095f04ad828d1b0baa39",
|
||||||
|
"sha256:62cc1afda735a8d109007164714e73771b499768b9bb5afcbbee9d0ff374b43f",
|
||||||
|
"sha256:70ad9e5c6cb9b8487280a02c0ad8a51581dcbbe8484ce058477692a27c151c0a",
|
||||||
|
"sha256:72b9e656e340447f827885b8d7a15fc8c4e68d410dc2297ef6787eec0f0ea409",
|
||||||
|
"sha256:72cbcfd54df6caf85cc35264c77ede902452d6df41166010262374155947460c",
|
||||||
|
"sha256:792e5c12376594bfcb986ebf3855aa4b7c225754e9a9521298e460e92fb4a488",
|
||||||
|
"sha256:7b7017b61bbcdd7f6363aeceb881e23c46583739cb69a3ab39cb384f6ec82e5b",
|
||||||
|
"sha256:81f8d5c81e483a9442d72d182e1fb6dcb9723f289a57e8030811bac9ea3fef8d",
|
||||||
|
"sha256:82aafa8d5eb68c8463b6e9baeb4f19043bb31fefc03eb7b216b51e6a9981ae09",
|
||||||
|
"sha256:84c471a734240653a0ec91dec0996696eea227eafe72a33bd06c92697728046b",
|
||||||
|
"sha256:8c803ac3c28bbc53763e6825746f05cc407b20e4a69d0122e526a582e3b5e153",
|
||||||
|
"sha256:93ce9e955cc95959df98505e4608ad98281fff037350d8c2671c9aa86bcf10a9",
|
||||||
|
"sha256:9a3e5ddc44c14042f0844b8cf7d2cd455f6cc80fd7f5eefbe657292cf601d9ad",
|
||||||
|
"sha256:a4901622493f88b1a29bd30ec1a2f683782e57c3c16a2dbc7f2595ba01f639df",
|
||||||
|
"sha256:a5a4532a12314149d8b4e4ad8ff09dde7427731fcfa5917ff16d0291f13609df",
|
||||||
|
"sha256:b8831cb7332eda5dc89b21a7bce7ef6ad305548820595033a4b03cf3091235ed",
|
||||||
|
"sha256:b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed",
|
||||||
|
"sha256:c70e94281588ef053ae8998039610dbd71bc509e4acbc77ab59d7d2937b10698",
|
||||||
|
"sha256:c8a17b5d948f4ceeceb66384727dde11b240736fddeda54ca740b9b8b1556b29",
|
||||||
|
"sha256:d82cdb63100ef5eedb8391732375e6d05993b765f72cb34311fab92103314649",
|
||||||
|
"sha256:d89363f02658e253dbd171f7c3716a5d340a24ee82d38aab9183f7fdf0cdca49",
|
||||||
|
"sha256:d99ec152570e4196772e7a8e4ba5320d2d27bf22fdf11743dd882936ed64305b",
|
||||||
|
"sha256:ddc4d832a0f0b4c52fff973a0d44b6c99839a9d016fe4e6a1cb8f3eea96479c2",
|
||||||
|
"sha256:e3dacecfbeec9a33e932f00c6cd7996e62f53ad46fbe677577394aaa90ee419a",
|
||||||
|
"sha256:eb9fc393f3c61f9054e1ed26e6fe912c7321af2f41ff49d3f83d05bacf22cc78"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==8.4.0"
|
||||||
|
},
|
||||||
|
"pytz": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c",
|
||||||
|
"sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"
|
||||||
|
],
|
||||||
|
"version": "==2021.3"
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24",
|
||||||
|
"sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
|
||||||
|
"version": "==2.26.0"
|
||||||
|
},
|
||||||
|
"sentry-sdk": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:b9844751e40710e84a457c5bc29b21c383ccb2b63d76eeaad72f7f1c808c8828",
|
||||||
|
"sha256:c091cc7115ff25fe3a0e410dbecd7a996f81a3f6137d2272daef32d6c3cfa6dc"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.4.3"
|
||||||
|
},
|
||||||
|
"sqlparse": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae",
|
||||||
|
"sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.5'",
|
||||||
|
"version": "==0.4.2"
|
||||||
|
},
|
||||||
|
"urllib3": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece",
|
||||||
|
"sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
|
||||||
|
"version": "==1.26.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"develop": {}
|
||||||
|
}
|
||||||
+5
-2
@@ -52,6 +52,7 @@ TEMPLATES = [
|
|||||||
'OPTIONS': {
|
'OPTIONS': {
|
||||||
'context_processors': [
|
'context_processors': [
|
||||||
'django.contrib.auth.context_processors.auth',
|
'django.contrib.auth.context_processors.auth',
|
||||||
|
'django.template.context_processors.request',
|
||||||
'django.template.context_processors.debug',
|
'django.template.context_processors.debug',
|
||||||
'django.template.context_processors.i18n',
|
'django.template.context_processors.i18n',
|
||||||
'django.template.context_processors.media',
|
'django.template.context_processors.media',
|
||||||
@@ -63,13 +64,13 @@ TEMPLATES = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE = [
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'django.middleware.csrf.CsrfViewMiddleware',
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
'django.contrib.messages.middleware.MessageMiddleware',
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
)
|
]
|
||||||
|
|
||||||
ROOT_URLCONF = 'bbssite.urls'
|
ROOT_URLCONF = 'bbssite.urls'
|
||||||
|
|
||||||
@@ -151,6 +152,8 @@ LOGGING = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from .local_settings import *
|
from .local_settings import *
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
|||||||
+6
-6
@@ -1,9 +1,9 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls import include, url
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth.views import LoginView, LogoutView
|
from django.contrib.auth.views import LoginView, LogoutView
|
||||||
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
||||||
from django.contrib.staticfiles.views import serve
|
from django.contrib.staticfiles.views import serve
|
||||||
|
from django.urls import path, re_path, include
|
||||||
|
|
||||||
from main import urls as main_urls
|
from main import urls as main_urls
|
||||||
|
|
||||||
@@ -11,17 +11,17 @@ from main import urls as main_urls
|
|||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'', include(main_urls)),
|
re_path(r'', include(main_urls)),
|
||||||
url(r'^accounts/login/$', LoginView.as_view(), name='django.contrib.auth.views.login'),
|
path('accounts/login/', LoginView.as_view(), name='django.contrib.auth.views.login'),
|
||||||
url(r'^accounts/logout/$', LogoutView.as_view(), name='django.contrib.auth.views.logout'),
|
path('accounts/logout/', LogoutView.as_view(), name='django.contrib.auth.views.logout'),
|
||||||
|
|
||||||
url(r'^admin/', include(admin.site.urls)),
|
path('admin/', admin.site.urls),
|
||||||
]
|
]
|
||||||
urlpatterns += staticfiles_urlpatterns()
|
urlpatterns += staticfiles_urlpatterns()
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
urlpatterns += [
|
urlpatterns += [
|
||||||
url(r'^media/(?P<path>.*)$', serve, {
|
re_path(r'^media/(?P<path>.*)$', serve, {
|
||||||
'document_root': settings.MEDIA_ROOT,
|
'document_root': settings.MEDIA_ROOT,
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
+2
-3
@@ -1,6 +1,5 @@
|
|||||||
from rest_framework import mixins
|
from rest_framework import mixins
|
||||||
from rest_framework.decorators import list_route
|
from rest_framework.decorators import action
|
||||||
from rest_framework.permissions import AllowAny
|
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
from main.api.serializers import ProductSerializer, ProductStatSerializer
|
from main.api.serializers import ProductSerializer, ProductStatSerializer
|
||||||
@@ -14,7 +13,7 @@ class ProductViewSet(mixins.ListModelMixin,
|
|||||||
serializer_class = ProductSerializer
|
serializer_class = ProductSerializer
|
||||||
queryset = Product.objects.all()
|
queryset = Product.objects.all()
|
||||||
|
|
||||||
@list_route(methods=['get'])
|
@action(detail=False, methods=['get'])
|
||||||
def group_by_user(self, request):
|
def group_by_user(self, request):
|
||||||
products = self.get_queryset().filter(active=True)
|
products = self.get_queryset().filter(active=True)
|
||||||
serializer = ProductStatSerializer(products, many=True)
|
serializer = ProductStatSerializer(products, many=True)
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ from django.apps import AppConfig
|
|||||||
|
|
||||||
|
|
||||||
class BBSAppConfig(AppConfig):
|
class BBSAppConfig(AppConfig):
|
||||||
name = 'bbs'
|
name = 'main'
|
||||||
verbose_name = 'Biceps Bar System'
|
verbose_name = 'Biceps Bar System'
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
|
|||||||
+13
-14
@@ -3,11 +3,10 @@ from datetime import datetime
|
|||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
|
||||||
class Product(models.Model):
|
class Product(models.Model):
|
||||||
name = models.CharField(max_length=64)
|
name = models.CharField(max_length=64)
|
||||||
sale_price_int = models.FloatField()
|
sale_price_int = models.FloatField()
|
||||||
@@ -53,9 +52,9 @@ class Product(models.Model):
|
|||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
|
||||||
class Order(models.Model):
|
class Order(models.Model):
|
||||||
customer = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, related_name='orders')
|
customer = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True, related_name='orders')
|
||||||
order_sum = models.FloatField(db_column='sum')
|
order_sum = models.FloatField(db_column='sum')
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
@@ -69,10 +68,10 @@ class Order(models.Model):
|
|||||||
return "{}: {} kr".format(self.customer or "Ekstern", self.order_sum)
|
return "{}: {} kr".format(self.customer or "Ekstern", self.order_sum)
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
|
||||||
class OrderLine(models.Model):
|
class OrderLine(models.Model):
|
||||||
order = models.ForeignKey('main.Order', related_name='orderlines')
|
order = models.ForeignKey('main.Order', on_delete=models.CASCADE, related_name='orderlines')
|
||||||
product = models.ForeignKey('main.Product', related_name='orderlines')
|
product = models.ForeignKey('main.Product', on_delete=models.CASCADE, related_name='orderlines')
|
||||||
amount = models.IntegerField()
|
amount = models.IntegerField()
|
||||||
unit_price = models.FloatField(verbose_name=_('Enhetspris'))
|
unit_price = models.FloatField(verbose_name=_('Enhetspris'))
|
||||||
|
|
||||||
@@ -87,10 +86,10 @@ class OrderLine(models.Model):
|
|||||||
unique_together = ('order', 'product')
|
unique_together = ('order', 'product')
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
|
||||||
class Transaction(models.Model):
|
class Transaction(models.Model):
|
||||||
""" Money """
|
""" Money """
|
||||||
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='transactions')
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='transactions')
|
||||||
amount = models.FloatField()
|
amount = models.FloatField()
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
@@ -98,11 +97,11 @@ class Transaction(models.Model):
|
|||||||
return "{}: {}: {}".format(self.id, self.user, self.amount)
|
return "{}: {}: {}".format(self.id, self.user, self.amount)
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
|
||||||
class InventoryTransaction(models.Model):
|
class InventoryTransaction(models.Model):
|
||||||
""" Goods """
|
""" Goods """
|
||||||
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='inventory_transactions')
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='inventory_transactions')
|
||||||
product = models.ForeignKey('main.Product', related_name='transactions', verbose_name=_('Produkt'))
|
product = models.ForeignKey('main.Product', on_delete=models.CASCADE, related_name='transactions', verbose_name=_('Produkt'))
|
||||||
amount = models.FloatField(verbose_name=_('Antall'))
|
amount = models.FloatField(verbose_name=_('Antall'))
|
||||||
unit_price = models.FloatField(verbose_name=_('Enhetspris'))
|
unit_price = models.FloatField(verbose_name=_('Enhetspris'))
|
||||||
comment = models.TextField(verbose_name=_('Kommentar'), blank=True)
|
comment = models.TextField(verbose_name=_('Kommentar'), blank=True)
|
||||||
@@ -121,9 +120,9 @@ class InventoryTransaction(models.Model):
|
|||||||
self.unit_price)
|
self.unit_price)
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
|
||||||
class UserProfile(models.Model):
|
class UserProfile(models.Model):
|
||||||
user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile')
|
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='profile')
|
||||||
balance = models.FloatField(default=0.0)
|
balance = models.FloatField(default=0.0)
|
||||||
image = models.URLField(blank=True)
|
image = models.URLField(blank=True)
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,12 @@ from datetime import datetime, timedelta
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.urlresolvers import reverse
|
|
||||||
from django.db.models import Min
|
from django.db.models import Min
|
||||||
from django.forms import formset_factory
|
from django.forms import formset_factory
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect
|
||||||
|
from django.urls import reverse
|
||||||
|
|
||||||
from main.forms import OrderLineForm, OrderForm, DepositForm
|
from main.forms import OrderLineForm, OrderForm, DepositForm
|
||||||
from main.models import Product, OrderLine, Order, Transaction
|
from main.models import Product, OrderLine, Order, Transaction
|
||||||
from main.utils import users_format_js, users_with_perm
|
from main.utils import users_format_js, users_with_perm
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
django==1.11.15
|
|
||||||
django-bootstrap-form==3.4
|
|
||||||
django-extensions==2.1.0
|
|
||||||
django-widget-tweaks==1.4.2
|
|
||||||
easy-thumbnails==2.5
|
|
||||||
facebook-sdk==3.0.0
|
|
||||||
gunicorn==19.9.0
|
|
||||||
mysqlclient==1.3.13
|
|
||||||
djangorestframework==3.6.4
|
|
||||||
pillow==5.2.0
|
|
||||||
raven==6.9.0
|
|
||||||
Reference in new issue
Block a user