class EventSerializer(serializers.ModelSerializer): created_by = UserSerializer() assigned_to = UserSerializer(read_only=True, many=True) contacts = ContactSerializer(read_only=True, many=True) teams = TeamsSerializer(read_only=True, many=True) company = CompanySerializer() event_attachment = AttachmentsSerializer(read_only=True, many=True) event_comments = CommentSerializer(read_only=True, many=True) 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", "company", )
class OpportunitySerializer(serializers.ModelSerializer): account = AccountSerializer() closed_by = UserSerializer() created_by = UserSerializer() class Meta: model = Opportunity # fields = ‘__all__’ fields = ( 'id', "name", "account", "stage", "currency", "amount", "lead_source", "probability", "contacts", "closed_by", "closed_on", "description", "assigned_to", "created_by", "created_on", "is_active", "tags", "teams", "company", "created_on_arrow", # "get_team_users", # "get_team_and_assigned_users", # "get_assigned_users_not_in_teams", )
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 TaskSerializer(serializers.ModelSerializer): created_by = UserSerializer() assigned_to = UserSerializer(read_only=True, many=True) contacts = ContactSerializer(read_only=True, many=True) teams = TeamsSerializer(read_only=True, many=True) company = CompanySerializer() 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", "company", )
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", )
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", )
class TeamsSerializer(serializers.ModelSerializer): users = UserSerializer(read_only=True, many=True) created_by = UserSerializer() company = CompanySerializer() class Meta: model = Teams fields = ("id", "name", "description", "users", "created_on", "created_by", "company", "created_on_arrow")
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
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
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
class BlockedEmailAddSerailizer(serializers.ModelSerializer): created_by = UserSerializer() company = CompanySerializer() email = serializers.EmailField def __init__(self, *args, **kwargs): request_obj = kwargs.pop("request_obj", None) super(BlockedEmailAddSerailizer, self).__init__(*args, **kwargs) self.fields["created_by"].required = False self.fields["company"].required = False self.company = request_obj.company def validate_email(self, email): if self.instance: if ( BlockedEmail.objects.filter(email=email, company=self.company) .exclude(id=self.instance.id) .exists() ): raise serializers.ValidationError("Email already exists") else: if BlockedEmail.objects.filter(email=email, company=self.company).exists(): raise serializers.ValidationError("email already exists") return email class Meta: model = BlockedEmail fields = ("id", "email", "created_on", "created_by", "company")
class BlockedDomainSerailizer(serializers.ModelSerializer): created_by = UserSerializer() company = CompanySerializer() class Meta: model = BlockedDomain fields = ("id", "domain", "created_on", "created_by", "company")
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)
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
class BlockedDomainAddSerailizer(serializers.ModelSerializer): created_by = UserSerializer() company = CompanySerializer() def __init__(self, *args, **kwargs): request_obj = kwargs.pop("request_obj", None) super(BlockedDomainAddSerailizer, self).__init__(*args, **kwargs) self.fields["created_by"].required = False self.fields["company"].required = False self.company = request_obj.company def validate_domain(self, domain): domain_regex = "^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$" if re.match(domain_regex, domain) is None: raise serializers.ValidationError("Enter a valid domain.") if self.instance: if BlockedDomain.objects.filter(domain__iexact=domain, company=self.company).exclude( id=self.instance.id).exists(): raise serializers.ValidationError( "Domain already exists with this name") else: if BlockedDomain.objects.filter(domain__iexact=domain, company=self.company).exists(): raise serializers.ValidationError( "Domain already exists with this name") return domain class Meta: model = BlockedDomain fields = ("id", "domain", "created_on", "created_by", "company")
def get_context_data(self, **kwargs): context = {} open_leads = self.get_queryset().exclude(status="closed") close_leads = self.get_queryset().filter(status="closed") context["status"] = LEAD_STATUS context["open_leads"] = LeadSerializer(open_leads, many=True).data context["close_leads"] = LeadSerializer(close_leads, many=True).data context["source"] = LEAD_SOURCE 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 tag_ids = list( set( self.get_queryset().values_list( "tags", flat=True, ) ) ) context["tags"] = TagsSerailizer( Tags.objects.filter(id__in=tag_ids), many=True).data context["countries"] = COUNTRIES return context
class InvoiceHistorySerializer(serializers.ModelSerializer): updated_by = UserSerializer() class Meta: model = InvoiceHistory fields = ( "id", "invoice_title", "invoice_number", "status", "due_date", "name", "email", "phone", "created_on", "currency", "quantity", "rate", "total_amount", "amount_due", "amount_paid", "is_email_sent", "details", "updated_by", )
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
class BlockedEmailSerailizer(serializers.ModelSerializer): created_by = UserSerializer() company = CompanySerializer() email = serializers.EmailField class Meta: model = BlockedEmail fields = ("id", "email", "created_on", "created_by", "company")
class LeadSerializer(serializers.ModelSerializer): # user = UserSerializer() assigned_to = UserSerializer(read_only=True, many=True) created_by = UserSerializer() tags = TagsSerailizer(read_only=True, many=True) contacts = ContactSerializer(read_only=True, many=True) class Meta: model = Lead # fields = ‘__all__’ fields = ( 'id', "title", "first_name", "last_name", "email", "phone", "status", "source", "address_line", "street", "city", "state", "postcode", "country", "website", "description", "assigned_to", "account_name", "opportunity_amount", "created_by", "created_on", "is_active", "enquery_type", "tags", "contacts", "created_from_site", "teams", "company", # "phone_raw_input", # "created_on_arrow", # "get_team_users", # "get_team_and_assigned_users", # "get_assigned_users_not_in_teams", )
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")
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", )
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", )
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", )
class ContactEmailCampaignSerailizer(serializers.ModelSerializer): created_by = UserSerializer() company = CompanySerializer() def __init__(self, *args, **kwargs): request_obj = kwargs.pop("request_obj", None) super(ContactEmailCampaignSerailizer, self).__init__(*args, **kwargs) self.fields["name"].required = False self.fields["created_by"].required = False self.fields["company"].required = False class Meta: model = ContactEmailCampaign fields = ("id", "name", "last_name", "email", "created_on", "created_by", "company")
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
def get_context_data(self, **kwargs): context = {} context["contact_obj_list"] = ContactSerializer(self.get_queryset(), many=True).data context["per_page"] = params.get("per_page") context["users"] = UserSerializer( User.objects.filter(is_active=True).order_by("username"), many=True).data 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
def get_context_data(self, **kwargs): context = {} open_accounts = AccountSerializer( self.get_queryset().filter(status="open"), many=True).data close_accounts = AccountSerializer( self.get_queryset().filter(status="close"), many=True).data context["users"] = UserSerializer(User.objects.filter( is_active=True, company=self.request.company).order_by("email"), many=True).data context["open_accounts"] = open_accounts context["close_accounts"] = close_accounts context["industries"] = INDCHOICES context["per_page"] = self.request.POST.get("per_page") tag_ids = list( set( Account.objects.filter( company=self.request.company).values_list("tags", flat=True))) context["tags"] = TagsSerailizer(Tags.objects.filter(id__in=tag_ids), many=True).data if self.request.POST.get("tag", None): context["request_tags"] = self.request.POST.getlist("tag") elif self.request.GET.get("tag", None): context["request_tags"] = self.request.GET.getlist("tag") else: context["request_tags"] = None search = False if (self.request.POST.get("name") or self.request.POST.get("city") or self.request.POST.get("industry") or self.request.POST.get("tag")): search = True context["search"] = search tab_status = "Open" if self.request.POST.get("tab_status"): tab_status = self.request.POST.get("tab_status") context["tab_status"] = tab_status TIMEZONE_CHOICES = [(tz, tz) for tz in pytz.common_timezones] context["timezones"] = TIMEZONE_CHOICES context["settings_timezone"] = settings.TIME_ZONE return context
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
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