def send_to(request): body=request.data text=body["text"].replace("’","") social_link="" if "social" in body and "value" in body["social"] and len(body["social"]["value"])>0: social_link="<br>Vous pouvez répondre directement via <a href='"+body["social"]["value"]+"'>"+body["social"]["label"]+"</a>" log("Envoie du mail " + text) _from=User.objects.get(id=body["_from"]) _profil=Profil.objects.get(id=body['_to']) #TODO vérifier la black liste cc="" if "send_copy" in body and body["send_copy"]: cc = _from["email"] fullname=_from.first_name+" "+_from.last_name sendmail( subject="["+APPNAME+"] Message de "+fullname, template="contact.html", field={"text":text,"social_link":social_link,"fullname":fullname}, _to=[_profil.email,cc] ) return Response("Message envoyé", status=200)
def ask_for_update(request): delay_notif=request.GET.get("delay_notif",10) obso_max = request.GET.get("obso_max", 20) now=datetime.timestamp(datetime.now()) count=0 for profil in Profil.objects.all(): days=(now-dateToTimestamp(profil.dtLastUpdate))/(3600*24) days_notif=(now-dateToTimestamp(profil.dtLastNotif))/(3600*24) #TODO: a compléter avec d'autres criteres profil.obsolescenceScore=days*2 if profil.obsolescenceScore>obso_max and days_notif>delay_notif: Profil.objects.filter(id=profil.id).update(dtLastNotif=datetime.now(),obsolescenceScore=profil.obsolescenceScore) sendmail("Mettre a jour votre profil",[profil.email],"update",{ "name":profil.firstname, "appname":APPNAME, "url":DOMAIN_APPLI+"/edit?id="+str(profil.id)+"&email="+profil.email, "lastUpdate":str(profil.dtLastUpdate) }) count=count+1 else: Profil.objects.filter(id=profil.id).update(obsolescenceScore=profil.obsolescenceScore) return Response("Message envoyé à "+str(count)+" comptes", status=200)
def set_perms(request): profil_id = request.GET.get("perm") response = request.GET.get("response") ext_users = ExtraUser.objects.filter(user__id=int(request.GET.get("user"))) if len(ext_users.values())>0: ext_user=ext_users.first() if response=="accept": perms = yaml.safe_load(open(settings.STATIC_ROOT + "/profils.yaml", "r", encoding="utf-8").read()) for p in perms["profils"]: if p["id"]==profil_id: ext_user.perms=p["perm"] ext_user.save() sendmail("Acces à '" + profil_id + "'", ext_user.user.email,"accept_perm", dict( { "ask_user": ext_user.user.email, "ask_perm": profil_id, } )) break return Response({"message": "perm Accepted"}) else: sendmail("Refus d'acces à '"+ profil_id + "'",ext_user.user.email,"refuse_perm", dict( { "ask_user": ext_user.user.email, "ask_perm": profil_id, } )) return Response({"message": "perm rejected"})
def ask_perms(request): perm_id=request.GET.get("perm") ext_user = ExtraUser.objects.filter(id=request.GET.get("user")).first() detail_perm="" profils = yaml.safe_load(open(settings.STATIC_ROOT + "/profils.yaml", "r", encoding="utf-8").read()) for p in profils["profils"]: if p["id"]==perm_id: detail_perm=p["perm"] sendmail("Demande d'acces '"+perm_id+"' pour "+ext_user.user.email,EMAIL_PERM_VALIDATOR,"ask_perm",dict( { "ask_user":ext_user.user.email, "ask_perm":perm_id, "detail_perm":detail_perm, "url_ok":settings.DOMAIN_SERVER+"/api/set_perms/?user="******"&perm="+perm_id+"&response=accept", "url_cancel": settings.DOMAIN_SERVER + "/api/set_perms/?user="******"&perm=" + perm_id + "&response=refuse" }) ) return Response({"message": "Hello world"})
def create(self, data): """ Création d'un profil utilisateur avec initialisation du mot de passe :param data: :return: """ log("Création du password, du user et du token") if data["username"].startswith("___"): password = data["username"].replace("___", "") data["username"] = data["email"] sendmail( "Voici votre code de connexion via mail", [data["email"]], "welcome_google", dict({ "email": data["email"], "url_appli": DOMAIN_APPLI + "/?email=" + data["email"], "firstname": data["first_name"], "code": password, "appname": APPNAME })) else: password = reset_password(data["email"], data["username"]) if not "first_name" in data: data["first_name"] = data["email"].split(".")[0] if not "last_name" in data: data["last_name"] = "" user = User.objects.create_user( username=data["username"], password=password, email=data["email"], first_name=data["first_name"], last_name=data["last_name"], ) token = Token.objects.create(user=user) return user
def create(self, data): """ Création d'un profil utilisateur avec initialisation du mot de passe :param data: :return: """ log("Création du password, du user et du token") if data["username"].startswith("___"): password = data["username"].replace("___", "") data["username"] = data["email"] sendmail( "Voici votre code de connexion via mail", [data["email"]], "welcome_google", dict({ "email": data["email"], "url_appli": settings.DOMAIN_APPLI + "/?email=" + data["email"], "firstname": data["first_name"], "code": password, "appname": APPNAME })) else: password = reset_password(data["email"], data["username"]) if not "first_name" in data: data["first_name"] = data["email"].split(".")[0] if not "last_name" in data: data["last_name"] = "" user = User.objects.create_user( username=data["username"], password=password, email=data["email"], first_name=data["first_name"], last_name=data["last_name"], ) token = Token.objects.create(user=user) log("Récupération des profils") lp = list(Profil.objects.filter(email=data["email"])) profils = yaml.safe_load( open(settings.STATIC_ROOT + "/profils.yaml", "r").read()) perm = profils["profils"][1]["perm"] log("Création de l'extraUser") if len(lp) > 0: eu = ExtraUser.objects.create(user=user, perm=perm, profil=lp[0], black_list="", level=profils["profils"][1]["level"]) else: eu = ExtraUser.objects.create(user=user, perm=perm, black_list="", level=profils["profils"][1]["level"]) eu.save() user.save() log("Procédure de création terminée") return user