示例#1
0
文件: views.py 项目: f80dev/testdcp
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)
示例#2
0
文件: views.py 项目: f80dev/testdcp
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)
示例#3
0
文件: views.py 项目: f80dev/testdcp
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"})
示例#4
0
文件: views.py 项目: f80dev/testdcp
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"})
示例#5
0
    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
示例#6
0
    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