def removed_admin(): data = [] element = [] count = 0 for item in request.form.getlist('item_id'): info = {} item_found = Users.objects().get(id=item) if not len(item_found.roles): info['statut'] = 'NOK' info['message'] = 'L\'utilisateur "' + item_found.full_name( ) + '" n\' est plus Administrateur.' data.append(info) else: item_found.roles = [] item_found.user = 0 element.append(str(item_found.id)) count += 1 item_found.save() if count: info = {} info['statut'] = 'OK' info['message'] = str(count)+' utilisateur(s) enleve(s) comme Admnistrateur avec success. ils sont redevenu ' \ 'des commerciaux ' info['element'] = element data.append(info) data = json.dumps(data) return data
def horaire_refresh(): users = Users.objects() for user in users: horaires = Horaire.objects(user=user.id) taux = 0.0 date1 = None id = None for horaire in horaires: if horaire.date_start.date() <= datetime.date.today(): if not date1: date1 = horaire.date_start taux = horaire.montant id = horaire.id else: if date1 < horaire.date_start: date1 = horaire.date_start taux = horaire.montant id = horaire.id user.tauxH = taux if id: user.tauxHApp = id user.save() if request.args.get('user_id'): return redirect(url_for('user_param.horaire', user_id=request.args.get('user_id'))) else: return render_template('401.html')
def edit_exist(): title_page = 'Utilisateurs' admin_role = Roles.objects(valeur='super_admin').first() if request.args.get('field_soldier'): datas = Users.objects( Q(user__lt=1) & Q(activated=True) & Q(roles__role_id__ne=admin_role)) else: datas = Users.objects( Q(user__lt=2) & Q(activated=True) & Q(roles__role_id__ne=admin_role)) if request.method == 'POST': if request.form.getlist('item_id'): for id_user in request.form.getlist('item_id'): current = Users.objects.get(id=id_user) if request.args.get('field_soldier'): current.user = 1 else: current.user = 2 if not current.ref: count_user = Users.objects(user__gte=1).count() current.ref = function.reference(count=count_user + 1, caractere=4, user=True, refuser=None) current.save() flash('Ajout des administrateurs/Commerciaux reussis avec success', 'success') datas = json.dumps({'statut': 'OK'}) else: datas = json.dumps({'statut': 'NOK'}) return datas return render_template('user/edit_exist.html', **locals())
def index(): title_page = 'Utilisateurs' admin_role = Roles.objects(valeur='super_admin').first() datas = Users.objects(Q(user__gte=1) & Q(roles__role_id__ne=admin_role)) return render_template('user/index.html', **locals())
def index(): title_page = 'Internautes' internaute = True admin_role = Roles.objects(valeur='super_admin').first() datas = Users.objects(Q(roles__role_id__ne=admin_role)) return render_template('user/index.html', **locals())
def deleted(): from ..opportunite.models_opportunite import Opportunite from ..document.models_doc import Document from ..compagnie.models_compagnie import Compagnie data = [] element = [] count = 0 for item in request.form.getlist('item_id'): info = {} item_found = Users.objects().get(id=item) opportunite = Opportunite.objects(vendeur_id=item_found) comp_user = Compagnie.objects( Q(iduser__in=item_found) | Q(mainuser=item_found)) if opportunite: info['statut'] = 'NOK' info[ 'message'] = 'L\'utilisateur "' + item_found.first_name + ' ' + item_found.last_name + '" est utilise par ' + str( opportunite.count()) + ' autre(s) opportunite(s)' exit_document = Document.objects(vendeur_id=item_found) if exit_document: info['statut'] = 'NOK' info[ 'message'] = 'L\'utilisateur "' + item_found.name + '" est utilise par ' + str( exit_document.count()) + ' autre(s) Documents(s)' if comp_user: info['statut'] = 'NOK' info[ 'message'] = 'L\'utilisateur "' + item_found.name + '" est utilise par ' + str( exit_document.count( )) + ' est administrateur d\'une entreprise' if not opportunite and not exit_document and not comp_user: item_found.delete() element.append(str(item_found.id)) count += 1 else: data.append(info) if count: info = {} info['statut'] = 'OK' info['message'] = str( count) + ' utilisateur(s) supprime(s) avec success' info['element'] = element data.append(info) data = json.dumps(data) return data
def unique_email_validator_2(form, field): """ name must be unique""" data = Users.objects(Q(email=field.data)).count() if form.id.data: data_old = Users.objects.get(id=str(form.id.data)) if data_old.email != field.data and data >= 1: raise wtf.ValidationError("Adresse Email existante") else: if data >= 1: raise wtf.ValidationError("Adresse Email existante")
def index(): menu = 'user' submenu = 'users' title_page = 'Parametre - Utilisateurs' 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) count = Users.objects(email__ne='*****@*****.**').count() users = Users.objects(email__ne='*****@*****.**').skip(offset).limit(limit) pagination = Pagination(css_framework='bootstrap3', page=page, total=count, search=search, record_name='users') return render_template('user/index.html', **locals())
def send_import_mailchimp(id_list): data = [] element = [] count = 0 for item in request.form.getlist('item_id'): info = {} item_found = Users.objects().get(id=item) if str(id_list) in item_found.list_id: info['statut'] = 'NOK' info['message'] = 'L\'utilisateur "' + item_found.full_name( ) + '" est deja dans cette liste.' data.append(info) else: try: client.lists.members.create( str(id_list), { 'email_address': item_found.email, 'status': 'subscribed', 'merge_fields': { 'FNAME': item_found.first_name, 'LNAME': item_found.last_name, } }) item_found.list_id.append(str(id_list)) element.append(str(item_found.id)) count += 1 item_found.save() except requests.exceptions.HTTPError: info['statut'] = 'NOK' info['message'] = 'L\'utilisateur "' + item_found.full_name( ) + '" a une adresse email non valid.' data.append(info) if count: info = {} info['statut'] = 'OK' info['message'] = str( count ) + ' utilisateur(s) ajoutee dans la mailling List avec success' info['element'] = element data.append(info) data = json.dumps(data) return data
def login(): form = FormLogin(request.form) if form.validate_on_submit(): try: password = hashlib.sha256(form.password.data).hexdigest() except UnicodeEncodeError: flash('Adresse email ou mot de passe incorrect' 'danger') return redirect(url_for('home.index')) user_login = Users.objects( Q(email=form.email.data) & Q(password=password)).first() if user_login is None: flash('Adresse email ou mot de passe incorrect', 'danger') return redirect(url_for('home.index')) else: if not user_login.is_active(): flash( 'Votre compte est desactive. Contactez l\'administrateur', 'danger') return redirect(url_for('home.index')) if user_login.user == 1 or user_login.user == 0: flash('Vous ne pouvez pas vous connecter sur cette interface', 'warning') return redirect(url_for('user.logout')) #implementation de l'heure local time_zones = tzlocal() date_auto_nows = datetime.datetime.now(time_zones).strftime( "%Y-%m-%d %H:%M:%S") session['user_id'] = str(user_login.id) user_login.logged = True user_login.lastLogin = function.datetime_convert(date_auto_nows) user_login.save() session['company_name'] = Company.objects().first().name return redirect(url_for('dashboard.index')) else: flash('Adresse email ou mot de passe incorrect ICI', 'danger') return redirect(url_for('home.index'))
def login(): form = FormLogin(request.form) if form.validate_on_submit(): try: password = hashlib.sha256(form.password.data).hexdigest() except UnicodeEncodeError: flash('Adresse email ou mot de passe incorrect' 'danger') return redirect(url_for('home.index')) user_login = Users.objects( Q(email=form.email.data) & Q(password=password)).first() if user_login is None: flash('Adresse email et mot de passe ne correspondent pas', 'danger') return redirect(url_for('home.index')) else: if not user_login.is_active(): flash( 'Votre compte est desactive. Veuillez confirmer votre adresse email a partir de l\'email de ' 'confirmation recu lors de votre inscription.', 'danger') return redirect(url_for('home.index')) # implementation de l'heure local time_zones = tzlocal() date_auto_nows = datetime.datetime.now(time_zones).strftime( "%Y-%m-%d %H:%M:%S") session['user_id'] = str(user_login.id) user_login.logged = True user_login.lastLogin = function.datetime_convert(date_auto_nows) user_login.save() session['compte_id'] = str(user_login.compte.id) return redirect(url_for('dashboard.index')) else: flash('Adresse email ou mot de passe incorrect', 'danger') return redirect(url_for('home.index'))
def removed(): data = [] element = [] count = 0 for item in request.form.getlist('item_id'): info = {} item_found = Users.objects().get(id=item) if item_found.user > 1: info['statut'] = 'NOK' if len(item_found.roles): info['message'] = 'L\'utilisateur "'+item_found.full_name()+'" est un Administrateur. IL ne peut etre ' \ 'enlever comme Field Soldier. ' else: info['message'] = 'L\'utilisateur "'+item_found.full_name()+'" est un Commercial. IL ne peut etre ' \ 'enlever comme Field Soldier. ' data.append(info) else: item_found.user = 0 element.append(str(item_found.id)) count += 1 item_found.save() if count: info = {} info['statut'] = 'OK' info['message'] = str( count ) + ' utilisateur(s) enleve(s) comme Field Soldier avec success' info['element'] = element data.append(info) data = json.dumps(data) return data
def index(): title_page = 'Statistique Field Soldier' date_auto_nows = datetime.date.today().strftime('%d/%m/%Y') if request.args.get('date_start') and request.args.get('date_end'): date_start = function.date_convert(request.args.get('date_start')) date_start_show = request.args.get('date_start') date_end = function.date_convert(request.args.get('date_end')) date_end_show = request.args.get('date_end') else: date_start = datetime.date.today() date_start_show = date_start.strftime('%d/%m/%Y') date_end = datetime.date.today() date_end_show = date_end.strftime('%d/%m/%Y') diff = date_end - date_start diff = diff.days datas = Users.objects(user=1) return render_template('user/field/index.html', **locals())
def unique_email_validator(form, field): """ email must be unique""" user_manager = Users.objects(Q(email=field.data)).count() if user_manager >= 1 and not form.id.data: raise wtf.ValidationError( "Email deja utilise par un autre utilisateur")
def login(token, userinfo, **params): time_zones = pytz.timezone('Africa/Douala') date_auto_nows = datetime.datetime.now(time_zones).strftime("%Y-%m-%d %H:%M:%S") param = params.get('extra') if param: if userinfo['hd'] and (userinfo['hd'] == 'accentcom-cm.com' or userinfo['hd'] == 'accentcom.agency'): if param == 'superadmin': admin_role = Roles.objects(valeur='super_admin') if admin_role: flash('il existe deja un super administrateur', 'warning') return redirect(url_for('home.index')) else: Role = Roles() Role.valeur = 'super_admin' role_id = Role.save() User = Users() User.first_name = userinfo['family_name'] User.last_name = userinfo['given_name'] User.email = userinfo['email'] User.google_id = userinfo['id'] User.is_enabled = True User.date_create = function.datetime_convert(date_auto_nows) User.date_update = function.datetime_convert(date_auto_nows) user_id = User.save() User_Role = UserRole() User_Role.role_id = role_id User_Role.user_id = user_id User_Role.save() flash('Creation du compte admin avec success. Vous pouvez vous connecter', 'success') return redirect(url_for('home.index')) elif param == 'utilisateur': User_exist = Users.objects(google_id=userinfo['id']).first() if User_exist: if User_exist.is_enabled: session['user_id'] = str(User_exist.id) User_exist.logged = True User_exist.date_last_logged = function.datetime_convert(date_auto_nows) User_exist.date_update = function.datetime_convert(date_auto_nows) User_exist.save() return redirect(url_for('tache.me')) else: flash("Votre Compte est en attente d'activation de vos parametres. Contactez l'administrateur", 'warning') return redirect(url_for('home.index')) else: User = Users() User.first_name = userinfo['family_name'] User.last_name = userinfo['given_name'] User.email = userinfo['email'] User.google_id = userinfo['id'] User.date_create = function.datetime_convert(date_auto_nows) User.date_update = function.datetime_convert(date_auto_nows) user_id = User.save() flash(""+userinfo['name']+" Votre Compte est en attente d'activation de vos parametres. Contactez l'administrateur", 'warning') return redirect(url_for('home.index')) else: flash('Connectez vous avec une adresse mail du Domaine "accentcom-cm.com"', 'danger') return redirect(url_for('home.index')) else: flash('Vous ne pouvez pas acceder dans cette url', 'danger') return redirect(url_for('home.index'))
def hors_projet(user_id): from ..tache.models_tache import Tache, Projet, Prestation, Update_Tache from ..tache.forms_tache import FormTache hors_projet = True taches = Tache() form = FormTache() form.contact.data = None form.projet_id.choices = [('0', 'Selectionnez un projet')] for projet in Projet.objects(closed=False): form.projet_id.choices.append((str(projet.id), projet.titre)) utilisateur = Users.objects().get(id=user_id) form.user_id.choices = [(str(utilisateur.id), utilisateur.first_name+" "+utilisateur.last_name)] if form.prestation_id.data: prest = Prestation.objects.get(id=form.prestation_id.data) list_factu = {} if prest.nfactu: list_factu[2] = 'Non Facturable' if prest.factu: list_factu[1] = 'Facturable' list_prestation = Prestation.objects(sigle='FOR') success = False if form.validate_on_submit(): taches.titre = form.titre.data taches.description = form.description.data taches.heure = form.heure.data user = Users.objects.get(id=form.user_id.data) taches.user_id = user if form.facturable.data == '2': taches.facturable = False if form.facturable.data == '1': taches.facturable = True prestation = Prestation.objects.get(id=form.prestation_id.data) taches.prestation_id = prestation update = Update_Tache() time_zones = pytz.timezone('Africa/Douala') date_now = datetime.datetime.now(time_zones) the_user = Users.objects.get(id=session.get('user_id')) update.date = date_now update.user = the_user update.action = 'formation' update.notified = True taches.updated.append(update) taches.date_start = datetime.datetime.combine(function.date_convert(form.date_start.data), datetime.datetime.min.time()) taches.officiel = True taches.save() success = True return render_template('user/edit_formation.html', **locals())
def load_user(userid): return Users.objects(id=userid).first()
def edit(user_id=None): if request.args.get('internaute'): title_page = 'Internautes' else: title_page = 'Utilisateurs' if user_id: data = Users.objects.get(id=user_id) if current_user.has_roles([('super_admin', 'user')], ['edit']) and data.id == current_user.id: return redirect(url_for('user.view', user_id=user_id)) form = FormUser(obj=data) form.id.data = str(data.id) # liste des roles lie a l'utiliasteur en cours attrib_list = [role.role_id.id for role in data.roles] # liste des roles lie a l'utiliasteur en cours avec le droit d'edition edit_list = [ role.role_id.id for role in data.roles if role.edit == True ] # liste des roles lie a l'utiliasteur en cours avec le droit de suppression delete_list = [ role.role_id.id for role in data.roles if role.deleted == True ] liste_role = [] data_role = Roles.objects(valeur__ne='super_admin') for role in data_role: if not role.parent: module = {} module['titre'] = role.titre module['id'] = role.id enfants = Roles.objects(parent=role.id) module['role'] = [] for enfant in enfants: rol = {} rol['id'] = enfant.id rol['titre'] = enfant.titre rol['action'] = enfant.action module['role'].append(rol) liste_role.append(module) else: data = Users() form = FormUser() if request.args.get('field_soldier'): form.user.data = 1 else: form.user.data = 2 if form.validate_on_submit( ) and request.method == 'POST' and current_user.has_roles( [('super_admin', 'user')], ['edit']) and current_user.id != data.id: data.first_name = form.first_name.data data.last_name = form.last_name.data if form.email.data != data.email and user_id: flash('L\'adresse email ne peut etre modifier dans cette action.', 'warning') if not user_id: data.email = form.email.data data.user = int(form.user.data) count_user = Users.objects(user__gte=1).count() data.ref = function.reference(count=count_user + 1, caractere=4, user=True, refuser=None) data.fonction = form.fonction.data data.phone = form.phone.data data.note = form.note.data if not user_id: data.activated = False data = data.save() if not user_id: from ..company.models_company import Company info = Company.objects.first() token = generate_confirmation_token(data.email) confirm_url = url_for('user_param.confirm_email', user_id=data.id, token=token, _external=True) html = render_template('template_mail/user/activate.html', **locals()) msg = Message() msg.recipients = [data.email] msg.add_recipient(info.senderNotification) msg.subject = data.full_name( ) + ', veuillez confirmer votre adresse e-mail' msg.sender = (info.senderNotification, '*****@*****.**') msg.html = html mail.send(msg) flash( 'Un mail de confirmation a ete envoye dans l\'adresse email fournit lors de la creation.', 'success') if user_id: form_attrib = request.form.getlist('attrib') form_edit = request.form.getlist('edit') form_delete = request.form.getlist('delete') # Insertion des roles et authorisation en provenance du formulaire for attrib in form_attrib: role_form = Roles.objects.get(id=attrib) profil_role_exist = Users.objects( Q(roles__role_id=role_form.id) & Q(id=data.id)) if profil_role_exist: if attrib in form_edit: profil_role_exist.update_one(set__roles__S__edit=True) else: profil_role_exist.update_one(set__roles__S__edit=False) if attrib in form_delete: profil_role_exist.update_one( set__roles__S__deleted=True) else: profil_role_exist.update_one( set__roles__S__deleted=False) else: profil_role_create = UserRole() profil_role_create.role_id = role_form if attrib in form_edit: profil_role_create.edit = True else: profil_role_create.edit = False if attrib in form_delete: profil_role_create.deleted = True else: profil_role_create.deleted = False data = Users.objects.get(id=user_id) data.roles.append(profil_role_create) data.save() for role in data.roles: if str(role.role_id.id) not in form_attrib: profil_role_exist = Users.objects(id=data.id).update_one( pull__roles__role_id=role.role_id) flash('Enregistement effectue avec succes', 'success') if request.form['nouveau'] == '1': return redirect(url_for('user_param.edit')) else: return redirect(url_for('user_param.view', user_id=data.id)) return render_template('user/edit.html', **locals())
def index(): compte = Comptes.objects().get(id=session.get('compte_id')) datas = Users.objects(Q(compte=compte.id)) return render_template('user/index.html', **locals())