Example #1
0
class TaskSerializer(serializers.ModelSerializer):
    created_by = ProfileSerializer()
    assigned_to = ProfileSerializer(read_only=True, many=True)
    contacts = ContactSerializer(read_only=True, many=True)
    teams = TeamsSerializer(read_only=True, many=True)
    task_attachment = AttachmentsSerializer(read_only=True, many=True)
    task_comments = CommentSerializer(read_only=True, many=True)

    class Meta:
        model = Task
        fields = (
            "id",
            "title",
            "status",
            "priority",
            "due_date",
            "account",
            "created_by",
            "created_on",
            "contacts",
            "teams",
            "assigned_to",
            "task_attachment",
            "task_comments",
        )
Example #2
0
    def get_context_data(self, **kwargs):
        params = (self.request.query_params
                  if len(self.request.data) == 0 else self.request.data)
        queryset = self.model.objects.filter(company=self.request.company)

        request_post = params
        if request_post:
            if request_post.get("team_name"):
                queryset = queryset.filter(
                    name__icontains=request_post.get("team_name"))
            if request_post.get("created_by"):
                queryset = queryset.filter(
                    created_by=request_post.get("created_by"))
            if request_post.get("assigned_users"):
                queryset = queryset.filter(users__id__in=json.loads(
                    request_post.get("assigned_users")))

        context = {}
        search = False
        if (params.get("team_name") or params.get("created_by")
                or params.get("assigned_users")):
            search = True
        context["search"] = search

        context["teams"] = TeamsSerializer(queryset.distinct(), many=True).data
        users = User.objects.filter(
            is_active=True, company=self.request.company).order_by("id")
        context["users"] = UserSerializer(users, many=True).data
        return context
Example #3
0
class ContactSerializer(serializers.ModelSerializer):
    created_by = UserSerializer()
    company = CompanySerializer()
    teams = TeamsSerializer(read_only=True, many=True)
    assigned_to = UserSerializer(read_only=True, many=True)
    address = BillingAddressSerializer(read_only=True)
    get_team_users = UserSerializer(read_only=True, many=True)
    get_team_and_assigned_users = UserSerializer(read_only=True, many=True)
    get_assigned_users_not_in_teams = UserSerializer(read_only=True, many=True)

    class Meta:
        model = Contact
        fields = (
            'id',
            "first_name",
            "last_name",
            "email",
            "phone",
            "address",
            "description",
            "assigned_to",
            "created_by",
            "created_on",
            "is_active",
            "teams",
            "company",
            "created_on_arrow",
            "get_team_users",
            "get_team_and_assigned_users",
            "get_assigned_users_not_in_teams",
        )
class CaseSerializer(serializers.ModelSerializer):
    account = AccountSerializer(read_only=True, many=True)
    contacts = ContactSerializer(read_only=True, many=True)
    assigned_to = UserSerializer(read_only=True, many=True)
    created_by = UserSerializer(read_only=True)
    teams = TeamsSerializer(read_only=True, many=True)
    company = CompanySerializer()
    get_team_users = UserSerializer(read_only=True, many=True)
    get_team_and_assigned_users = UserSerializer(read_only=True, many=True)
    get_assigned_users_not_in_teams = UserSerializer(read_only=True, many=True)

    class Meta:
        model = Case
        fields = (
            "id",
            "name",
            "status",
            "priority",
            "case_type",
            "account",
            "contacts",
            "closed_on",
            "description",
            "assigned_to",
            "created_by",
            "created_on",
            "is_active",
            "teams",
            "company",
            "get_team_users",
            "get_team_and_assigned_users",
            "get_assigned_users_not_in_teams",
            "created_on_arrow",
        )
Example #5
0
class CaseSerializer(serializers.ModelSerializer):
    account = AccountSerializer()
    contacts = ContactSerializer(read_only=True, many=True)
    assigned_to = ProfileSerializer(read_only=True, many=True)
    created_by = ProfileSerializer(read_only=True)
    teams = TeamsSerializer(read_only=True, many=True)
    org = OrganizationSerializer()

    class Meta:
        model = Case
        fields = (
            "id",
            "name",
            "status",
            "priority",
            "case_type",
            "closed_on",
            "description",
            "created_by",
            "created_on",
            "is_active",
            "account",
            "contacts",
            "teams",
            "assigned_to",
            "org",
            "created_on_arrow",
        )
