コード例 #1
0
ファイル: views_projet.py プロジェクト: wilrona/Gesacom
def closed(projet_id):

    from ..tache.models_tache import Tache
    projet = Projet.get_by_id(projet_id)

    if projet.closed:
        projet.closed = False
        projet.put()
    else:
        tache_exist = Tache.query(
            Tache.projet_id == projet.key
        ).count()

        tache_closed = Tache.query(
            Tache.projet_id == projet.key,
            Tache.closed == True
        ).count()

        if tache_closed == tache_exist:
            projet.closed = True
            projet.put()
        else:
            flash('Impossible de cloturer ce projet car il y\'a des taches non cloturees existantes', 'warning')

    return redirect(url_for('projet.edit', projet_id=projet_id))
コード例 #2
0
ファイル: forms_projet.py プロジェクト: wilrona/Gesacom
def controle_date_start(form, field):
    date_start = function.date_convert(field.data)
    # if datetime.date.today() > date_start and not form.id.data:
    #     raise wtf.ValidationError('La date de debut doit etre >= date en cours')

    if form.id.data:
        projet = Projet.get_by_id(int(form.id.data))
        if projet.date_start > date_start:
            raise wtf.ValidationError('La nouvelle date de debut doit etre >= a la date modifie')
コード例 #3
0
ファイル: views_projet.py プロジェクト: wilrona/Gesacom
def suspend(projet_id):

    projet = Projet.get_by_id(projet_id)

    if projet.suspend:
        projet.suspend = False
    else:
        projet.suspend = True
    projet.put()

    return redirect(url_for('projet.edit', projet_id=projet_id))
コード例 #4
0
ファイル: views_projet.py プロジェクト: wilrona/Gesacom
def delete(projet_id):

    from ..tache.models_tache import Tache
    from ..frais.models_frais import FraisProjet

    projet = Projet.get_by_id(projet_id)

    frais = FraisProjet.query(
        FraisProjet.projet_id == projet.key
    ).count()

    tache = Tache.query(
        Tache.projet_id == projet.key
    ).count()

    if frais or tache:
        flash('Impossible de supprimer le projet '+ str(projet.code), 'danger')
    else:
        flash('Suppression effectue avec succes', 'success')
        projet.key.delete()
    return redirect(url_for('projet.index'))
コード例 #5
0
ファイル: views_projet.py プロジェクト: wilrona/Gesacom
def edit(projet_id=None):
    menu = 'projet'
    submenu = 'projet'
    context = 'information'
    title_page = 'Projets - Edition'

    if projet_id:
        projet = Projet.get_by_id(projet_id)
        form = FormProjet(obj=projet)
        if request.method != 'POST':
            form.domaine_id.data = projet.domaine_id.get().key.id()
            form.service_id.data = projet.service_id.get().key.id()
            form.client_id.data = projet.client_id.get().key.id()
            form.responsable_id.data = projet.responsable_id.get().key.id()
            if projet.prospect_id:
                form.prospect_id.data = projet.prospect_id.get().key.id()
            form.id.data = projet_id

    else:
        projet = Projet()
        form = FormProjet()

    form.domaine_id.choices = [(0, 'Selection du domaine')]
    for domaine in Domaine.query():
        form.domaine_id.choices.append((domaine.key.id(), domaine.libelle))

    service = []
    if projet_id:
        services = Service.query(
            Service.domaine == projet.domaine_id
        )
        prospects = Client.query(
            Client.prospect == True
        )

    if form.domaine_id.data and not projet_id:
        domaine = Domaine.get_by_id(int(form.domaine_id.data))
        services = Service.query(
            Service.domaine == domaine.key
        )

    if not projet_id:
        prospects = Client.query(
            Client.prospect == True
        )


    form.client_id.choices = [(0, 'Selection du client')]
    for client in Client.query(Client.prospect == False):
        form.client_id.choices.append((client.key.id(), client.name))

    form.responsable_id.choices = [(0, 'Selection du responsable')]
    for user in Users.query(Users.email != '*****@*****.**'):
        form.responsable_id.choices.append((user.key.id(), user.first_name+" "+user.last_name))

    if form.validate_on_submit() and current_user.has_roles([('super_admin', 'projet')], ['edit']):

        projet.titre = form.titre.data

        client_code = Client.get_by_id(int(form.client_id.data))
        if not projet_id:
            projet_client = Projet.query(
                Projet.client_id == client_code.key
            ).count()
            projet.code = client_code.ref+""+str(projet_client+1)

        projet.heure = form.heure.data
        projet.montant = float(form.montant.data)
        projet.date_start = function.date_convert(form.date_start.data)
        projet.date_end = function.date_convert(form.date_end.data)
        projet.client_id = client_code.key

        if client_code.myself and int(form.prospect_id.data):
            pros = Client.get_by_id(int(form.prospect_id.data))
            projet.prospect_id = pros.key

        user = Users.get_by_id(int(form.responsable_id.data))
        projet.responsable_id = user.key

        domaine = Domaine.get_by_id(int(form.domaine_id.data))
        projet.domaine_id = domaine.key

        service = Service.get_by_id(int(form.service_id.data))
        projet.service_id = service.key

        if not projet_id:
            projet.facturable = form.facturable.data

        projet.closed = form.closed.data

        projet_id = projet.put()
        flash('Enregistrement effectue avec succes', 'success')
        return redirect(url_for('projet.edit', projet_id=projet_id.id()))

    return render_template('projet/edit.html', **locals())