Exemplo n.º 1
0
def add_user():
    if not current_user.is_admin:
        flash('You are not admin user!')
        return redirect(url_for('main.record_all'))
    user_form = NewUserForm()
    new_user = AppUser()
    msg = ''
    if user_form.validate_on_submit():
        new_user.username = user_form.username.data
        password = user_form.password.data
        if AppUser.query.filter_by(username=new_user.username).count() > 1:
            flash('User name already exists! %s ' % new_user.username, 'error')
            return render_template('add_user.html', form=user_form)
        # print("%s:%s:%s" % (username, password, generate_password_hash('redhat')))
        # print("%s:%s:%s" % (username, password, generate_password_hash('redhat')))
        new_user.password = generate_password_hash(password)
        new_user.email = user_form.email.data
        new_user.role = user_form.role.data
        data_db.session.add(new_user)
        data_db.session.commit()
        flash('Add user successfully %s ' % new_user.username, 'info')
        return redirect(url_for('main.login'))
    return render_template('add_user.html', form=user_form)
Exemplo n.º 2
0
def new_account_setup():
    form = NewUserForm()
    
    if request.method == 'POST':
        if form.validate() == False:
            flash('All fields are required.')
            return render_template('new_account_setup.html', domains_list=settings.list_of_local_domains, domains_tag=settings.local_domain_paths, form=form)
        else:
            gAPI = google_api.gAPI(request.form.get('org_domain'), form.username.data, form.password_alpha.data)
            gAPI.create_new_user(form.givenname.data, form.familyname.data)
            if request.form.get('ADcheckbox') == 'on':
                LDAP.addUser(str(form.username.data), str(form.givenname.data), str(form.familyname.data), str(form.email.data), str(form.password_alpha.data), str(request.form.get('org_name')))
                if request.form.get('hiddenGroupsList') == '':
                    pass
                else:
                    for group in eval(request.form.get('hiddenGroupsList')):
                        group_dn = group[0]
                        user_dn = 'CN=' + str(form.givenname.data) + ' ' + str(form.familyname.data) + ',OU=' + str(request.form.get('org_name')) + ',' + settings.local_DC
                        LDAP.addUsertoGroups(group_dn, user_dn)
            else:
                pass
            return redirect(url_for('home'))
    elif request.method == 'GET':
        return render_template('new_account_setup.html', domains_list=settings.list_of_local_domains, domains_tag=settings.local_domain_paths, form=form, ADorg_list=LDAP.retrieveADGroups())
Exemplo n.º 3
0
def register():
    """
        Shows a form for user to register. When the form is submitted,
        registers the user with the input the user submitted.
        rtype: str
    """
    # if already logged in, go to user's page
    current_username = session.get("username", None)
    if current_username:
        return redirect(f"/users/{current_username}")

    form = NewUserForm()

    if form.validate_on_submit():
        # get data submitted
        username = form.username.data
        password = form.password.data
        email = form.email.data
        first_name = form.first_name.data
        last_name = form.last_name.data

        # register user
        user = User.register(username, password, email, first_name, last_name)
        session["username"] = user.username
        db.session.add(user)
        
        # might break if username has already been used
        try:
            db.session.commit()
        except IntegrityError:
            form.username.errors.append("That username already exists")
            return render_template("register.html", form=form)

        return redirect(f"/users/{username}")

    return render_template("register.html", form=form)
Exemplo n.º 4
0
def users_new_form():
    """Show a form to create a new user"""
    form = NewUserForm()

    return render_template('new_user.html', form=form)
Exemplo n.º 5
0
def newUser():
    form = NewUserForm()
    if form.validate_on_submit():
        a = int(form.age.data)
        if a < 10:
            a = 0
        elif a >= 10 and a < 20:
            a = 1
        elif a >= 20 and a < 30:
            a = 2
        elif a >= 30 and a < 40:
            a = 3
        elif a >= 40 and a < 50:
            a = 4
        elif a >= 50 and a < 60:
            a = 5
        elif a >= 60 and a < 70:
            a = 6
        elif a >= 70:
            a = 7

        occ_dict = {0: 'administrator',
        1: 'artist',
        2: 'doctor',
        3: 'educator',
        4: 'engineer',
        5: 'entertainment',
        6: 'executive',
        7: 'healthcare',
        8: 'homemaker',
        9: 'lawyer',
        10: 'librarian',
        11: 'marketing',
        12: 'none',
        13: 'other',
        14: 'programmer',
        15: 'retired',
        16: 'salesman',
        17: 'scientist',
        18: 'student',
        19: 'technician',
        20: 'writer'}


        age_group_show = show_movies_by_age_group(a, 20)

        age_predictions = recommend_movies_by_age_group(preds_age_group, a, items, user_movie_ratings_age_group, 20)

        occ_dict.get(int(form.occupation.data))

        occ_show = show_movies_by_occ(occ_dict.get(int(form.occupation.data)), 20)
        occ_predictions = recommend_movies_by_occupation(preds_occupation, int(form.occupation.data), items, 20)


        return render_template('show_new_user.html', age=form.age.data,
                               occupation=occ_dict.get(int(form.occupation.data)),
                               age_group_show=age_group_show.to_html(),
                               age_recommendation=age_predictions[['movie title', 'release date', 'rank']].to_html(),
                               occ_show=occ_show.to_html(),
                               occ_recommendation=occ_predictions[['movie title', 'release date', 'rank']].to_html()
                               # gender_recommendation=gender_predictions[['movie title', 'release date', 'rank']].to_html()
                               )
    else:
        if form.errors:
            flash(message=form.errors.values())

        return render_template('new.html', form=form)