Example #6
0
 def get_context_data(self, **kwargs):
     params = self.request.query_params if len(
         self.request.data) == 0 else request.data
     context = {}
     context["contact_obj"] = ContactSerializer(self.contact).data
     user_assgn_list = [
         assigned_to.id for assigned_to in self.contact.assigned_to.all()
     ]
     if self.request.user.role == "ADMIN" or self.request.user.is_superuser:
         self.users = User.objects.filter(
             is_active=True, company=self.request.company).order_by("email")
     else:
         self.users = User.objects.filter(
             role="ADMIN", company=self.request.company).order_by("email")
     if self.request.user == self.contact.created_by:
         user_assgn_list.append(self.request.user.id)
     if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
         if self.request.user.id not in user_assgn_list:
             raise PermissionDenied
     context["address_obj"] = BillingAddressSerializer(
         self.contact.address).data
     context["users"] = UserSerializer(self.users, many=True).data
     context["countries"] = COUNTRIES
     context["teams"] = TeamsSerializer(
         Teams.objects.filter(company=self.request.company), many=True).data
     context["assignedto_list"] = [
         int(i) for i in params.getlist("assigned_to", []) if i
     ]
     return context
Example #7
0
class EventSerializer(serializers.ModelSerializer):
    created_by = ProfileSerializer()
    assigned_to = ProfileSerializer(read_only=True, many=True)
    contacts = ContactSerializer(read_only=True, many=True)
    teams = TeamsSerializer(read_only=True, many=True)
    event_attachment = AttachmentsSerializer(read_only=True, many=True)
    event_comments = CommentSerializer(read_only=True, many=True)
    org = OrganizationSerializer()

    class Meta:
        model = Event
        fields = (
            "id",
            "name",
            "event_type",
            "status",
            "is_active",
            "disabled",
            "start_date",
            "start_time",
            "end_date",
            "end_time",
            "description",
            "date_of_meeting",
            "created_by",
            "created_on",
            "contacts",
            "teams",
            "assigned_to",
            "event_attachment",
            "event_comments",
            "org"
        )
Example #8
0
 def get_context_data(self, **kwargs):
     params = self.request.query_params if len(
         self.request.data) == 0 else self.request.data
     context = {}
     if self.request.user.role == "ADMIN" or self.request.user.is_superuser:
         self.users = User.objects.filter(
             is_active=True, company=self.request.company).order_by("email")
     else:
         self.users = User.objects.filter(
             role="ADMIN", company=self.request.company).order_by("email")
     context["users"] = UserSerializer(self.users, many=True).data
     context["countries"] = COUNTRIES
     context["assignedto_list"] = [
         int(i) for i in params.getlist("assigned_to", []) if i
     ]
     context["teams"] = TeamsSerializer(
         Teams.objects.filter(company=self.request.company), many=True).data
     context["contact_obj_list"] = ContactSerializer(
         self.get_queryset(params), many=True).data
     context["per_page"] = params.get("per_page")
     context["assignedto_list"] = [
         int(i) for i in params.getlist("assigned_to", []) if i
     ]
     search = False
     if (params.get("first_name") or params.get("city")
             or params.get("phone") or params.get("email")
             or params.get("assigned_to")):
         search = True
     context["search"] = search
     return context
Example #9
0
 def get(self, request, pk, **kwargs):
     if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
         return Response(
             {
                 "error": True,
                 "errors":
                 "You don't have permission to perform this action.",
             },
             status=status.HTTP_403_FORBIDDEN,
         )
     self.team_obj = self.get_object(pk)
     if self.team_obj.company != request.company:
         return Response({
             "error":
             True,
             "errors":
             "User company doesnot match with header...."
         })
     context = {}
     context["team"] = TeamsSerializer(self.team_obj).data
     context["users"] = UserSerializer(
         User.objects.filter(
             is_active=True,
             company=self.request.company).order_by("email"),
         many=True,
     ).data
     return Response(context)
