Example #1
0
    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_datastore_v3_stub()

        # should all return None, because this is simply creating data and is all meant to be correct
        self.assertIsNone(User.register(None, '*****@*****.**', 'pwd', 'pwd', 'teacher', 't'))
        self.assertIsNone(User.register(None, '*****@*****.**', 'pwd', 'pwd', 'teachertwo', 'ttwo'))
        self.assertIsNone(User.register(None, '*****@*****.**', 'pwd', 'pwd', 'student', 's'))

        self.teacher = User.all().filter('email =', '*****@*****.**').get()
        self.teacher2 = User.all().filter('email =', '*****@*****.**').get()
        self.student = User.all().filter('email =', '*****@*****.**' ).get()

        self.assertIsNotNone(self.teacher)
        self.assertIsNone(self.teacher.make_teacher())
        self.assertIsNotNone(self.teacher2)
        self.assertIsNone(self.teacher2.make_teacher())

        self.assertIsNone(Course.create(self.teacher, 'public', ''))
        self.public = Course.all().filter('name =', 'Public').get()
        self.assertIsNotNone(self.public)
        self.assertIsNone(Course.create(self.teacher, 'private', 'on'))
        self.private = Course.all().filter('name =', 'Private').get()
        self.assertIsNotNone(self.private)
Example #2
0
def updateSummary():

    logging.info("UPDATING SUMMARY")
    query = Summary.all()
    db.delete(query)
    courses = Course.all()
    items = []
    
    for course in courses:
        item = {}
        item['name'] = course.name
        item['id'] = course.cid
        item['hasSept'] = course.hasSeptemberResults
        item['hasFebr'] = course.hasFebruaryResults
        item['hasJune'] = course.hasJuneResults
        item['recent'] = course.nTimesUpdated
        item['addedJune'] = str(course.added_june)
        item['addedSept'] = str(course.added_sept)
        item['addedFebr'] = str(course.added_febr)
        items.append(item)
    
    summary = Summary()
    summary.courses = simplejson.dumps(items)
    summary.put()
    logging.info("FINISHED UPDATING SUMMARY")
Example #3
0
 def test_creation(self):
     self.assertIsNotNone(
         Course.create(self.teacher, '', ''),
         'Empty course name'
     )
     self.assertIsNone(
         Course.create(self.teacher, 'pub', ''),
         'Create public course'
     )
     self.assertIsNotNone(
         Course.create(self.teacher, 'Pub', ''),
         'Recreate public course (bad)'
     )
     self.assertIsNone(
         Course.create(self.teacher, 'Pub2', None),
         'Create public course'
     )
     self.assertIsNone(
         Course.create(self.teacher, 'pvt', 'on'),
         'Create private course'
     )
     for name, private in [('Pvt', True), ('Pub', False), ('Pub2', False)]:
         course = Course.all().filter('name =', name).get()
         self.assertIsNotNone(course)
         if private:
             self.assertIsNotNone(course.code)
         else:
             self.assertIsNone(course.code)
         self.assertEqual(course.teacher.email, self.teacher.email)
Example #4
0
    def get(self):
        from models import *

        from google.appengine.ext import db
        db.delete(Course.all())
        db.delete(Offerings.all())

        import re
        rx_department = re.compile(r'[A-Z]+')
        import csv
        reader = csv.DictReader(open('resources/dump.csv'))
        try:
            for course in reader:
                name = course['name']
                number = course['number']
                description = course['description'][:500]
                match = rx_department.match(number)
                department = number
                if match:
                    department = match.group(0)
                entry = Course(name=name, number=number, description=description, department=department)
                entry.put()

                for item in ['winter', 'spring', 'fall', 'summer']:
                    if 1 < len(course[item]):
                        offering = Offerings(course=entry, offered=item)
                        offering.put()
        except KeyError, e:
            pass
Example #5
0
    def get(self):
        query_text = cgi.escape(self.request.get("query"))
        q = Course.all().search(query_text).fetch(50)
        courses = []
        for course in q:
            coursevals = {'courseName': course.courseName,
                          'lat': course.latitude,
                          'lon': course.longitude,
                          'numholes': course.numberHoles,
                          'id': course.courseId,
                          'description': course.description.replace('\n', '<br />'),
                          'city': course.city,
                          'state': course.state,
                          'zip' : course.zip,
                          'teeType': course.teeType,
                          'basketType': course.basketType,
                          'holesLT300': course.holesLT300,
                          'holesBW300400': course.holesBW300400,
                          'holesGT400': course.holesGT400 }
            courses.append(coursevals)

        template_vals = {'courses': courses,
                         'query_text': query_text,
                         'gmaps_api_key': GMAPS_API_KEY,
                         'facebook': self.get_facebook() }
        path = os.path.join(os.path.dirname(__file__), 'templates/searchpage.html')
        self.response.out.write(template.render(path, template_vals))
