def edit(user_id, page, current_year, budget_id=None): user = Users.objects.get(id=user_id) if budget_id: budget = Budget.objects.get(id=budget_id) disponible = budget.heure prest1 = BudgetPrestation.objects(budget_id=budget.id) for pres in prest1: if pres.prestation_id.sigle == 'FOR': formation = pres.heure if pres.prestation_id.sigle == 'DEV': developpement = pres.heure if pres.prestation_id.sigle == 'ADM': administration = pres.heure if pres.prestation_id.sigle == 'PRO': production = pres.heure else: budget = Budget() success = False dispo = 0.0 dispo2 = 0.0 if request.method == 'POST': disponible = request.form['disponible'] production = request.form['production'] formation = request.form['formation'] developpement = request.form['developpement'] administration = request.form['administration'] dispo = float(request.form['disponible']) - float( request.form['administration']) dispo -= float(request.form['production']) dispo -= float(request.form['formation']) dispo -= float(request.form['developpement']) dispo = round(dispo, 1) error = False if dispo > 0.0: error = True message = 'La somme des heures de prestation n\'est pas egale aux heures disponibles' if dispo < 0.0: error = True message = 'La somme des heures de prestation est superieure aux heures disponibles ' + str( dispo) if not error: if not budget_id: budget.date_start = datetime.date(current_year, 1, 1) budget.user_id = user budget.heure = float(request.form['disponible']) bud_id = budget.save() prest = Prestation.objects(sigle__ne=None) for pres in prest: presti = BudgetPrestation.objects( Q(prestation_id=pres.id) & Q(budget_id=bud_id)).first() if presti: if pres.sigle == 'FOR': presti.heure = float(request.form['formation']) if pres.sigle == 'DEV': presti.heure = float(request.form['developpement']) if pres.sigle == 'ADM': presti.heure = float(request.form['administration']) if pres.sigle == 'PRO': presti.heure = float(request.form['production']) presti.budget_id = bud_id presti.prestation_id = pres presti.save() else: prestis = BudgetPrestation() if pres.sigle == 'FOR': prestis.heure = float(request.form['formation']) if pres.sigle == 'DEV': prestis.heure = float(request.form['developpement']) if pres.sigle == 'ADM': prestis.heure = float(request.form['administration']) if pres.sigle == 'PRO': prestis.heure = float(request.form['production']) prestis.budget_id = bud_id prestis.prestation_id = pres prestis.save() flash('Enregistement effectue avec succes', 'success') success = True return render_template('budget/edit.html', **locals())
def index(): menu = 'societe' submenu = 'budget' context = 'collaborateur' title_page = 'Parametre - Budget Collaborateur' search = False q = request.args.get('q') if q: search = True try: page = int(request.args.get('page', 1)) except ValueError: page = 1 limit = 10 offset = ((page - 1) * 10) #liste des budgets collaborateurs users = Users.objects( email__ne='*****@*****.**').skip(offset).limit(limit) count = Users.objects(email__ne='*****@*****.**').count() time_zones = pytz.timezone('Africa/Douala') current_year = datetime.datetime.now(time_zones).year now_year = datetime.datetime.now(time_zones).year # date = datetime.date(date_auto_nows, 1, 1) if request.args.get('year') and request.args.get('year') is not None: current_year = int(request.args.get('year')) #Traitement du formulaire d'affichage de la liste des annees years = [] budget_year = Budget.objects() for bud in budget_year: year = {} year['date'] = bud.date_start.year years.append(year) list_year = [] for key, group in groupby(years, lambda item: item["date"]): if key != now_year: list_year.append(key) for i in range(now_year, now_year + 2): if i not in list_year: list_year.append(i) datas = users # Traitement du tableau des budgets a afficher list_budget = [] for user in datas: data = {} data['id'] = user.id data['full_name'] = user.first_name + " " + user.last_name data['taux'] = user.tauxH budget = Budget.objects( Q(date_start=datetime.date(current_year, 1, 1), ) & Q(user_id=user.id)).first() data['disponible'] = 0 data['budget_id'] = None data['budget_prestation'] = [] if budget: data['disponible'] = budget.heure data['budget_id'] = budget.id budget_prest = BudgetPrestation.objects(budget_id=budget.id) for prestation in budget_prest: data2 = {} data2['id'] = prestation.prestation_id.id data2['prestation'] = prestation.prestation_id.libelle data2['sigle'] = prestation.prestation_id.sigle data2['time'] = prestation.heure data['budget_prestation'].append(data2) list_budget.append(data) pagination = Pagination(css_framework='bootstrap3', page=page, total=count, search=search, record_name='Budget') return render_template('budget/index.html', **locals())