Example #10
0
class CaseSerializer(serializers.ModelSerializer):
    account = AccountSerializer(read_only=True, many=True)
    contacts = ContactSerializer(read_only=True, many=True)
    assigned_to = UserSerializer(read_only=True, many=True)
    created_by = UserSerializer(read_only=True)
    teams = TeamsSerializer(read_only=True, many=True)
    company = CompanySerializer()
    get_team_users = UserSerializer(read_only=True, many=True)
    get_team_and_assigned_users = UserSerializer(read_only=True, many=True)
    get_assigned_users_not_in_teams = UserSerializer(read_only=True, many=True)

    class Meta:
        model = Case
        fields = (
            'id',
            'name',
            'status',
            'priority',
            'case_type',
            'account',
            'contacts',
            'closed_on',
            'description',
            'assigned_to',
            'created_by',
            'created_on',
            'is_active',
            'teams',
            'company',
            'get_team_users',
            'get_team_and_assigned_users',
            "get_assigned_users_not_in_teams",
            "created_on_arrow",
        )
Example #11
0
    def get_context_data(self, **kwargs):
        params = (self.request.query_params
                  if len(self.request.data) == 0 else self.request.data)
        queryset = self.model.objects.filter(company=self.request.company)
        accounts = Account.objects.filter(company=self.request.company)
        contacts = Contact.objects.filter(company=self.request.company)
        if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
            queryset = queryset.filter(
                Q(assigned_to__in=[self.request.user])
                | Q(created_by=self.request.user))
            accounts = accounts.filter(
                Q(created_by=self.request.user)
                | Q(assigned_to=self.request.user)).distinct()
            contacts = contacts.filter(
                Q(created_by=self.request.user)
                | Q(assigned_to=self.request.user)).distinct()

        request_post = params
        if request_post:
            if request_post.get("title"):
                queryset = queryset.filter(
                    title__icontains=request_post.get("title"))
            if request_post.get("status"):
                queryset = queryset.filter(status=request_post.get("status"))
            if request_post.get("priority"):
                queryset = queryset.filter(
                    priority=request_post.get("priority"))
        context = {}
        search = False
        if (params.get("title") or params.get("status")
                or params.get("priority")):
            search = True
        context["search"] = search

        if search:
            context["tasks"] = TaskSerializer(queryset.distinct(),
                                              many=True).data
            return context

        context["tasks"] = TaskSerializer(queryset.distinct(), many=True).data
        context["status"] = STATUS_CHOICES
        context["priority"] = PRIORITY_CHOICES
        users = []
        if self.request.user.role == "ADMIN" or self.request.user.is_superuser:
            users = User.objects.filter(
                is_active=True, company=self.request.company).order_by("email")
        elif self.request.user.google.all():
            users = []
        else:
            users = User.objects.filter(
                role="ADMIN", company=self.request.company).order_by("email")
        context["users"] = UserSerializer(users, many=True).data
        if self.request.user == "ADMIN":
            context["teams_list"] = TeamsSerializer(
                Teams.objects.filter(company=self.request.company),
                many=True).data
        context["accounts_list"] = AccountSerializer(accounts, many=True).data
        context["contacts_list"] = ContactSerializer(contacts, many=True).data
        return context
Example #12
0
 def get(self, request, *args, **kwargs):
     data = {}
     teams = Teams.objects.filter(org=request.org).order_by('-id')
     teams_data = TeamsSerializer(teams, many=True).data
     profiles = Profile.objects.filter(
         is_active=True, org=request.org).order_by('user__email')
     profiles_data = ProfileSerializer(profiles, many=True).data
     data["teams"] = teams_data
     data["profiles"] = profiles_data
     return Response(data)
 def get(self, request, *args, **kwargs):
     data = {}
     teams = Teams.objects.filter(company=request.company)
     teams_data = TeamsSerializer(teams, many=True).data
     users = User.objects.filter(company=request.company)
     users_data = UserSerializer(users, many=True).data
     users = User.objects.all().values_list("id", flat=True)
     data["teams"] = teams_data
     data["users_data"] = users_data
     data["users"] = list(users)
     return Response(data)
