コード例 #1
0
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
コード例 #2
0
ファイル: views_user.py プロジェクト: wilrona/Gesacom_mongoDB
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')
コード例 #3
0
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())
コード例 #4
0
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())
コード例 #5
0
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())
コード例 #6
0
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
コード例 #7
0
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")
コード例 #8
0
ファイル: views_user.py プロジェクト: wilrona/Gesacom_mongoDB
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())
コード例 #9
0
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
コード例 #10
0
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'))
コード例 #11
0
ファイル: views_user.py プロジェクト: wilrona/CarryUp
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'))
コード例 #12
0
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
コード例 #13
0
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())
コード例 #14
0
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")
コード例 #15
0
ファイル: views_user.py プロジェクト: wilrona/Gesacom_mongoDB
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'))
コード例 #16
0
ファイル: views_user.py プロジェクト: wilrona/Gesacom_mongoDB
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())
コード例 #17
0
def load_user(userid):
    return Users.objects(id=userid).first()
コード例 #18
0
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())
コード例 #19
0
ファイル: views_user.py プロジェクト: wilrona/CarryUp
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())