Пример #1
0
def cleancohortdata():
    keywords_to_cohorts = {
        'janus' : 'Janus House', 'neptune' : 'Neptune House', 'sol' : 'Sol House', 'health' : 'Health Academy',
        'computer' : 'Computer Academy', 'engineering' : 'Engineering Academy', 'fashion' : 'Fashion, Art, and Design Academy',
        'race' : 'Race, Policy, and Law Academy', '-----':'No Academy'
    }

    
    blanks = User.objects(cohort = '')
    blanks.update(cohort = 'No Academy', multi = True)
    
    #for student in blanks:
    #    student.update(cohort = 'No Academy')

    for key in keywords_to_cohorts:
        group = User.objects(cohort__icontains = key)
        group.update(cohort = keywords_to_cohorts[key], multi = True)
        #for student in group:
        #    student.update(cohort = keywords_to_cohorts[key])
    
    # SPED-SDC kids aren't in a cohort, or not in a cohort!
    SDC_group = User.objects(sped = 'SDC (Special Day Class)', cohort = 'No Academy')
    SDC_group.update(cohort = 'No Academy - SDC', multi = True)

    return render_template('index.html')
Пример #2
0
def findstudent():

    students = None

    form = StudentForm()
    if form.validate_on_submit():
        query3 = Q(role__icontains = 'Student')

        if form.aeriesid.data:
            query =  Q(aeriesid = form.aeriesid.data)
        elif len(form.fname.data)>0 and len(form.lname.data)>0:
            query1 = Q(afname__icontains = form.fname.data) | Q(ufname__icontains = form.fname.data)
            query2 = Q(alname__icontains = form.lname.data) | Q(ulname__icontains = form.lname.data)
            query = query1 & query2 & query3
        elif len(form.fname.data)>0 and len(form.lname.data)==0:
            query1 = Q(afname__icontains = form.fname.data) | Q(ufname__icontains = form.fname.data)
            query = query1 & query3
        elif len(form.fname.data)==0 and len(form.lname.data)>0:
            query2 = Q(alname__icontains = form.lname.data) | Q(ulname__icontains = form.lname.data)
            query = query2 & query3
        else:
            flash("You didn't enter any names.")
            return render_template('findstudent.html', form=form)

        students = User.objects(query)
        if form.aeriesid.data and len(students) == 0:
            flash(Markup(f"That ID is not in this database. <a target='_blank' href='https://aeries.ousd.org/Helpers/SetStudentAndRedirect.aspx?ID={form.aeriesid.data}&DU=StudentProfile.aspx'>Check Aeries</a><br> If you get a response that says 'If you are reading this, a redirect did not happen correctly.' it is probably because it is not in Aeries either."))
            return render_template('findstudent.html', form=form)
        elif len(students) == 0:
            flash("Your search did not find any students.")
            return render_template('findstudent.html', form=form)

        return render_template('findstudent.html', form=form, students=students)

    return render_template('findstudent.html', form=form)
Пример #3
0
def erasecs():
    csstudents = User.objects(cohort__icontains = "computer")
    total = len(csstudents)
    for i,stu in enumerate(csstudents):
        stu.update(
            cohort = ""
        )
        print(f"{i}:{total}")
    return redirect('/')
Пример #4
0
def pglist():
    stus = User.objects(cohort__icontains='computer',
                        grade__gt=11,
                        postgrads__exists=True)
    flash(Markup('<b>CS Seniors and alum with PostGrad info --></b>'))
    for stu in stus:
        flash(
            Markup(
                f'<a href="/profile/{stu.aeriesid}">{stu.fname} {stu.lname} {stu.grade}</a> ({stu.postgrads[0].type_}: {stu.postgrads[0].org})'
            ))
    stus = User.objects(cohort__icontains='computer',
                        grade__gt=11,
                        postgrads__exists=False)
    flash('')
    flash('')
    flash('')
    flash(Markup('<b>CS Seniors and alum with no PostGrad info--></b>'))
    for stu in stus:
        flash(f'{stu.fname} {stu.lname} {stu.grade}')
    return redirect(url_for('index'))