Example #14
0
 def get(self, request, pk, **kwargs):
     if self.request.profile.role != "ADMIN" and not self.request.profile.is_admin:
         return Response(
             {
                 "error": True,
                 "errors": "You don't have permission to perform this action.",
             },
             status=status.HTTP_403_FORBIDDEN,
         )
     self.team_obj = self.get_object(pk)
     context = {}
     context["team"] = TeamsSerializer(self.team_obj).data
     return Response(context)
Example #15
0
    def get_context_data(self, **kwargs):
        params = (self.request.query_params
                  if len(self.request.data) == 0 else self.request.data)
        queryset = self.model.objects.filter(
            company=self.request.company).order_by("-created_on")
        if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
            queryset = queryset.filter(
                Q(assigned_to__in=[self.request.user])
                | Q(created_by=self.request.user)).distinct()

        request_post = params
        if request_post:
            if request_post.get("name"):
                queryset = queryset.filter(
                    first_name__icontains=request_post.get("name"))
            if request_post.get("city"):
                queryset = queryset.filter(
                    address__city__icontains=request_post.get("city"))
            if request_post.get("phone"):
                queryset = queryset.filter(
                    phone__icontains=request_post.get("phone"))
            if request_post.get("email"):
                queryset = queryset.filter(
                    email__icontains=request_post.get("email"))
            if request_post.getlist("assigned_to"):
                queryset = queryset.filter(assigned_to__id__in=json.loads(
                    request_post.get("assigned_to"))).distinct()

        context = {}
        search = False
        if (params.get("first_name") or params.get("city")
                or params.get("phone") or params.get("email")
                or params.get("assigned_to")):
            search = True
        context["search"] = search
        context["contact_obj_list"] = ContactSerializer(queryset,
                                                        many=True).data
        context["users"] = UserSerializer(
            User.objects.filter(
                is_active=True,
                company=self.request.company).order_by("email"),
            many=True,
        ).data
        context["countries"] = COUNTRIES
        context["teams"] = TeamsSerializer(
            Teams.objects.filter(company=self.request.company), many=True).data
        context["per_page"] = params.get("per_page")
        context["assignedto_list"] = UserSerializer(
            User.objects.filter(company=self.request.company), many=True).data
        return context
Example #16
0
 def get(self, request, format=None):
     users = []
     if request.user.role == "ADMIN" or request.user.is_superuser:
         users = User.objects.filter(
             is_active=True, company=request.company).order_by("email")
     else:
         users = User.objects.filter(
             role="ADMIN", company=request.company).order_by("email")
     context = {}
     context["users"] = UserSerializer(users, many=True).data
     teams = Teams.objects.filter(company=request.company)
     context["teams"] = TeamsSerializer(teams, many=True).data
     context['status'] = (("active", "active"), ("inactive", "inactive"))
     return Response(context)
Example #17
0
 def get(self, request, *args, **kwargs):
     if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
         return Response({
             "error": True,
             "Message": "Permission Denied"
         },
                         status=status.HTTP_403_FORBIDDEN)
     data = {}
     teams = Teams.objects.filter(company=request.company)
     teams_data = TeamsSerializer(teams, many=True).data
     users = User.objects.filter(company=request.company, is_active=True)
     users_data = UserSerializer(users, many=True).data
     data["teams"] = teams_data
     data["users_data"] = users_data
     return Response(data)
Example #18
0
class ContactSerializer(serializers.ModelSerializer):
    created_by = ProfileSerializer()
    teams = TeamsSerializer(read_only=True, many=True)
    assigned_to = ProfileSerializer(read_only=True, many=True)
    address = BillingAddressSerializer(read_only=True)
    get_team_users = ProfileSerializer(read_only=True, many=True)
    get_team_and_assigned_users = ProfileSerializer(read_only=True, many=True)
    get_assigned_users_not_in_teams = ProfileSerializer(read_only=True, many=True)
    contact_attachment = AttachmentsSerializer(read_only=True, many=True)
    date_of_birth = serializers.DateField()
    org = OrganizationSerializer()

    class Meta:
        model = Contact
        fields = (
            "id",
            "salutation",
            "first_name",
            "last_name",
            "date_of_birth",
            "organization",
            "title",
            "primary_email",
            "secondary_email",
            "mobile_number",
            "secondary_number",
            "department",
            "language",
            "do_not_call",
            "address",
            "description",
            "linked_in_url",
            "facebook_url",
            "twitter_username",
            "contact_attachment",
            "assigned_to",
            "created_by",
            "created_on",
            "is_active",
            "teams",
            "created_on_arrow",
            "get_team_users",
            "get_team_and_assigned_users",
            "get_assigned_users_not_in_teams",
            "org"
        )
