Esempio n. 1
0
    def get(self):
        session = get_current_session()
        if not session.has_key('net_id'):
            auth.require_login(self)
        user = models.get_user(session['net_id'], True)    
        page = self.request.path
        if page == '/':
            page = 'main'
        if page.startswith('/'):
            page = page[1:]
        if page.endswith('.html'):
            page = page[:-5]
        logging.info(page)
        template = JINJA_ENV.get_template('/views/%s.html' % page)
        page_data = {}
        page_data['net_id'] = user.net_id

        page_data['terms'] = []
        requiredTerm = models.Term.gql('WHERE code=:1', 'TRANSFER').get()
        #if requiredTerm.key() not in user.terms:
        #    user.terms.append(requiredTerm.key())
        #    user.put()        
        
        sorted_terms = sorted(models.Term.get(user.terms), key=lambda t:t.code)
        for term in sorted_terms:
            thisTerm = {
                'code': term.code,
                'description':term.description
            }        
            courseTakens = models.CourseTaken.gql('WHERE user=:1 AND term=:2', user, term)
            thisTerm['courses'] = []
            for courseTaken in courseTakens:
                thisTerm['courses'].append({
                    'name': courseTaken.course.subject.code + " " + courseTaken.course.number,
                    'term': courseTaken.term.code,
                    'taken_id' : courseTaken.key(),
                    'id' : courseTaken.course.key()
                })
            page_data['terms'].append(thisTerm)
        
        degree = models.DegreeRequirement.gql('WHERE name=:1', 'Computer Science').get()
        courses_takens = models.CourseTaken.gql('WHERE user=:1', user)
        
        courses = []
        for courses_taken in courses_takens:
        	courses.append(courses_taken.course)
        
        if degree:
            page_data['progress'] = degree.progress_summaries(courses)

        logging.info(page_data['progress'])    
        self.response.out.write(template.render(page_data))
Esempio n. 2
0
    def get(self):
        user = auth.require_login(self)
        puzzleNum = self.request.get('p')
        logging.info(puzzleNum)
        if puzzleNum == '':
            self.display_not_found(user)
        else:
            puzzleNum = int(puzzleNum)
            if puzzleNum > NUM_PUZZLES or puzzleNum < 1:
                self.display_not_found(user)
                return
            attempts = get_attempts(user, puzzleNum-1)
            logging.info(attempts)

            for a in attempts:
                a['time_added'] = (a['time_added'] - timedelta(hours=6)).strftime('%Y-%m-%d %H:%M:%S')

            view = pages.render_view(PAGE_URI, {'attempts': attempts,
                                                'puzzleNum': puzzleNum,
                                                'puzzleTitle': models.puzzle_data.puzzle_titles[puzzleNum - 1]})
            navbar = {
                'team_name': user.team_name,
                'logged_in' : True,
                'team_score' : user.team_score
            }

            now = datetime.now() - timedelta(hours=6) #Get CST from UTC
            if now >= CLOSING_TIME:
                view = pages.render_view('/outoftime_main', {})
                pages.render_page(self, view, navbar)
                return
            pages.render_page(self, view, navbar)
Esempio n. 3
0
    def get(self):
        user = auth.require_login(self)
        if not user:
            return self.redirect(ERROR_URI)

        ongoing_elections = models.election.get_ongoing_elections()
        for election in ongoing_elections:
            organization = models.organization.get_organization(election['organization'])
            election['organization'] = organization.title

        petitions = models.petition.get_petitions(user)
        expired_petitions = []
        ongoing_petitions = []
        for petition in petitions:
            election = models.election.get_election(petition['election'])
            petition['election'] = election.title
            organization = models.organization.get_organization(election.organization)
            petition['organization'] = organization.title
            petition['signatures_left'] = election.threshold - petition['signature_num']
            if petition['signatures_left'] < 0:
                        petition['signatures_left'] = 0
            if election.end_date < date.today():
                expired_petitions.append(petition)
            else:
                ongoing_petitions.append(petition)

        view = pages.render_view(MY_URI, {'expired_petitions': expired_petitions,
                                          'ongoing_petitions': ongoing_petitions,
                                          'ongoing_elections': ongoing_elections})
        pages.render_page(self, view)
Esempio n. 4
0
    def delete(self):
        user = auth.require_login(self)
        if not user:
            return self.redirect(ERROR_URI)

        election_id = self.request.get('id')
        election = models.election.get_election(election_id)
        models.election.delete_election(election)

        self.response.out.write('Success!')
Esempio n. 5
0
 def get(self):
     user = auth.require_login(self)
     #petitions = models.petition.get_petitions(user)
     effectivePetitions = models.petition.get_in_effect_petitions()
     expiredPetitions = models.petition.get_expired_petitions()
     logging.info("effective petitions: %s", effectivePetitions)
     for petition in effectivePetitions:
         print petition['votes']
     view = pages.render_view(PAGE_URI, {'effectivePetitions': effectivePetitions, 'expiredPetitions':expiredPetitions})
     pages.render_page(self, view)
Esempio n. 6
0
    def post(self):
        user = auth.require_login(self)
        if not user:
            return self.redirect(ERROR_URI)

        data = json.loads(self.request.get('data'))
        logging.info('Save Admins Post: %s', data)

        models.organization.update_admins(data['organization_id'], data['admins'])

        self.response.out.write('Success!')