Пример #5
0
def increasegradebyone():
    students = User.objects(role__iexact = 'student')
    totalstudents = len(students)
    for i, student in enumerate(students):
        student.update(
            grade = student.grade + 1
        )
        print(f"{i}:{totalstudents}")
    flash("All Student grades have been increased by 1.")
        
    return redirect('/')
Пример #6
0
def getcohorts():
    allstudents = User.objects().order_by('cohort')
    temp = ''
    cohorts = []

    for i,stu in enumerate(allstudents):
        if stu.cohort and not temp == stu.cohort:
            cohorts.append(stu.cohort)
            temp = stu.cohort
        else:
            temp = stu.cohort
    flash(cohorts)
    return render_template('index.html')
Пример #7
0
def mmcompsci():
    mmlist = [[
        "Aeries ID", "Student Email", "Grade", "Student fName",
        "Student lName", "Parent Names", "Parent Emails"
    ]]
    csstuds = User.objects(cohort__icontains="computer", grade__lt=13)
    for csstud in csstuds:
        stulist = []
        anames = None
        aemails = None
        stulist.append(csstud.aeriesid)
        stulist.append(csstud.otemail)
        stulist.append(csstud.grade)
        if csstud.ufname and not csstud.ufname == csstud.afname:
            stulist.append(f"{csstud.afname} ({csstud.ufname})")
            stulist.append(csstud.alname)
        else:
            stulist.append(csstud.afname)
            stulist.append(csstud.alname)
        adultisdupe = False
        adultExists = False
        if csstud.adults:
            for adult in csstud.adults:
                if adult.email:
                    adultExists = True
                    if anames:
                        anames = anames + "zzz" + f" {adult.fname} {adult.lname}"
                        aemails = aemails + "zzz" + adult.email
                    else:
                        anames = f" {adult.fname} {adult.lname}"
                        aemails = adult.email
                    if adult.email.lower() == csstud.aadultemail.lower():
                        adultisdupe = True

        if adultisdupe == False:
            aadults = csstud.aadults.replace(',', '')
            if anames:
                if not adultExists:
                    anames = anames + "zzz" + aadults
                aemails = aemails + "zzz" + csstud.aadultemail
            else:
                if not adultExists:
                    anames = aadults
                aemails = csstud.aadultemail
        stulist.append(anames)
        stulist.append(aemails)
        del anames
        del aemails
        mmlist.append(stulist)

    return render_template('array.html', array=mmlist, nested=True)
Пример #8
0
def srssmm():
    query = Q(cohort__icontains='computer') & Q(grade__gt=11) & Q(
        shirtsize__exists=False)
    srs = User.objects(query)
    seniors = [[
        'Name', 'otemail', 'pemails', 'Shirt Size', 'Personal Email', 'Mobile',
        'PostGrad', 'Address'
    ]]
    for sr in srs:
        senior = []
        aemails = ""
        if sr.adults:
            for adult in sr.adults:
                if adult.email:
                    aemails += f";{adult.email}"
        srname = ""

        senior.append(f"{sr.fname} {sr.lname}")
        if sr.personalemail:
            senior.append(
                f"{sr.otemail};{sr.personalemail},{sr.aadultemail};{aemails}")
        else:
            senior.append(f"{sr.otemail},{sr.aadultemail};{aemails}")

        if not sr.shirtsize:
            senior.append("No Shirt Size")
        else:
            senior.append(sr.shirtsize)

        if not sr.personalemail:
            senior.append("No Personal Email")
        else:
            senior.append(sr.personalemail)
        if not sr.mobile:
            senior.append("No Mobile Phone")
        else:
            senior.append(formatphone(sr.mobile))
        if not sr.postgrads:
            senior.append("No PostGrad Info")
        else:
            senior.append(f"{sr.postgrads[0].type_}: {sr.postgrads[0].org}")

        if not sr.ustreet:
            senior.append("No Address Info")
        else:
            senior.append(
                f"{sr.ustreet} | {sr.ucity} | {sr.ustate} | {sr.uzipcode}")

        seniors.append(senior)
    return render_template('array.html', array=seniors, nested=True)
Пример #9
0
def allpages():
    if not session['admin']:
        flash('You can only see all pages if you are an admin.')
        return redirect("/")

    try:
        pages = Page.objects()
    except:
        pages = None

    try:
        users = User.objects()
    except:
        users = None

    return render_template('ybookpagesall.html.j2', pages=pages, users=users)
