Skip to content

Commit

Permalink
Merge pull request #50 from iurwpoietknckvjndfsm-gndvkd/improvements
Browse files Browse the repository at this point in the history
improvements in all apps
  • Loading branch information
shroukhegazi committed Apr 30, 2023
2 parents cf9a9eb + 625f26a commit 6ad91a3
Show file tree
Hide file tree
Showing 13 changed files with 43 additions and 83 deletions.
52 changes: 22 additions & 30 deletions agriwise/crop_recomendation/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from django.db import transaction
from django.shortcuts import get_object_or_404
from rest_framework import permissions, status
from rest_framework.response import Response
from rest_framework.views import APIView

from agriwise.core.permissions import IsOwnerOrReadOnly
from agriwise.users.models import User

from .ml_models.crop_recommendation import RandomForestClassifier
Expand Down Expand Up @@ -103,42 +106,31 @@ def get(self, request, username, *args, **kwargs):


class CropGetDeleteApi(APIView):
permission_classes = [permissions.IsAuthenticated]
permission_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly]

def get(self, request, username, crop_id, *args, **kwargs):
user = User.objects.filter(username=username).first()
crop = CropRecommendation.objects.filter(id=crop_id).first()
if user is None:
return Response(
{"error": "User not found"}, status=status.HTTP_404_NOT_FOUND
try:
crop = CropRecommendation.objects.select_related("soil_elements").get(
id=crop_id, user__username=username
)
if crop is None:
return Response(
{"error": "Crop not found"}, status=status.HTTP_404_NOT_FOUND
)

crop_serializer = CropRecommendationSerializer(crop)
crop_serializer = CropRecommendationSerializer(crop)
except CropRecommendation.DoesNotExist as e:
return Response({"message": str(e)}, status=status.HTTP_404_NOT_FOUND)
return Response(crop_serializer.data, status=status.HTTP_200_OK)

def delete(self, request, username, crop_id, *args, **kwargs):
user = User.objects.filter(username=username).first()
crop = CropRecommendation.objects.filter(id=crop_id).first()
if user is None:
return Response(
{"error": "User not found"}, status=status.HTTP_404_NOT_FOUND
)
if crop is None:
return Response(
{"error": "Crop not found"}, status=status.HTTP_404_NOT_FOUND
)
crop = get_object_or_404(
CropRecommendation, id=crop_id, user__username=username
)
try:
with transaction.atomic():
soil_elements = crop.soil_elements
crop.delete()
soil_elements.delete()
except Exception as e:
return Response({"message": str(e)}, status=status.HTTP_404_NOT_FOUND)

if request.user.id == crop.user.id:
crop.delete()
return Response(
{"msg": "Crop has been deleted successfully!"},
status=status.HTTP_200_OK,
)
return Response(
{"error": "You are not authorized to delete this pocropst"},
status=status.HTTP_401_UNAUTHORIZED,
{"message": "Crop recommendation instance deleted successfully."},
status=status.HTTP_200_OK,
)
8 changes: 0 additions & 8 deletions agriwise/plant_diseases/permissions.py

This file was deleted.

11 changes: 9 additions & 2 deletions agriwise/plant_diseases/signals/handlers.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
import os

from django.db.models.signals import pre_delete
from django.db.models.signals import post_delete, pre_delete
from django.dispatch import receiver

from agriwise.plant_diseases.models import PlantDisease


@receiver(pre_delete, sender=PlantDisease)
def delete_image(sender, instance, **kwargs):
def delete_media_image(sender, instance, **kwargs):
# get the path of the image file
file_path = instance.plant_image.image.path
# delete the file if it exists
if os.path.exists(file_path):
os.remove(file_path)


# used post_delete to avoid maximum recursion depth exceeded error when deleting related model instances
@receiver(post_delete, sender=PlantDisease)
def delete_plant_image(sender, instance, **kwargs):
if instance.plant_image:
instance.plant_image.delete()
2 changes: 1 addition & 1 deletion agriwise/plant_diseases/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from rest_framework import generics, permissions, status
from rest_framework.response import Response

from agriwise.plant_diseases.permissions import IsOwnerOrReadOnly
from agriwise.core.permissions import IsOwnerOrReadOnly
from agriwise.users.models import User

from .ml_model.plant_diseases import mobile_net
Expand Down
8 changes: 0 additions & 8 deletions agriwise/soil_fertilizer/permissions.py

This file was deleted.

2 changes: 1 addition & 1 deletion agriwise/soil_fertilizer/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
from rest_framework.response import Response
from rest_framework.views import APIView

from agriwise.core.permissions import IsOwnerOrReadOnly
from agriwise.soil_fertilizer.ml.soil_fertilizer_ml_model import SoilFertilizerMLModel
from agriwise.soil_fertilizer.models import SoilFertilizer
from agriwise.soil_fertilizer.permissions import IsOwnerOrReadOnly
from agriwise.soil_fertilizer.serializers import SoilFertilizerSerializer


Expand Down
8 changes: 0 additions & 8 deletions agriwise/soil_quality/permissions.py

This file was deleted.

2 changes: 1 addition & 1 deletion agriwise/soil_quality/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from rest_framework.response import Response
from rest_framework.views import APIView

from agriwise.soil_quality.permissions import IsOwnerOrReadOnly
from agriwise.core.permissions import IsOwnerOrReadOnly

from .ml_models.soil_quality import Soil_quality_Classifier
from .models import SoilQuality
Expand Down
8 changes: 1 addition & 7 deletions agriwise/soil_type/migrations/0001_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,7 @@ class Migration(migrations.Migration):
]

operations = [
migrations.CreateModel(
name='MyImageModel',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('image', models.ImageField(upload_to='images/')),
],
),

migrations.CreateModel(
name='SoilImage',
fields=[
Expand Down
7 changes: 0 additions & 7 deletions agriwise/soil_type/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,6 @@

from agriwise.users.models import User

# Create your models here.


class MyImageModel(models.Model):
image = models.ImageField(upload_to="images/")
# add any additional fields you need


class SoilImage(models.Model):
image = ImageField(upload_to="soil-type/")
Expand Down
8 changes: 0 additions & 8 deletions agriwise/soil_type/permissions.py

This file was deleted.

8 changes: 7 additions & 1 deletion agriwise/soil_type/signals/handlers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import os

from django.db.models.signals import pre_delete
from django.db.models.signals import post_delete, pre_delete
from django.dispatch import receiver

from agriwise.soil_type.models import SoilType
Expand All @@ -13,3 +13,9 @@ def delete_image(sender, instance, **kwargs):
# delete the file if it exists
if os.path.exists(file_path):
os.remove(file_path)


@receiver(post_delete, sender=SoilType)
def delete_soil_image(sender, instance, **kwargs):
if instance.soil_image:
instance.soil_image.delete()
2 changes: 1 addition & 1 deletion agriwise/soil_type/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from rest_framework import generics, permissions, status
from rest_framework.response import Response

from agriwise.soil_type.permissions import IsOwnerOrReadOnly
from agriwise.core.permissions import IsOwnerOrReadOnly
from agriwise.users.models import User

from .ml_models.soil_type import mobile_net
Expand Down

0 comments on commit 6ad91a3

Please sign in to comment.