Example #19
0
 def get_context_data(self, **kwargs):
     params = self.request.query_params if len(
         self.request.data) == 0 else request.data
     context = {}
     if self.request.user.role == "ADMIN" or self.request.user.is_superuser:
         self.users = User.objects.filter(
             is_active=True, company=self.request.company).order_by("email")
     else:
         self.users = User.objects.filter(
             role="ADMIN", company=self.request.company).order_by("email")
     context["users"] = UserSerializer(self.users, many=True).data
     context["countries"] = COUNTRIES
     context["assignedto_list"] = [
         int(i) for i in params.getlist("assigned_to", []) if i
     ]
     context["teams"] = TeamsSerializer(
         Teams.objects.filter(company=self.request.company), many=True).data
     return context
Example #20
0
class AccountSerializer(serializers.ModelSerializer):
    created_by = UserSerializer()
    lead = LeadSerializer()
    company = CompanySerializer()
    tags = TagsSerailizer(read_only=True, many=True)
    assigned_to = UserSerializer(read_only=True, many=True)
    contacts = ContactSerializer(read_only=True, many=True)
    teams = TeamsSerializer(read_only=True, many=True)

    class Meta:
        model = Account
        # fields = ‘__all__’
        fields = ('id', "name", "email", "phone", "industry",
                  "billing_address_line", "billing_street", "billing_city",
                  "billing_state", "billing_postcode", "billing_country",
                  "website", "description", "created_by", "created_on",
                  "is_active", "tags", "status", "lead", "contact_name",
                  "contacts", "assigned_to", "teams", "company")
Example #21
0
class AccountSerializer(serializers.ModelSerializer):
    created_by = ProfileSerializer()
    lead = LeadSerializer()
    org = OrganizationSerializer()
    tags = TagsSerailizer(read_only=True, many=True)
    assigned_to = ProfileSerializer(read_only=True, many=True)
    contacts = ContactSerializer(read_only=True, many=True)
    teams = TeamsSerializer(read_only=True, many=True)
    account_attachment = AttachmentsSerializer(read_only=True, many=True)

    class Meta:
        model = Account
        # fields = ‘__all__’
        fields = ("id", "name", "email", "phone", "industry",
                  "billing_address_line", "billing_street", "billing_city",
                  "billing_state", "billing_postcode", "billing_country",
                  "website", "description", "account_attachment", "created_by",
                  "created_on", "is_active", "tags", "status", "lead",
                  "contact_name", "contacts", "assigned_to", "teams", "org")
Example #22
0
class LeadSerializer(serializers.ModelSerializer):
    assigned_to = UserSerializer(read_only=True, many=True)
    created_by = UserSerializer()
    tags = TagsSerializer(read_only=True, many=True)
    lead_attachment = AttachmentsSerializer(read_only=True, many=True)
    teams = TeamsSerializer(read_only=True, many=True)
    company = CompanySerializer()
    lead_comments = LeadCommentSerializer(read_only=True, many=True)

    class Meta:
        model = Lead
        # fields = ‘__all__’
        fields = (
            "id",
            "title",
            "first_name",
            "last_name",
            "phone",
            "email",
            "status",
            "source",
            "address_line",
            "street",
            "city",
            "state",
            "postcode",
            "country",
            "website",
            "description",
            "lead_attachment",
            "lead_comments",
            "assigned_to",
            "account_name",
            "opportunity_amount",
            "created_by",
            "created_on",
            "is_active",
            "enquery_type",
            "tags",
            "created_from_site",
            "teams",
            "company",
        )