Пример #10
0
def alladdresses():

    students = User.objects(role__iexact="student", grade__lt=13)
    addresses = [["#", "Street", "City", "State", "Zip", "Cohort"]]
    for i, student in enumerate(students):
        address = [
            i,
            student.astreet.replace(',', ''), student.acity, student.astate,
            student.azipcode
        ]
        if student.cohort:
            address.append(student.cohort.replace(',', ''))
        else:
            address.append("None")
        addresses.append(address)

    return render_template('array.html', array=addresses, nested=True)
Пример #11
0
def compsciemails():
    emails = []
    csstuds = User.objects(cohort__icontains="computer", grade__lt=13)
    for csstud in csstuds:
        emails.append(csstud.aadultemail)
        emails.append(csstud.otemail)
        emails.append(csstud.personalemail)
        for adult in csstud.adults:
            emails.append(adult.email)
            emails.append(adult.altemail)
    dedupedemails = list(set(emails))
    numdups = len(emails) - len(dedupedemails)
    flash(
        Markup(
            f"I found a total of {numdups} duplicates for a final set of {len(dedupedemails)}"
        ))

    return render_template('array.html', array=dedupedemails, nested=False)
Пример #12
0
def unsetinterventionsfield():
    users = User.objects()
    try:
        users.update(
            unset__interventions = 1
        )
    except Exception as error:
        print(f"unset Interventions {error}")
    
    flash('The Inteventions fields have been removed from all User records. Now delete them from the User data document.')
    return render_template('index.html')


### Notes on how to create a sandbox // requires mongodb tools on local machine
# mongodump --uri mongodb+srv://admin:[email protected]/otdata
# change the folder name in the dump directory to otdatasb
# C:\Users\steve\OneDrive\Documents\Code\OTData\dump
# drop the otdatasb database in Mongodb.com
# mongorestore --uri mongodb+srv://admin:[email protected]/otdatasb
Пример #13
0
def deleteoldclassnames():
    users = User.objects()
    numusers = len(users)
    for i,editUser in enumerate(users):
        if len(editUser.gclasses) > 0:
            for gclass in editUser.gclasses:
                try:
                    if gclass.classname == "~":
                        delclassname = True
                    else:
                        delclassname = False
                except:
                    delclassname = False

                if delclassname:
                    print(f"{i}:{numusers}: {editUser.id} {editUser.afname}")
                    editUser.gclasses.filter(gclassid=gclass.gclassid).update(
                        classname = None
                    )
                    editUser.gclasses.filter(gclassid=gclass.gclassid).save()
    return render_template('index.html')
Пример #14
0
def complistall():
    usercomps = User.objects(compequiptype__exists=True,
                             compequiptype__ne=None)
    if len(usercomps) > 0:
        compslist = []
        for user in usercomps:
            comp = []
            comp.append("Student: " + user.fname + " " + user.lname)
            comp.append(user.compequiptype)
            comp.append(user.compidnum)
            comp.append(f"sticker#: {user.compstickernum}")
            comp.append(f"Date checked out: {user.compdateout}")
            comp.append(f"Date returned: {user.compdatereturned}")
            comp.append("Status: " + user.compstatus)
            comp.append(user.compstatusdesc)
            compslist.append(comp)
    else:
        emptyarray = ["No Computers are Checked out."]
        return render_template('array.html', array=emptyarray, nested=False)

    return render_template('array.html', array=compslist, nested=True)
Пример #15
0
def fixnames():
    users = User.objects()
    count = len(users)
    for i,editUser in enumerate(users):
        if editUser.ufname:
            fname = editUser.ufname
        else:
            fname = editUser.afname

        if editUser.ulname:
            lname = editUser.ulname
        else:
            lname = editUser.alname

        if fname != editUser.fname or lname != editUser.lname:
            editUser.update(
                fname = fname,
                lname = lname
            )
            print(f"{i}:{count} Stored new name for {fname} {lname}")
    return redirect(url_for('index'))
