Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Users | post/put/delete company functional for developer #332

Merged
merged 6 commits into from
Jun 28, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/users/backend/common/permissions/verifiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def verify(self, user) -> bool:
class CompanyOwnerVerify(AbstractUserVerify):
def verify(self, user) -> bool:
if isinstance(user, CompanyUser):
return Company.objects.filter(created_by=user).exists()
return user.is_superuser or Company.objects.filter(created_by=user).exists()
return False


Expand Down
12 changes: 0 additions & 12 deletions backend/users/backend/developer/permissions.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,7 @@
from rest_framework.permissions import BasePermission

from common.permissions.permissons import CompanyOwnerPerm
from developer.models import CompanyUser, Company


class IsAdminOrOwnerCompany(BasePermission):
def has_object_permission(self, request, view, obj):
return obj.created_by == request.user or request.user.is_staff


class IsAdmin(BasePermission):
def has_permission(self, request, view):
return request.user.is_staff


class CompanyOwnerEmployeePerm(CompanyOwnerPerm):
def has_object_permission(self, request, view, obj: CompanyUser):
return obj.company == Company.objects.get(created_by=request.user)
6 changes: 3 additions & 3 deletions backend/users/backend/developer/serializers/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
class CompanyUserSerializer(serializers.ModelSerializer):
class Meta:
model = CompanyUser
fields = '__all__'
fields = "__all__"


class CompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = '__all__'
fields = ("title", "description", "contact", "email", "created_by", "image")


class CompanyEmployeeSerializer(CompanySerializer):
class Meta:
model = Company
fields = ('email', 'description', 'image', 'created_by')
fields = ("email", "description", "image", "created_by")
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from rest_framework import serializers
from developer.models import CompanyUser, Company
from rest_framework.exceptions import ValidationError


class CompanyCreateSerializer(serializers.ModelSerializer):
created_by = serializers.HiddenField(default=serializers.CurrentUserDefault())

def validate(self, attrs):
user = self.context["request"].user
if Company.objects.filter(created_by=user).exists():
raise ValidationError("User can create only one company")
return attrs

class Meta:
model = Company
fields = ("title", "description", "contact", "email", "created_by", "image")


class CompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = ("title", "description", "contact", "email", "created_by", "image")
read_only_fields = ("created_by",)
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
class DeveloperRegistrationSerializer(serializers.ModelSerializer):
def create(self, validated_data):
"""send totp"""
return CompanyUser.objects.create_user(**validated_data, is_superuser=False)
return CompanyUser.objects.create_superuser(**validated_data, is_superuser=True)

class Meta:
model = CompanyUser
Expand Down
Loading