class LifetimeLicenseSerializer(serializers.ModelSerializer): package = PackageSerializer() month_group = serializers.IntegerField(required=False) class Meta: model = models.LifetimeLicense fields = '__all__'
class OrderContactSerializer(serializers.ModelSerializer): packages = PackageSerializer(many=True) class Meta: model = Order exclude = [ 'contacts', ]
class ReportOrderSerializer(serializers.ModelSerializer): sale_rep = MeSerializer() packages = PackageSerializer(many=True) campaign = CampaignSerializer() contacts = ContactSerializer() income = serializers.SerializerMethodField() class Meta: model = models.Order fields = '__all__' def get_income(self, instance): return 1
class OrderSaleRepChartSerializer(serializers.ModelSerializer): contacts = ContactSerializer() sale_rep = MeSerializer() packages = PackageSerializer(many=True) campaign = CampaignSerializer() step_details = StepDetailWithoutOrderSerializer(many=True) history = OrderHistorySerializer(many=True) licenses = LicenseSerializer(many=True) lifetime_licenses = LifetimeLicenseSerializer(many=True) # order_packages = Order class Meta: model = models.Order fields = '__all__'
class ReportCampaignSerializer(serializers.ModelSerializer): packages = PackageSerializer(many=True) manager = MeSerializer() product = serializers.SerializerMethodField() class Meta: model = models.Campaign fields = '__all__' def get_product(self, instance): try: return ProductSerializier( instance.packages.all()[0].features.all()[0].product).data except: return None
class OrderChartSerializer(serializers.ModelSerializer): contacts = ContactSerializer() sale_rep = MeSerializer() packages = PackageSerializer(many=True) campaign = CampaignSerializer() step_details = StepDetailWithoutOrderSerializer(many=True) history = OrderHistorySerializer(many=True) licenses = LicenseSerializer(many=True) lifetime_licenses = LifetimeLicenseSerializer(many=True) amount = serializers.IntegerField(required=False) month_group = serializers.IntegerField() # order_packages = Order class Meta: model = models.Order fields = '__all__'
class CampaignSerializer(serializers.ModelSerializer): follow_up_plan = FollowUpPlanSerializer() marketing_plan = MarketingPlanSerializer() manager = MeSerializer() packages = PackageSerializer(many=True) notes = NoteSerializer(many=True) product = serializers.SerializerMethodField() contacts = serializers.SerializerMethodField() no_waiting = serializers.SerializerMethodField() no_order = serializers.SerializerMethodField() class Meta: model = models.Campaign fields = '__all__' def get_product(self, instance): try: return ProductSerializier( instance.packages.all()[0].features.all()[0].product).data except: return None def get_contacts(self, instance): orders = Order.objects.filter(campaign=instance) contacts = [model_to_dict(o.contacts) for o in orders.all()] contact_distinct = set([c['id'] for c in contacts]) marketings = models.ContactMarketing.objects.filter(campaign=instance) contacts += [ model_to_dict(m.contact) for m in marketings.all() if not m.contact.id in contact_distinct ] return contacts def get_no_waiting(self, instance): return len(instance.contact_marketing_plan.all()) def get_no_order(self, instance): return len(instance.orders.all())
class OrderSerializer(serializers.ModelSerializer): contacts = ContactSerializer() sale_rep = MeSerializer() packages = PackageSerializer(many=True) campaign = CampaignSerializer() step_details = StepDetailWithoutOrderSerializer(many=True) history = OrderHistorySerializer(many=True) all_histories = serializers.SerializerMethodField() licenses = LicenseSerializer(many=True) lifetime_licenses = LifetimeLicenseSerializer(many=True) # order_packages = Order class Meta: model = models.Order fields = '__all__' def get_all_histories(self, instance): cur_contact = instance.contacts histories = models.OrderHistory.objects.filter( order__contacts=cur_contact) serializer = OrderHistorySerializer(histories, many=True) return serializer.data