Пример #16
0
def deletegclassdepricated():
    users = User.objects()
    numusers = len(users)
    for i,editUser in enumerate(users):
        if len(editUser.gclasses) > 0:
            
            for gclass in editUser.gclasses:
                try:
                    td = len(gclass.gteacher)
                except:
                    td = 0
                try:
                    cd = len(gclass.gclassdict)
                except:
                    cd = 0
                if td > 0 or cd > 0:
                    print(f"{i}:{numusers}: {editUser.id} {editUser.afname}")
                    editUser.gclasses.filter(gclassid=gclass.gclassid).update(
                        gclassdict = None,
                        gteacher = None
                    )
                    editUser.gclasses.filter(gclassid=gclass.gclassid).save()
    return render_template('index.html')
Пример #17
0
def mailmerge():
    query = Q(cohort__icontains='computer') & Q(grade=10)
    users = User.objects(query)

    mmlist = []

    for user in users:
        row = []
        row.append(f'{user.fname} {user.lname}')
        emails = f'{user.otemail};{user.aadultemail}'
        if user.aadultemail:
            emails += f';{user.aadultemail}'
        if user.personalemail:
            emails += f';{user.personalemail}'
        if user.adults:
            for adult in user.adults:
                if adult.email:
                    emails += f';{adult.email}'
        row.append(emails)

        mmlist.append(row)
    print(mmlist)
    return render_template('array.html', array=mmlist, nested=True)
Пример #18
0
def compscisrs():
    srs=User.objects(cohort__icontains = "computer", grade = 12)
    return render_template('compscisrs.html',srs=srs)
Пример #19
0
def logins():
    logins = User.objects(
        lastlogin__gt=dt.datetime(2020, 1, 1)).order_by('lastlogin')
    flash("All Logins.")
    return render_template('logins.html', logins=logins)
Пример #20
0
def edits():
    edits = User.objects(lastedited__exists=True)
    flash("Users that have edited their profile")
    return render_template('edits.html', edits=edits)
Пример #21
0
def profile(aeriesid=None):

    if aeriesid == 'None':
        aeriesid = None

    if session['role'].lower() == "student":
        targetUser = User.objects.get(id=session['currUserId'])
        groups = None

    elif aeriesid and len(aeriesid) < 7:
        try:
            targetUser = User.objects.get(aeriesid=aeriesid)
        except:
            flash(
                f"Aeries ID {aeriesid} is not in the database, displaying your profile instead. Contact Steve Wright if you feel this is an error ([email protected])."
            )
            targetUser = User.objects.get(gid=session['gid'])

    elif aeriesid and len(aeriesid) > 6:
        try:
            targetUser = User.objects.get(gid=aeriesid)
        except:
            flash(
                f"The Google ID {aeriesid} is not in the database, displaying your profile instead. Contact Steve Wright if you feel this is an error ([email protected])."
            )
            targetUser = User.objects.get(gid=session['gid'])
    else:
        try:
            targetUser = User.objects.get(gid=session['gid'])
        except:
            flash(
                "You are not in the database of users which doesn't make sense cause you're already looged in. Sorry this shouldn't ever happen. ([email protected])."
            )
            return redirect('/')

    if targetUser.role.lower() == "student":
        checkins = CheckIn.objects(student=targetUser).limit(15)
    else:
        checkins = None

    form = CohortForm()

    cohorts = User.objects().distinct(field="cohort")
    cohortslist = [("", "None")]
    for cohort in cohorts:
        if len(cohort) > 0:
            cohortslist.append((cohort, cohort))

    form.cohort.choices = cohortslist

    casemanagers = User.objects().distinct(field="casemanager")
    casemanagerslist = [("", "None")]
    for casemanager in casemanagers:
        if len(cohort) > 0:
            cohortslist.append((casemanager, casemanager))

    form.cohort.casemanager = casemanagerslist

    if form.validate_on_submit():
        if len(form.casemanager.data) > 0:
            targetUser.update(cohort=form.cohort.data,
                              casemanager=form.casemanager.data)
        else:
            targetUser.update(cohort=form.cohort.data, unset__casemanager=1)
        targetUser.reload()

    form.cohort.data = targetUser.cohort
    form.casemanager.data = targetUser.casemanager
    dttoday = dt.datetime.utcnow()

    if session['role'].lower() != 'student':
        currUser = User.objects.get(pk=session['currUserId'])
        groups = Group.objects(owner=currUser)
    else:
        groups = None

    if targetUser.role.lower() == "teacher":
        sections = Section.objects(teacher=targetUser)
    else:
        sections = None

    return render_template("profile.html",
                           groups=groups,
                           currUser=targetUser,
                           data=session['gdata'],
                           form=form,
                           today=dttoday,
                           checkins=checkins,
                           sections=sections)
