added data
This commit is contained in:
@@ -70,7 +70,7 @@ class Job(models.Model):
|
|||||||
type = models.CharField(max_length=15, choices=TYPE_CHOICES, default="Irrigating")
|
type = models.CharField(max_length=15, choices=TYPE_CHOICES, default="Irrigating")
|
||||||
field = models.ForeignKey(Field, on_delete=models.CASCADE)
|
field = models.ForeignKey(Field, on_delete=models.CASCADE)
|
||||||
made_date = models.DateTimeField(auto_now_add=True)
|
made_date = models.DateTimeField(auto_now_add=True)
|
||||||
due_date = models.DateTimeField()
|
due_date = models.DateTimeField(auto_now_add=True)
|
||||||
status = models.BooleanField()
|
status = models.BooleanField()
|
||||||
costs = models.ForeignKey(Cost, on_delete=models.SET_NULL, null=True, blank=True)
|
costs = models.ForeignKey(Cost, on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
notes = models.ForeignKey(Note, on_delete=models.SET_NULL, null=True, blank=True)
|
notes = models.ForeignKey(Note, on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from .models import Field, Note, Cost, Image, Job, Cultivation_calender, Product
|
from .models import Field, Note, Cost, Image, Job, Cultivation_calender, Product
|
||||||
|
|
||||||
|
from jalali_date import datetime2jalali
|
||||||
|
|
||||||
|
|
||||||
class FieldSerializer(serializers.ModelSerializer):
|
class FieldSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -21,22 +23,31 @@ class CostSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class ImageSerializer(serializers.ModelSerializer):
|
class ImageSerializer(serializers.ModelSerializer):
|
||||||
|
uploaded_at = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Image
|
model = Image
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
|
||||||
|
def get_uploaded_at(self, obj):
|
||||||
|
return datetime2jalali(obj.uploaded_at).strftime("%Y/%m/%d %H:%M:%S")
|
||||||
|
|
||||||
|
|
||||||
class JobSerializer(serializers.ModelSerializer):
|
class JobSerializer(serializers.ModelSerializer):
|
||||||
field = serializers.PrimaryKeyRelatedField(queryset=Field.objects.all())
|
# field = serializers.PrimaryKeyRelatedField(queryset=Field.objects.all())
|
||||||
costs = serializers.PrimaryKeyRelatedField(
|
field = FieldSerializer(read_only=True)
|
||||||
queryset=Cost.objects.all(), required=False, allow_null=True
|
# costs = serializers.PrimaryKeyRelatedField(
|
||||||
)
|
# queryset=Cost.objects.all(), required=False, allow_null=True
|
||||||
notes = serializers.PrimaryKeyRelatedField(
|
# )
|
||||||
queryset=Note.objects.all(), required=False, allow_null=True
|
costs = CostSerializer(read_only=True, allow_null=True)
|
||||||
)
|
# notes = serializers.PrimaryKeyRelatedField(
|
||||||
images = serializers.PrimaryKeyRelatedField(
|
# queryset=Note.objects.all(), required=False, allow_null=True
|
||||||
queryset=Image.objects.all(), required=False, allow_null=True
|
# )
|
||||||
)
|
notes = NoteSerializer(read_only=True, allow_null=True)
|
||||||
|
# images = serializers.PrimaryKeyRelatedField(
|
||||||
|
# queryset=Image.objects.all(), required=False, allow_null=True
|
||||||
|
# )
|
||||||
|
images = ImageSerializer(read_only=True, allow_null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Job
|
model = Job
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ from .views import (
|
|||||||
CostDetail,
|
CostDetail,
|
||||||
FieldListCreate,
|
FieldListCreate,
|
||||||
FieldDetail,
|
FieldDetail,
|
||||||
|
cultivation_calender,
|
||||||
|
ProductListCreate,
|
||||||
|
ProductDetail,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -20,13 +23,15 @@ def register_crud_urls(prefix, list_view, detail_view):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = []
|
urlpatterns = [
|
||||||
|
path("cultivation/", cultivation_calender.as_view(), name="cultivation_calender"),
|
||||||
|
]
|
||||||
urlpatterns += register_crud_urls("jobs", JobListCreate, JobDetail)
|
urlpatterns += register_crud_urls("jobs", JobListCreate, JobDetail)
|
||||||
urlpatterns += register_crud_urls("notes", NoteListCreate, NoteDetails)
|
urlpatterns += register_crud_urls("notes", NoteListCreate, NoteDetails)
|
||||||
urlpatterns += register_crud_urls("images", ImageListCreate, ImageDetail)
|
urlpatterns += register_crud_urls("images", ImageListCreate, ImageDetail)
|
||||||
urlpatterns += register_crud_urls("costs", CostListCreate, CostDetail)
|
urlpatterns += register_crud_urls("costs", CostListCreate, CostDetail)
|
||||||
urlpatterns += register_crud_urls("fields", FieldListCreate, FieldDetail)
|
urlpatterns += register_crud_urls("fields", FieldListCreate, FieldDetail)
|
||||||
|
urlpatterns += register_crud_urls("products", ProductListCreate, ProductDetail)
|
||||||
|
|
||||||
|
|
||||||
# urlpatterns = [
|
# urlpatterns = [
|
||||||
|
|||||||
@@ -3,13 +3,15 @@ from rest_framework import status, generics
|
|||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from .models import Job, Note, Image, Cost, Field
|
from .models import Job, Note, Image, Cost, Field, Cultivation_calender, Product
|
||||||
from .serializers import (
|
from .serializers import (
|
||||||
JobSerializer,
|
JobSerializer,
|
||||||
NoteSerializer,
|
NoteSerializer,
|
||||||
ImageSerializer,
|
ImageSerializer,
|
||||||
CostSerializer,
|
CostSerializer,
|
||||||
FieldSerializer,
|
FieldSerializer,
|
||||||
|
CultivationCalenderSerializer,
|
||||||
|
ProductSerializer,
|
||||||
)
|
)
|
||||||
from rest_framework.viewsets import ModelViewSet
|
from rest_framework.viewsets import ModelViewSet
|
||||||
|
|
||||||
@@ -98,6 +100,33 @@ class NoteDetails(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
return Note.objects.filter(user=self.request.user)
|
return Note.objects.filter(user=self.request.user)
|
||||||
|
|
||||||
|
|
||||||
|
class cultivation_calender(generics.ListCreateAPIView):
|
||||||
|
serializer_class = CultivationCalenderSerializer
|
||||||
|
premission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return Cultivation_calender.objects.all()
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
serializer.save()
|
||||||
|
|
||||||
|
|
||||||
|
class ProductListCreate(generics.ListCreateAPIView):
|
||||||
|
serializer_class = ProductSerializer
|
||||||
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return Product.objects.all()
|
||||||
|
|
||||||
|
|
||||||
|
class ProductDetail(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
serializer_class = ProductSerializer
|
||||||
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return Product.objects.filter()
|
||||||
|
|
||||||
|
|
||||||
class JobListCreate(generics.ListCreateAPIView):
|
class JobListCreate(generics.ListCreateAPIView):
|
||||||
serializer_class = JobSerializer
|
serializer_class = JobSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|||||||
BIN
images/218027982.jpg
Normal file
BIN
images/218027982.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 261 KiB |
@@ -43,6 +43,7 @@ INSTALLED_APPS = [
|
|||||||
"django.contrib.sessions",
|
"django.contrib.sessions",
|
||||||
"django.contrib.messages",
|
"django.contrib.messages",
|
||||||
"django.contrib.staticfiles",
|
"django.contrib.staticfiles",
|
||||||
|
"corsheaders",
|
||||||
"rest_framework",
|
"rest_framework",
|
||||||
"rest_framework_simplejwt",
|
"rest_framework_simplejwt",
|
||||||
"field",
|
"field",
|
||||||
@@ -51,6 +52,7 @@ INSTALLED_APPS = [
|
|||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
"django.middleware.security.SecurityMiddleware",
|
"django.middleware.security.SecurityMiddleware",
|
||||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||||
|
"corsheaders.middleware.CorsMiddleware",
|
||||||
"django.middleware.common.CommonMiddleware",
|
"django.middleware.common.CommonMiddleware",
|
||||||
"django.middleware.csrf.CsrfViewMiddleware",
|
"django.middleware.csrf.CsrfViewMiddleware",
|
||||||
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
||||||
@@ -58,6 +60,7 @@ MIDDLEWARE = [
|
|||||||
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
CORS_ALLOW_ALL_ORIGINS = True
|
||||||
ROOT_URLCONF = "settings.urls"
|
ROOT_URLCONF = "settings.urls"
|
||||||
|
|
||||||
TEMPLATES = [
|
TEMPLATES = [
|
||||||
|
|||||||
Reference in New Issue
Block a user