Exemplo n.º 6
0
def add_user():
    if not current_user.admin:
        return redirect(url_for('nope'))

    return render_template("new_user.html", form=NewUserForm())
Exemplo n.º 7
0
def new_user():
    form = NewUserForm()
    return render_template('new.html', form=form)
def schedule(request):
    schedule=[]
    today = date.today()
    while today.weekday() >= 5 or ScheduleDay.objects.filter(date=today).count() > 0 and ScheduleDay.objects.get(date=today).day_off:
        today += timedelta(1)
    schedule_day = None
    if ScheduleDay.objects.filter(date=today).count() > 0:
        schedule_day = ScheduleDay.objects.get(date=today)
    else:
        done = False
        one_day = timedelta(1)
        today_dt = datetime.combine(today, time())
        today_dt -= one_day
        new_date = today_dt.date()
        days_ellapsed = 0
        day = 0
        while not done:
            if new_date.weekday() < 5 and ScheduleDay.objects.filter(date=new_date).count() == 0:
                days_ellapsed += 1
            elif new_date.weekday() < 5 and not ScheduleDay.objects.get(date=new_date).day_off:
                done = True
                day = (ScheduleDay.objects.get(date=new_date).day + days_ellapsed) % 7
            new_dt = datetime.combine(new_date, time())
            new_dt -= one_day
            new_date = new_dt.date()
        schedule_day = ScheduleDay(date=today, day_off=False, day=day, schedule="")
        schedule_day.save()
    print(schedule_day.day)
    if (schedule_day.schedule == ""
        schedule_day.schedule = master_schedule[schedule_day.day]
        s
        
    if len(schedule_day.period_set.all()) == 0:
        for i in range(len(schedule_day.schedule)):
            period = Period(day=schedule_day, period_number=i, period_letter=schedule_day.schedule[i:i + 1])
            period.save()
    
    schedule.append([["Day " + str(schedule_day.day + 1)]])
    for period in schedule_day.schedule:
        schedule.append([[period]])
    
    
    return render(request, "scanner/schedule.html", {'schedule_table': schedule})

@not_login_required
def checkin (request):
    
    messages = []
    
    if request.method == 'POST':
        form = ScanForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            idnum = data["scan"]
            if len(Person.objects.filter(id=idnum)) != 0:
                person = Person.objects.get(id=idnum)
                checkins = Checkin.objects.filter(person=person, completed=False)
                if len(checkins) == 0:
                    messages.append("Successfully checked in " + person.first_name + " " + person.last_name)
                    new_checkin = Checkin(person=person, checkin=datetime.now(), checkout=datetime.now())
                    new_checkin.save()
                else:
                    for obj in checkins:
                        obj.checkout = datetime.now()
                        obj.completed = True
                        obj.save()
                        person.hours += float((obj.checkout - obj.checkin).total_seconds()) / 3600
                        person.save()
                    messages.append("Successfully checked out " + person.first_name + " " + person.last_name)
        
    form = ScanForm()
    return render(request, "scanner/checkin.html", {"form": form, "messages": messages})

@not_login_required
def scan (request, idnum):
    idnum = int(idnum)
    if idnum < 10000 or idnum > 20000:
        return user(request, idnum)
    if idnum > 10000 and idnum < 20000:
        return checkout_item(request, idnum)
    return render(request, "scanner/item.html", {"idnum": idnum})

@not_login_required
def user (request, idnum):
    if len(Person.objects.filter(id=idnum)) == 0:
        if request.method == 'POST':
            form = NewUserForm(request.POST)
            if form.is_valid():
                person = form.save(commit=False)
                person.id = idnum
                person.save()
        else:
            form = NewUserForm()
            return render(request, "scanner/newuser.html", {"idnum": idnum, "form": form})
    
    person = Person.objects.get(id=idnum)
    messages = []
    
    if request.method == 'POST':
        form = ScanForm(request.POST)
        if form.is_valid():
            if len(CheckoutItem.objects.filter(id=form.cleaned_data["scan"])) > 0:
                item = CheckoutItem.objects.get(id=form.cleaned_data["scan"])
                if len(Checkout.objects.filter(person=person, item=item, checked_in=False)) > 0:
                    for checkout in Checkout.objects.filter(person=person, item=item, checked_in=False):
                        checkout.checked_in = True
                        checkout.date_returned = datetime.now()
                        checkout.save()
                        messages.append(item.name + " successfully checked in.")
                else:
                    new_checkout = Checkout(person=person, item=CheckoutItem.objects.get(id=form.cleaned_data["scan"]), date_checked_out=datetime.now() , date_due=datetime.now() + timedelta(CheckoutItem.objects.get(id=form.cleaned_data["scan"]).default_checkout_time))
                    new_checkout.save()
                    messages.append(item.name + " successfully checked out.")
            else:
                messages.append("That item is not in the database.")
    form = ScanForm()
    return render(request, "scanner/user.html", {"person": person, "form": form, "checkouts": Checkout.objects.filter(person=person, checked_in=False), "messages": messages})

@not_login_required
def checkout_item (request, idnum):
    if len(CheckoutItem.objects.filter(id=idnum)) == 0:
        if request.method == 'POST':
            form = NewItemForm(request.POST)
            if form.is_valid():
                item = form.save(commit=False)
                item.id = idnum
                item.save()
            else:
                form = NewItemForm()
                return render(request, "scanner/newitem.html", {"idnum": idnum, "form": form})
        else:
            form = NewItemForm()
            return render(request, "scanner/newitem.html", {"idnum": idnum, "form": form})
            
    return render(request, "scanner/item.html", {"item": CheckoutItem.objects.get(id=idnum)})

@not_login_required
def checkout(request, personid, itemid):
    return render(request, "scanner/item.html", {"item": CheckoutItem.objects.get(id=itemid)})
    
@login_required
def admin(request):
    person = request.user.leadershipmember
    return render(request, "scanner/admin.html", {"person": person})

@not_login_required
def admin_login(request):
    
    if request.method == 'POST':
        form = AdminLoginForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            username = data["id"]
            password = data["password"]
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                return HttpResponseRedirect(reverse("admin"))
    
    form = AdminLoginForm()
        
    return render(request, "scanner/admin_login.html", {"form": form})
    
@login_required
def admin_add_leadership(request):
    if not request.user.leadershipmember.can_add_leadership_members:
        return HttpResponseRedirect(reverse("admin"))
    if request.method == 'POST':
        form = NewLeadershipMemberForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            person = Person.objects.get(id=data["id"])
            
            if len(User.objects.filter(username=data["id"])) == 0:
                print(data["password"])
                user = User.objects.create_user(data["id"], data["email"], data["password"])
                user.save()
            user = User.objects.get(username=data["id"])
            leadershipmember = LeadershipMember(first_name=person.first_name, last_name=person.last_name, id=person.id, hours=person.hours, periods=data["periods"], user=user)
            person.delete()
            leadershipmember.save()
            return HttpResponseRedirect(reverse("admin"))
    
    form = NewLeadershipMemberForm()
    return render(request, "scanner/admin_add_leadership.html", {"form": form})

@login_required
def admin_change_permissions(request):
    if not request.user.leadershipmember.can_change_leadership_permissions:
        return HttpResponseRedirect(reverse("admin"))
    leadershipmembers = LeadershipMember.objects.exclude(id=request.user.leadershipmember.id)
    return render(request, "scanner/admin_change_permissions.html", {'leadershipmembers': leadershipmembers})
    
@login_required
def admin_edit_info(request):
    if request.method == 'POST':
        form = LeadershipEditInfoForm(request.POST, instance=request.user.leadershipmember)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse("admin"))
    form = LeadershipEditInfoForm(instance=request.user.leadershipmember)        
    return render(request, "scanner/admin_edit_info.html", {"form": form})
  