Пример #22
0
def notedits():
    query = (Q(lastlogin__gt=dt.datetime(2020, 1, 1)) & Q(role="Student")) & (
        Q(lastedited__exists=False) | Q(adults__exists=False))
    logins = User.objects(query).order_by('lastedited')
    flash("Users that have not edited but have logged in")
    return render_template('logins.html', logins=logins)
Пример #23
0
def compsci():
    students = User.objects(cohort__icontains='computer',
                            grade__lt=13).order_by('lastedited')
    flash("All CompSci Academy students")
    return render_template('logins.html', logins=students)
Пример #24
0
def teachers(sort="lname,fname"):
    teachers = User.objects(role__iexact="teacher")
    return render_template("coursecat/teachers.html",
                           teachers=teachers,
                           sort=sort)
Пример #25
0
def listq():

    form = ListQForm()

    ethnicities = User.objects().distinct(field="aethnicity")
    ethlist = []
    for ethnicity in ethnicities:
        if len(ethnicity) > 0:
            ethlist.append((ethnicity, ethnicity))

    cohorts = User.objects().distinct(field="cohort")
    cohortslist = []
    for cohort in cohorts:
        if len(cohort) > 0:
            cohortslist.append((cohort, cohort))

    grades = User.objects().distinct(field="grade")
    gradeslist = []
    for grade in grades:
        if grade > 0:
            gradeslist.append((str(grade), str(grade)))

    genders = User.objects().distinct(field="agender")
    genderslist = []
    for gender in genders:
        if len(gender) > 0:
            genderslist.append((gender, gender))

    form.cohort.choices = cohortslist
    form.grade.choices = gradeslist
    form.ethnicity.choices = ethlist
    form.gender.choices = genderslist

    if form.validate_on_submit():
        if len(form.cohort.data) > 0:
            cohortquery = "("
            for i, cohort in enumerate(form.cohort.data):
                cohortquery = cohortquery + f"Q(cohort='{cohort}')"
                if i < len(form.cohort.data) - 1:
                    cohortquery = cohortquery + ' | '
                else:
                    cohortquery = cohortquery + ' ) '
        else:
            cohortquery = '(Q(role__iexact = "student"))'

        if len(form.ethnicity.data) > 0:
            ethnicityquery = "("
            for i, ethnicity in enumerate(form.ethnicity.data):
                ethnicityquery = ethnicityquery + f"Q(aethnicity='{ethnicity}')"
                if i < len(form.ethnicity.data) - 1:
                    ethnicityquery = ethnicityquery + ' | '
                else:
                    ethnicityquery = ethnicityquery + ' ) '
        else:
            ethnicityquery = '(Q(role__iexact = "student"))'

        if len(form.grade.data) > 0:
            gradequery = "("
            for i, grade in enumerate(form.grade.data):
                gradequery = gradequery + f"Q(grade='{grade}')"
                if i < len(form.grade.data) - 1:
                    gradequery = gradequery + ' | '
                else:
                    gradequery = gradequery + ' ) '
        else:
            gradequery = '(Q(role__iexact = "student"))'

        if len(form.gender.data) > 0:
            genderquery = "("
            for i, gender in enumerate(form.gender.data):
                genderquery = genderquery + f"Q(agender='{gender}')"
                if i < len(form.gender.data) - 1:
                    genderquery = genderquery + ' | '
                else:
                    genderquery = genderquery + ' ) '
        else:
            genderquery = '(Q(role__iexact = "student"))'

        users = User.objects(
            eval(ethnicityquery) & eval(cohortquery) & eval(gradequery)
            & eval(genderquery))

        return render_template('studentlistform.html',
                               form=form,
                               users=users,
                               total=len(users))
    return render_template('studentlistform.html',
                           form=form,
                           users=None,
                           total=None)