Example #23
0
    def get_context_data(self, **kwargs):
        params = (self.request.query_params
                  if len(self.request.data) == 0 else self.request.data)
        queryset = self.model.objects.all()

        request_post = params
        if request_post:
            if request_post.get("team_name"):
                queryset = queryset.filter(
                    name__icontains=request_post.get("team_name"))
            if request_post.get("created_by"):
                queryset = queryset.filter(
                    created_by=request_post.get("created_by"))
            if request_post.get("assigned_users"):
                queryset = queryset.filter(users__id__in=json.loads(
                    request_post.get("assigned_users")))

        context = {}
        search = False
        if (params.get("team_name") or params.get("created_by")
                or params.get("assigned_users")):
            search = True
        context["search"] = search

        results_teams = self.paginate_queryset(queryset.distinct(),
                                               self.request,
                                               view=self)
        teams = TeamsSerializer(results_teams, many=True).data
        context["per_page"] = 10
        context.update({
            "teams_count": self.count,
            "next": self.get_next_link(),
            "previous": self.get_previous_link(),
            "page_number": int(self.offset / 10) + 1,
        })
        context["teams"] = teams

        users = User.objects.filter(is_active=True, ).order_by("id")
        context["users"] = UserSerializer(users, many=True).data
        return context
Example #24
0
class OpportunitySerializer(serializers.ModelSerializer):
    account = AccountSerializer()
    closed_by = UserSerializer()
    created_by = UserSerializer()
    company = CompanySerializer()
    tags = TagsSerializer(read_only=True, many=True)
    assigned_to = UserSerializer(read_only=True, many=True)
    contacts = ContactSerializer(read_only=True, many=True)
    teams = TeamsSerializer(read_only=True, many=True)
    opportunity_attachment = AttachmentsSerializer(read_only=True, many=True)

    class Meta:
        model = Opportunity
        # fields = ‘__all__’
        fields = (
            "id",
            "name",
            "stage",
            "currency",
            "amount",
            "lead_source",
            "probability",
            "contacts",
            "closed_by",
            "closed_on",
            "description",
            "assigned_to",
            "created_by",
            "created_on",
            "is_active",
            "tags",
            "opportunity_attachment",
            "teams",
            "company",
            "created_on_arrow",
            "account",
            # "get_team_users",
            # "get_team_and_assigned_users",
            # "get_assigned_users_not_in_teams",
        )
Example #25
0
    def get_context_data(self, **kwargs):
        params = (
            self.request.query_params
            if len(self.request.data) == 0
            else self.request.data
        )
        queryset = self.model.objects.filter(org=self.request.org).order_by('-id')
        if params:
            if params.get("team_name"):
                queryset = queryset.filter(
                    name__icontains=params.get("team_name")
                )
            if params.get("created_by"):
                queryset = queryset.filter(created_by=params.get("created_by"))
            if params.get("assigned_users"):
                queryset = queryset.filter(
                    users__id__in=json.loads(params.get("assigned_users"))
                )

        context = {}
        results_teams = self.paginate_queryset(
            queryset.distinct(), self.request, view=self
        )
        teams = TeamsSerializer(results_teams, many=True).data
        if results_teams:
            offset = queryset.filter(id__gte=results_teams[-1].id).count()
            if offset == queryset.count():
                offset = None
        else:
            offset = 0
        context.update(
            {
                "teams_count": self.count,
                "offset": offset
            }
        )
        context["teams"] = teams
        return context
Example #26
0
class LeadSerializer(serializers.ModelSerializer):
    assigned_to = ProfileSerializer(read_only=True, many=True)
    created_by = ProfileSerializer()
    country = serializers.SerializerMethodField()
    tags = TagsSerializer(read_only=True, many=True)
    lead_attachment = AttachmentsSerializer(read_only=True, many=True)
    teams = TeamsSerializer(read_only=True, many=True)
    lead_comments = LeadCommentSerializer(read_only=True, many=True)

    def get_country(self, obj):
        return obj.get_country_display()

    class Meta:
        model = Lead
        # fields = ‘__all__’
        fields = ("id", "title", "first_name", "last_name", "phone", "email",
                  "status", "source", "address_line", "street", "city",
                  "state", "postcode", "country", "website", "description",
                  "lead_attachment", "lead_comments", "assigned_to",
                  "account_name", "opportunity_amount", "created_by",
                  "created_on", "is_active", "enquiry_type", "tags",
                  "created_from_site", "teams", "skype_ID", "industry",
                  "company")
