def story_post_save(sender, **kwargs): """ A signal for sending push notification to contributors and viewers """ if kwargs.get('created') is False: return story = kwargs.get('instance') update_story_access.delay(story) # Queue the task to calculate and update permissions story_permission_notifications.delay(story=story) # Create an activity for the current user to follow the story new_activities = [ Activity(content_object=story, user=story.author, type=Activity.FOLLOW_STORY) ] # Story author has already viewed the story new_activities.extend([ Activity(content_object=story, user=story.author, type=Activity.VIEW) ]) Activity.objects.bulk_create(new_activities)
def get_shop_promotion_activities(): shop_promot_activities = cache.get("banner_activities") if not shop_promot_activities: shop_promot_activities = Activity.get_shop_promot_acitivity() # cache.set("pop_articles", articles) return shop_promot_activities
def home(request): if request.user: most_rated_products = Rate.get_most_rated_products(max_size=4) most_hot_products = Product.get_hot(max_size=4) recent_portfolios = Portfolio.get_latest(max_size=4) recent_articles = Article.get_recommended() activities = Activity.get_banner_activity() types = ProductType.objects.all() return render(request, "welcome.html", {"most_rated_products": most_rated_products, "recent_articles": recent_articles, "types": types, 'activities': activities, "recent_portfolios": recent_portfolios, "most_hot_products": most_hot_products}) else: return render(request, "home.html")
def add_activity(user, activity_string): a = Activity(activity_desc=activity_string, user=user) a.save()
def get_banner_activities(): banner_activities = cache.get("banner_activities") if not banner_activities: banner_activities = Activity.get_banner_activity() # cache.set("pop_articles", articles) return banner_activities
def validate(self, data): """Validate this activity - check end date is after start date, etc.""" # Check that start_date is before end_date if ( "end_date" in data and data["end_date"] and data["start_date"] > data["end_date"] ): raise serializers.ValidationError( _("Startdato skal være før eller identisk med slutdato") ) # One time payments should have a payment date in the payment plan. is_one_time_payment = ( data["payment_plan"]["payment_type"] == PaymentSchedule.ONE_TIME_PAYMENT ) if "start_date" not in data and not is_one_time_payment: raise serializers.ValidationError( _("der skal angives en startdato for ydelsen") ) if is_one_time_payment and ( "payment_date" not in data["payment_plan"] or data["payment_plan"]["payment_date"] is None ): raise serializers.ValidationError( _("der skal angives en betalingsdato for engangsbetaling") ) # Monthly payments that are not expected adjustments should have a # valid start_date, end_date and day_of_month that results in payments. modifies = "modifies" in data and data["modifies"] is_monthly_payment = ( "payment_frequency" in data["payment_plan"] and data["payment_plan"]["payment_frequency"] == PaymentSchedule.MONTHLY ) if ( is_monthly_payment and ("end_date" in data and data["end_date"]) and not modifies ): start_date = data["start_date"] end_date = data["end_date"] payment_day_of_month = data["payment_plan"]["payment_day_of_month"] next_payment_date = start_date.replace(day=payment_day_of_month) if next_payment_date < start_date: next_payment_date += relativedelta(months=+1) if not (start_date <= next_payment_date <= end_date): raise serializers.ValidationError( _("Betalingsparametre resulterer ikke i nogen betalinger") ) # Cash payments that are not fictive should have a "valid" start_date # based on payment date exclusions. data_copy = data.copy() if ( "price_per_unit" in data_copy["payment_plan"] and data_copy["payment_plan"]["price_per_unit"] ): data_copy["payment_plan"]["price_per_unit"] = PriceSerializer( data=data_copy["payment_plan"]["price_per_unit"] ).instance data_copy["payment_plan"] = PaymentSchedule( **data_copy.pop("payment_plan") ) # Pop the service provider and attach a serialized version. if "service_provider" in data_copy and data_copy["service_provider"]: data_copy["service_provider"] = ServiceProvider( **data_copy.pop("service_provider") ) instance = Activity(**data_copy) is_valid_start_date = instance.is_valid_activity_start_date() if not is_valid_start_date: raise serializers.ValidationError( _( "Startdato skal være i fremtiden og " "der skal være mindst to udbetalingsdage" " fra nu og til startdatoen" ) ) if modifies: # run the validate_expected flow. try: instance.validate_expected() except forms.ValidationError as e: raise serializers.ValidationError(e.message) return data
def obj_get_list(self, request=None, **kwargs): return Activity.get_active_for_user(user=request.user)
def populate(): #Fashion House f1 = Fashion_House(fashion_name="Chanel", debrief_received=False) f2 = Fashion_House(fashion_name="Dior", debrief_received=True) f3 = Fashion_House(fashion_name="Lancel", debrief_received=False) f4 = Fashion_House(fashion_name="Gucci", debrief_received=False) f5 = Fashion_House(fashion_name="LVMH", debrief_received=True) f6 = Fashion_House(fashion_name="Louis Vuitton", debrief_received=True) f1.save() f2.save() f3.save() f4.save() f5.save() f6.save() # Event e1 = Event(title="Du style en croks", date_debut='2019-12-12T15:00:00Z', date_fin='2019-12-17T15:00:00Z', description= "Bienvenue a notre événement voici un sommaire des activites :", place="Paris", fashion_name=f1) e2 = Event(title="Hiver neige", date_debut='2020-11-12T15:00:00Z', date_fin='2020-11-17T15:00:00Z', description= "Bienvenue a notre événement voici un sommaire des activites :", place="Russie", fashion_name=f2) e1.save() e2.save() #One_to_One o1 = One_to_One(date='2019-12-12T15:00:00Z', salon=10, staff="Paul JP", title=e1) o2 = One_to_One(date='2019-12-12T15:00:00Z', salon=10, staff="Marie JP", title=e2) o3 = One_to_One(date='2019-12-12T15:00:00Z', salon=10, staff="Kevin JP", title=e1) o4 = One_to_One(date='2019-12-12T15:00:00Z', salon=10, staff="Pierre JP", title=e2) o1.save() o2.save() o3.save() o4.save() #Activity a1 = Activity(title="Restaut à la Giraffe ", date_act='2019-12-13T00:00:00Z', supplier_name="Chantal", adress="89 rue de rivoli", budget=100, real_price=150, cancelation_policy_deadline=48, cancelation_policy_fees=0.8, contact_name="Fabris", phone_number="0604157343", mail_adress="*****@*****.**", status="cf", typ_act="1") a2 = Activity(title="Tour Eiffel de nuit ", date_act='2019-12-15T00:00:00Z', supplier_name="Charly", adress="17 rue des étudiants", budget=200, real_price=0, cancelation_policy_deadline=72, cancelation_policy_fees=0.6, contact_name="Fabris", phone_number="0604157343", mail_adress="*****@*****.**", status="cnf", typ_act="2") a3 = Activity(title="Spa massage", date_act='2019-12-17T00:00:00Z', supplier_name="Joseph", adress="50 rue de rivoli", budget=1000, real_price=800, cancelation_policy_deadline=48, cancelation_policy_fees=0.5, contact_name="Fabris", phone_number="0604157343", mail_adress="*****@*****.**", status="f", typ_act="4") a1.save() a2.save() a3.save() #Concierge c1 = Concierge(login="******", mdp="0001", name="Jean", last_name="Concierge") c2 = Concierge(login="******", mdp="0002", name="Kevin", last_name="Concierge") c3 = Concierge(login="******", mdp="0003", name="Marie", last_name="Concierge") c1.save() c2.save() c3.save() c1.list_events.add(e1, e2) c2.list_events.add(e1) c3.list_events.add(e2) #Chauffeur t1 = Chauffeur(name="Karim", last_name="Uber", langue="Fr", lieu_depart="Paris Roissy", lieu_arrivee="Carlton", consigne="Ne pas perdre le client de vue", horaire_chauffeur='2019-12-12T15:00:00Z') t1.save() #Hotel h1 = Hotel(reservation_nb=5, date_debut='2019-12-12T15:00:00Z', date_fin='2019-12-12T15:00:00Z', room_type="Suite Deluxe", tarif=500, estimated_budget=550, paid_by_JP=2, paid_by_client=3, night_booked_jp=2, night_booked_client=3, welcome_pack_arrived=True) h1.save() #Planning p1 = Planning(nights_booked=5, digital_planning=True, language="EN", travel_fees=500) p2 = Planning(nights_booked=3, language="FR", travel_fees=500) p3 = Planning(nights_booked=2, digital_planning=True, language="EN", travel_fees=2000) p4 = Planning(nights_booked=4, digital_planning=True, language="EN", travel_fees=500) p2.save() p3.save() p4.save() p1.save() p1.list_activities.add(a1) p1.list_driver.add(t1) p1.list_hotel.add(h1) p2.list_activities.add(a2) p2.list_driver.add(t1) p2.list_hotel.add(h1) p3.list_activities.add(a3) p3.list_driver.add(t1) p3.list_hotel.add(h1) #Client cl1 = Client(name="Jacques", last_name="Dupont", zone="Asie", contact_principal="*****@*****.**", langue="En", budget_jour=500, budget_semaine=5000, plan=p1, date=o1, telephone="0664587985", date_arrival='2019-12-12T15:00:00Z', date_leave='2019-12-17T15:00:00Z', status='al') cl2 = Client(name="Hiba", last_name="Beldi", zone="Moyen-Orient", langue="Arabe", budget_jour=150, budget_semaine=1500, date=o2, plan=p2, telephone="0664152465", date_arrival='2019-12-13T15:00:00Z', date_leave='2019-12-16T15:00:00Z', status='mn') cl3 = Client(name="Jérémie", last_name="Bencini", zone="Arctique", langue="Anglais", budget_jour=3000, budget_semaine=30000, date=o3, plan=p3, telephone="0668358476", date_arrival='2019-12-11T15:00:00Z', date_leave='2019-12-19T15:00:00Z', status='mn') cl4 = Client(name="Diane", last_name="Du Peloux", zone="Afrique", langue="Français", budget_jour=300, budget_semaine=3000, date=o4, plan=p4, telephone="0542487945", date_arrival='2019-12-14T15:00:00Z', date_leave='2019-12-20T15:00:00Z', status='al') cl1.save() cl2.save() cl3.save() cl4.save() cl1.title.add(e1) cl2.title.add(e1) cl3.title.add(e2) cl4.title.add(e2) #Hospitality_packs hp1 = Hospitality_Pack(collection="Printemps 2020", horaires_dispo_concierge="Lundi-Dimance: 7h-23h", title=e1) hp1.save() hp1.list_services.add(a1)