Esempio n. 7
0
    def post(self):
        user = auth.require_login(self)
        if not user:
            return self.redirect(ERROR_URI)

        data = json.loads(self.request.get('data'))
        logging.info('Add Election Post: %s', data)

        election = models.election.create_election(user, data)

        # Respond
        if not election:
            self.response.out.write('Duplicate Election')
        else:
            self.response.out.write('Success')
Esempio n. 8
0
    def get(self):
        user = auth.require_login(self)
        if not user:
            return self.redirect(ERROR_URI)

        # Get the organization
        organization_id = self.request.get('id')
        organization = models.organization.get_organization(organization_id).to_json()
        logging.info("Organization: %s", organization)

        # Make sure the user is authorized to delete the organization
        assert user.get_id() in organization['admins']

        admin_dict = {}
        for admin in organization['admins']:
            admin_dict[admin] = (user.get_id() == admin or ADMIN_ID == admin)
        organization['admins'] = admin_dict

        # Get all the elections for the organization
        elections = models.election.get_organization_elections(organization['id'])
        ongoing_elections = []
        upcoming_elections = []
        expired_elections = []
        for election in elections:
            positions = {}
            for position in election['positions']:
                petitions = models.petition.get_petitions_for_position(election['id'], position)
                for petition in petitions:
                    petition['signatures_left'] = election['threshold'] - petition['signature_num']
                    if petition['signatures_left'] < 0:
                        petition['signatures_left'] = 0
                positions[position] = petitions
            election['positions'] = positions
            if election['start_date'] > datetime.date.today():
                upcoming_elections.append(election)
            elif election['end_date'] < datetime.date.today():
                expired_elections.append(election)
            else:
                ongoing_elections.append(election)
        logging.info("Elections: %s", elections)

        view = pages.render_view(DASHBOARD_URI, {'organization': organization,
                                                 'ongoing_elections': ongoing_elections,
                                                 'upcoming_elections': upcoming_elections,
                                                 'expired_elections': expired_elections})
        pages.render_page(self, view)
Esempio n. 9
0
 def get(self):
     user = auth.require_login(self)
     if user.net_id in models.users_db.all_users:
         if user.team_name == None:
             #Initialize
             user.team_name = models.users_db.all_users[user.net_id]
             user.team_score = 0
             user.put()
         view = pages.render_view(PAGE_URI, {'puzzles': PUZZLES_LIST})
         navbar = {
             'team_name': user.team_name,
             'logged_in' : True,
             'team_score' : user.team_score,
             'puzzles' : True
         }
         pages.render_page(self, view, navbar)
     else:
         delete_user(user)
         view = pages.render_view('/notsignedup', {})
         pages.render_page(self, view, {})
Esempio n. 10
0
    def get(self):
        user = auth.require_login(self)
        if not user:
            return self.redirect(ERROR_URI)

        ongoing_elections = models.election.get_ongoing_elections()
        for election in ongoing_elections:
            organization = models.organization.get_organization(election['organization'])
            election['organization'] = organization.title

        logging.info("Ongoing Elections: %s", ongoing_elections)

        petitions = {}
        for election in ongoing_elections:
            election_id = election['id']
            petitions[election['title']] = {}
            for position in election['positions']:
                petitions[election['title']][position] = models.petition.get_petitions_for_position(election_id,
                                                                                                    position)
                for petition in petitions[election['title']][position]:
                    petition['signatures_left'] = election['threshold'] - petition['signature_num']
                    if petition['signatures_left'] < 0:
                        petition['signatures_left'] = 0

                    if petition['user'].get_id() == user.get_id():
                        petition['own'] = True
                    else:
                        petition['own'] = False
                    if user.get_id() in petition['signatures']:
                        petition['signed'] = True
                    else:
                        petition['signed'] = False

        logging.info("Petitions: %s", petitions)
        view = pages.render_view(PETITIONS_URI, {'petitions': petitions, 'ongoing_elections': ongoing_elections})
        pages.render_page(self, view)
Esempio n. 11
0
    def get(self):
        user = auth.require_login(self)
        if not user:
            return self.redirect(ERROR_URI)

        # Get all the organizations
        organizations = models.organization.get_all_organizations()
        logging.info("organizations: %s", organizations)

        is_admin = user.get_id() == ADMIN_ID
        for organization in organizations:
            if user.get_id() in organization['admins'] or is_admin:
                organization['dashboard'] = True
            else:
                organization['dashboard'] = False

        if user.get_id() == ADMIN_ID:
            admins = ADMIN_ID
        else:
            admins = ADMIN_ID + ',' + user.get_id()

        view = pages.render_view(ORGANIZATION_URI, {'organizations': organizations, 'is_admin': is_admin,
                                                    'admins': admins, 'admin': ADMIN_ID})
        pages.render_page(self, view)
Esempio n. 12
0
 def get(self):
     user = auth.require_login(self)
     myPetitions = models.petition.get_petitions(user)
     view = pages.render_view(MY_PAGE_URI, {'myPetitions': myPetitions})
     pages.render_page(self, view)
Esempio n. 13
0
 def get(self):
     user = auth.require_login(self)
     stickies = models.sticky.get_stickies(user)
     view = pages.render_view(PAGE_URI, {'stickies': stickies})
     pages.render_page(self, view)