Example #27
0
class InvoiceSerailizer(serializers.ModelSerializer):
    from_address = BillingAddressSerializer()
    to_address = BillingAddressSerializer()
    created_by = UserSerializer()
    org = OrganizationSerializer()
    teams = TeamsSerializer(read_only=True, many=True)
    assigned_to = UserSerializer(read_only=True, many=True)

    class Meta:
        model = Invoice
        fields = (
            "id",
            "invoice_title",
            "invoice_number",
            "status",
            "due_date",
            "name",
            "email",
            "phone",
            "from_address",
            "to_address",
            "created_on",
            "created_by",
            "currency",
            "quantity",
            "rate",
            "tax",
            "total_amount",
            "amount_due",
            "amount_paid",
            "is_email_sent",
            "details",
            "teams",
            "assigned_to",
            "org",
        )
Example #28
0
    def get_context_data(self, **kwargs):
        params = (self.request.query_params
                  if len(self.request.data) == 0 else self.request.data)
        queryset = self.model.objects.all()
        accounts = Account.objects.all()
        contacts = Contact.objects.all()
        if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
            queryset = queryset.filter(
                Q(assigned_to__in=[self.request.user])
                | Q(created_by=self.request.user))
            accounts = accounts.filter(
                Q(created_by=self.request.user)
                | Q(assigned_to=self.request.user)).distinct()
            contacts = contacts.filter(
                Q(created_by=self.request.user)
                | Q(assigned_to=self.request.user)).distinct()

        request_post = params
        if request_post:
            if request_post.get("title"):
                queryset = queryset.filter(
                    title__icontains=request_post.get("title"))
            if request_post.get("status"):
                queryset = queryset.filter(status=request_post.get("status"))
            if request_post.get("priority"):
                queryset = queryset.filter(
                    priority=request_post.get("priority"))
        context = {}
        search = False
        if params.get("title") or params.get("status") or params.get(
                "priority"):
            search = True
        context["search"] = search
        results_tasks = self.paginate_queryset(queryset.distinct(),
                                               self.request,
                                               view=self)
        tasks = TaskSerializer(results_tasks, many=True).data
        context["per_page"] = 10
        context.update({
            "tasks_count": self.count,
            "next": self.get_next_link(),
            "previous": self.get_previous_link(),
            "page_number": int(self.offset / 10) + 1,
        })
        context["tasks"] = tasks
        context["status"] = STATUS_CHOICES
        context["priority"] = PRIORITY_CHOICES
        users = []
        if self.request.user.role == "ADMIN" or self.request.user.is_superuser:
            users = User.objects.filter(is_active=True, ).order_by("email")
        elif self.request.user.google.all():
            users = []
        else:
            users = User.objects.filter(role="ADMIN", ).order_by("email")
        context["users"] = UserSerializer(users, many=True).data
        if self.request.user == "ADMIN":
            context["teams_list"] = TeamsSerializer(Teams.objects.all(),
                                                    many=True).data
        context["accounts_list"] = AccountSerializer(accounts, many=True).data
        context["contacts_list"] = ContactSerializer(contacts, many=True).data
        return context