@login_required  
def admin_change_user_permissions(request, id):
    if not request.user.leadershipmember.can_change_leadership_permissions:
        return HttpResponseRedirect(reverse("admin"))
    if request.method == 'POST':
        form = ChangePermissionsForm(request.POST)
        if form.is_valid():
            print("1")
            data = form.cleaned_data
            lm = LeadershipMember.objects.get(id=id)
            lm.can_add_leadership_members = data["can_add_leadership_members"]
            lm.can_change_leadership_permissions = data["can_change_leadership_permissions"]
            lm.save()
            return HttpResponseRedirect(reverse("admin change permissions"))
    person = request.user.leadershipmember
    form = ChangePermissionsForm(instance=LeadershipMember.objects.get(id=id))
    return render(request, "scanner/admin_change_user_permissions.html", {"form": form, "person": person, "id": id})
Exemplo n.º 9
0
def show_registration_form():
    """Route to get and show registration form to create new users."""

    form = NewUserForm()

    return render_template('users/new_user_form.html', form=form)
Exemplo n.º 10
0
def get_signup_form():
    form = NewUserForm()
    return render_template('/signup_and_login/signup.html', form=form)
Exemplo n.º 11
0
def homepage():
    """home page"""
    login_form = LoginForm()
    new_user_form = NewUserForm()

    return render_template('home.html', login_form=login_form, new_user_form=new_user_form)