Пример #1
0
def create_ancien(prenom, nom, promo, ecole, mail_asso, diplome):
    """
    Créer un ancien à partir des données d'un formulaire

    :param str prenom:
    :param str nom:
    :param int promo:
    :param str ecole: In E, P, N
    :param str mail_asso:
    :param str diplome:
    :return:
    """
    ins = __ancien.insert().returning(__ancien.c.id_ancien).values(
        prenom=prenom,
        prenom_slug=helper.slugify(prenom),
        nom=nom,
        nom_slug=helper.slugify(nom),
        ecole=ecole,
        promo=promo,
        mail_asso=mail_asso,
        diplome=diplome,
    )
    inserted_id = engine.execute(ins).first()[0]
    update_ancien_date(inserted_id)
    return inserted_id
Пример #2
0
def _insert_update_adresse(ville, id_pays, id_adresse, adresse="", code=""):
    """
    Mettre à jour une adresse perso ou pro, en updatant ou insérant.
    En updatant ou insérant la ville au passage

    :param id_ancien: int, id_ancien
    :param adresse: str, l'adresse en texte libre
    :param ville: str, la ville en texte libre
    :param code: int, le ocde postal en texte libre puis converti en int
    :param id_pays: int
    :return: id_adresse: l'id de l'adresse insérée / updatéee
    """
    # 2 : est-ce que la ville existe ? si non, insert !
    id_ville = None
    if helper.is_valid_integer(id_pays):
        sel = select([__ville.c.id_ville])
        sel = sel.where(and_(_slug_by_column(__ville.c.slug, helper.slugify(ville), True), __ville.c.id_pays == id_pays))
        sel = sel.distinct()
        res = engine.execute(sel).first()

        if res is not None:
            # si la ville existe, on récupère son numéro
            id_ville = res[0]

        elif (ville is not None and ville != "") and (id_pays is not None and id_pays != ""):
            # si la ville n'existe pas, mais qu'il y a un texte et un pays
            # on l'insère et on récupère son numéro
            ins = __ville.insert().values(nom=ville, slug=helper.slugify(ville), id_pays=id_pays)
            engine.execute(ins)
            sel = select([__ville.c.id_ville])
            sel = sel.where(and_(_slug_by_column(__ville.c.slug, helper.slugify(ville), True), __ville.c.id_pays == id_pays))
            res = engine.execute(sel).first()
            id_ville = res[0]

    # 3 : update (ou insert) de l'adresse
    if id_ville is not None:

        if id_adresse is not None:
            a = __adresse
            # si l'adresse existe, la mettre à jour
            up = a.update().where(a.c.id_adresse == id_adresse).values(id_ville=id_ville, adresse=adresse, code=code)

            engine.execute(up)

        else:
            a = __adresse

            # si l'adresse n'existe pas, l'insérer
            ins = a.insert().values(id_ville=id_ville, adresse=adresse, code=code)
            engine.execute(ins)

            sel = select([a.c.id_adresse]).where(and_(a.c.id_ville == id_ville, a.c.adresse == adresse, a.c.code == code))
            id_adresse = engine.execute(sel).first()[0]

    return id_adresse
Пример #3
0
def find_entreprise_autocomplete(term, limit=5):
    """
    Rechercher une liste d'entreprise pour l'autocomplete

    :param term: terme de recherche (un seul)
    :return: SELECT nom FROM entreprise WHERE entreprise.slug LIKE 'term%'
    """
    result = None
    if not (term is None or term == ""):
        sel = select([__entreprise.c.nom], __entreprise.c.slug.like(helper.slugify(term)+'%'))
        sel = sel.distinct().order_by(__entreprise.c.nom).limit(limit)
        result = engine.execute(sel)
    return result
Пример #4
0
def find_mot_autocomplete(term, limit=10):
    """
    Recherche une liste de mot dans la table mot. Limite les réponses à _limit_ réponses.
    On recherche d'abord l'expression complète, par exemple
    '''SNCF Services'''
    Puis on recherche le dernier mot, ici, '''Services'''

    :param term: terme de recherche, une seule string
    :return: SELECT mot FROM mot WHERE mot.slug LIKE 'slugify(term)%' OR mot.slug LIKE 'slugify(last_term%)'
    """
    result = None
    if not (term is None or  term == ""):
        slug = helper.slugify(term)
        condition1 = __mot.c.slug.like(slug +'%')

        sel = select([__mot.c.mot]).where(condition1).order_by(desc(__mot.c.occurence)).limit(limit)
        result = engine.execute(sel).fetchall()
        #last_word = slug.strip("-").split("-")[-1]
        #if len(result) == 0 and last_word != "":
        #    condition2 = __mot.c.slug.like(last_word+"%")
        #    sel = select([__mot.c.mot]).where(condition2).order_by(desc(__mot.c.occurence)).limit(limit)
        #    result = engine.execute(sel).fetchall()
    return result
Пример #5
0
def update_experience(id_ancien, id_experience, ville, id_pays, adresse, code,
                      entreprise, poste, description, mail, site, telephone, mobile,
                      date_debut, date_fin=None, id_experience_linkedin=None):
    """
    Mettre à jour / insérer une expérience pro ancien

    :param id_ancien:
    :param id_experience:
    :param ville:
    :param id_pays:
    :param adresse:
    :param code:
    :param entreprise:
    :param poste:
    :param description:
    :param mail:
    :param site:
    :param telephone:
    :param mobile:
    :return: inserted_id, l'id de l'expérience insérée / mise à jour
    """
    success = False
    inserted_id = None

    if id_ancien is not None:

        # s'occuper de l'adresse
        id_adresse = None
        sel = select([__experience.c.id_adresse]).where(and_(__experience.c.id_ancien == id_ancien, __experience.c.id_experience == id_experience))
        res = engine.execute(sel).first()
        if res is not None:
            id_adresse = res[0]
        id_adresse = _insert_update_adresse(ville, id_pays, id_adresse, adresse, code)

        # s'occuper de l'entreprise
        id_entreprise = None
        sel = select([__entreprise.c.id_entreprise]).where(_slug_by_column(__entreprise.c.slug, helper.slugify(entreprise), True))
        res = engine.execute(sel).first()
        if res is not None:
            id_entreprise = res[0]

        if id_entreprise is None and entreprise != "":
            ins = __entreprise.insert().values(nom=entreprise, slug=helper.slugify(entreprise))
            engine.execute(ins)
            sel = select([__entreprise.c.id_entreprise]).where(_slug_by_column(__entreprise.c.slug, helper.slugify(entreprise), True))
            id_entreprise = engine.execute(sel).first()[0]

        # insert / update experience
        if id_experience is not None:

            # update ssi l'expérience est associée au bon ancien
            up = __experience.update().where(
                and_(
                    __experience.c.id_experience == id_experience,
                    __experience.c.id_ancien == id_ancien
                )
            ).values(
                id_entreprise = id_entreprise,
                id_adresse = id_adresse,
                poste = poste,
                description = description,
                telephone = telephone,
                mobile = mobile,
                mail = mail,
                site = site,
                debut = date_debut,
                fin = date_fin
            )
            engine.execute(up)
            inserted_id = id_experience
        else:
            ins = __experience.insert().values(
                id_ancien = id_ancien,
                id_entreprise = id_entreprise,
                id_adresse = id_adresse,
                poste = poste,
                description = description,
                telephone = telephone,
                mobile = mobile,
                mail = mail,
                site = site,
                debut = date_debut,
                fin = date_fin,
                id_experience_linkedin = id_experience_linkedin
            )
            engine.execute(ins)

        success = update_ancien_date(id_ancien)
    return success