Example #6
0
    def post(self):
        from models import Course, Progress
        user = users.get_current_user()
        course_numbers = (self.request.get_all('courses[]'))
        current_user = User.all().filter('email =', user.email()).get()
        myclasses = []
        myclasses2 = []
        for classy in course_numbers:
            test = [x.strip() for x in classy.split(',')]
            myclasses.append(test)
        for classy in myclasses:
            coursename = classy[0].replace(" ", "")
            coursetime = classy[1]
            myclasses2.append((coursename,coursetime))

        # [u'Fall12,PHYS 5A,Fall12,PHYS 5L,Fall12,CMPS 12B,Fall12,CMPS 12L,Fall12,CMPE 16,',
        #  u'Winter13,HCI 131 ,Winter13,CMPS 101 ,Winter13,DANM 250,Winter13,Math 21 ,',
        #  u'Spring13,PHYSC 5C,Spring13,PHYSC 5L,Spring13,AMS 131,',
        #  u'Summer13,CMPS109,Summer13,Math 24,']
        # myclasses = filter(None, myclasses)
        # test = [x.strip() for x in myclasses[0].split(',')]
        progCheck = Progress.all().filter('user ='******'number =',coursename).get()
            progress = Progress(user=current_user, course=course, completed=True, quarter=quarter, year=year)
            if (course != None):
                progress.put()


            # if (course != None):
            #     quarter = course_number[1][:-2]
            #     year = int(course_number[1][-2:])
            #     # need to figure out how to query for specific course
            #     # so that we can remove it if neccessary
            #     progress = Progress(user=current_user, course=course, completed=True, quarter=quarter, year=year)
            #     progCheck = Progress.all().filter('user ='******'course =', course).fetch(limit=20)
            #     # if (progCheck.quarter != quarter):
            #     #     progress.put()
            #     #     #then remove the old class here too....
                log = ""
            #     if not progCheck:
            #         progress.put()
            #         log = "progCheck==None , " + str(course_number)
            #     else:
            #         if not any(quarter == chances.quarter for chances in progCheck):
            #             progress.put()
            #         # for chances in progCheck:
            #         #     if (chances.quarter != quarter):
            #         #         itsHere


                # progress.put()
        self.response.write(log + str(myclasses2));
Example #7
0
 def get(self):
     from models import Course, Prerequisites
     courses = Course.all().order('department').fetch(limit=1000)
     print courses
     output = {
         'courses': courses,
     }
     path = os.path.join(os.path.dirname(__file__), 'templates/prereqs.html')
     self.response.write(template.render(path, output))
Example #8
0
 def join_course(self, course_id, code=None):
     from models import Course, UserCourse  # do this because users.py & courses.py import each other
     if code is not None:
         course = Course.all().filter('code =', code).get()
     elif course_id is not None:
         course = Course.get_by_id(course_id)
     else:
         return ''
     if course is None:
         return 'Invalid code'
     if UserCourse.all().filter('user ='******'course =', course).get():
         return 'You are already in the course'
     if course.teacher.key().id() == self.key().id():
         return 'You teach that course'
     UserCourse(user=self, course=course).put()
     return course
Example #9
0
 def post(self):
     from models import Prerequisites, Course
     import ast
     # course = Course.gql("WHERE number='{}'".format(self.request.get('course'))).get()
     # prereq = Course.gql("WHERE number='{}'".format(self.request.get('prerequisite'))).get()
     # p = Prerequisites(course=course, prereq=prereq)
     # p.put()
     # print("HI")
     course = self.request.get('s')
     number = course.split("-")
     number = number[0]
     course = Course.all().filter('number =',number).get()
     if course == None:
         self.response.write('<br> Sorry no course of that name found.<br>')
     # if len(number) != 2:
     else:
         name = course.name
         descp = course.description[3:]
         self.response.write('<span class="classHeader1">' + number + '<br>' + name + '</span> <br>' + str(descp) + '<br>')
Example #10
0
    def post(self):
        import logging
        from models import Course, Progress
        user = users.get_current_user()
        args = self.request.arguments()
        course_numbers = []
        # logging.debug("test")
        idx = 0
        # courses = self.request.get_all(args[0])
        # for course in courses:
        #     for c2 in course:
        #         course_numbers.append(course)
        for arg in args:
            course = self.request.get_all(arg)

            course.insert(0, arg)
            # course = str(course))
            course_numbers.append(course)
            # idx= idx+1
        current_user = User.all().filter('email =', user.email()).get()
        # for course in course_numbers:
        # course_numbers = args
        for coursevals in course_numbers:
            number = coursevals[0]
            quarteryear = coursevals[1]
            quarteryear = [x.strip() for x in quarteryear.split(',')]
            if len(quarteryear) == 2:
                quarter=quarteryear[0]
                year=int(quarteryear[1][2:])
                if quarter == "Fall":
                    year = year + 1
                course = Course.all().filter('number =',number).get()
                progress = Progress(user=current_user, course=course, quarter=quarter, year=year, completed=True)
                progress.put()

            # self.response.write("<br>")
        # print (str(course_numbers))
        return redirect('/dashboard')
Example #11
0
def forum_discussions_page(request, page):
  discussions=Course.all()
  p=Paginator(discussions, settings.ITEMS_PER_PAGE)
  return render_to_response('tasteofhome/discussions.html', {'discussions': discussions, 'categories': forum_categories(), 'paginator': p})
Example #12
0
 def courses_taught(self):
     from models import Course  # do this because users.py & courses.py import each other
     return Course.all().filter('teacher =', self)