Example #29
0
    def get_context_data(self, **kwargs):
        context = {}
        user_assgn_list = [
            assigned_to.id for assigned_to in self.task_obj.assigned_to.all()
        ]
        if self.request.user == self.task_obj.created_by:
            user_assgn_list.append(self.request.user.id)
        if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
            if self.request.user.id not in user_assgn_list:
                return Response(
                    {
                        "error":
                        True,
                        "errors":
                        "You don't have Permission to perform this action",
                    },
                    status=status.HTTP_403_FORBIDDEN,
                )

        comments = Comment.objects.filter(task=self.task_obj).order_by("-id")
        attachments = Attachments.objects.filter(
            task=self.task_obj).order_by("-id")

        assigned_data = self.task_obj.assigned_to.values("id", "email")

        if self.request.user.is_superuser or self.request.user.role == "ADMIN":
            users_mention = list(
                User.objects.filter(is_active=True, ).values("username"))
        elif self.request.user != self.task_obj.created_by:
            users_mention = [{"username": self.task_obj.created_by.username}]
        else:
            users_mention = list(
                self.task_obj.assigned_to.all().values("username"))
        if self.request.user.role == "ADMIN" or self.request.user.is_superuser:
            users = User.objects.filter(is_active=True, ).order_by("email")
        else:
            users = User.objects.filter(role="ADMIN", ).order_by("email")

        if self.request.user == self.task_obj.created_by:
            user_assgn_list.append(self.request.user.id)
        if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
            if self.request.user.id not in user_assgn_list:
                return Response(
                    {
                        "error":
                        True,
                        "errors":
                        "You don't have Permission to perform this action",
                    },
                    status=status.HTTP_403_FORBIDDEN,
                )
        team_ids = [user.id for user in self.task_obj.get_team_users]
        all_user_ids = users.values_list("id", flat=True)
        users_excluding_team_id = set(all_user_ids) - set(team_ids)
        users_excluding_team = User.objects.filter(
            id__in=users_excluding_team_id)
        context.update({
            "task_obj":
            TaskSerializer(self.task_obj).data,
            "attachments":
            AttachmentsSerializer(attachments, many=True).data,
            "comments":
            CommentSerializer(comments, many=True).data,
            "users_mention":
            users_mention,
            "assigned_data":
            assigned_data,
        })
        context["users"] = UserSerializer(users, many=True).data
        context["users_excluding_team"] = UserSerializer(users_excluding_team,
                                                         many=True).data
        context["teams"] = TeamsSerializer(Teams.objects.all(), many=True).data
        return context
Example #30
0
    def get_context_data(self, **kwargs):
        params = (self.request.query_params
                  if len(self.request.data) == 0 else self.request.data)
        queryset = self.model.objects.filter(company=self.request.company)
        accounts = Account.objects.filter(company=self.request.company)
        if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
            queryset = queryset.filter(
                Q(created_by=self.request.user)
                | Q(assigned_to=self.request.user)).distinct()
            accounts = accounts.filter(
                Q(created_by=self.request.user)
                | Q(assigned_to=self.request.user)).distinct()

        if params:
            if params.get("invoice_title_or_number"):
                queryset = queryset.filter(
                    Q(invoice_title__icontains=params.get(
                        "invoice_title_or_number"))
                    | Q(invoice_number__icontains=params.get(
                        "invoice_title_or_number"))).distinct()

            if params.get("created_by"):
                queryset = queryset.filter(created_by=params.get("created_by"))
            if params.get("assigned_users"):
                queryset = queryset.filter(
                    assigned_to__in=json.loads(params.get("assigned_users")))
            if params.get("status"):
                queryset = queryset.filter(status=params.get("status"))
            if params.get("total_amount"):
                queryset = queryset.filter(
                    total_amount__icontains=params.get("total_amount"))

        context = {}
        search = False
        if (params.get("invoice_title_or_number") or params.get("created_by")
                or params.get("assigned_users") or params.get("status")
                or params.get("total_amount")):
            search = True

        context["search"] = search
        results_invoice = self.paginate_queryset(queryset.distinct(),
                                                 self.request,
                                                 view=self)
        invoices = InvoiceSerailizer(results_invoice, many=True).data
        context["per_page"] = 10
        context.update({
            "invoices_count": self.count,
            "next": self.get_next_link(),
            "previous": self.get_previous_link(),
            "page_number": int(self.offset / 10) + 1,
        })
        context["invoices"] = invoices
        context["users"] = UserSerializer(
            User.objects.filter(
                is_active=True,
                company=self.request.company).order_by("email"),
            many=True,
        ).data
        context["accounts_list"] = AccountSerializer(accounts, many=True).data
        if self.request.user == "ADMIN":
            context["teams_list"] = TeamsSerializer(
                Teams.objects.filter(company=self.request.company),
                many=True).data
        context["status"] = INVOICE_STATUS
        context["currency"] = CURRENCY_CODES
        context["countries"] = COUNTRIES

        return context