def post(self):
     user = users.get_current_user()
     if user:
         fnam = self.request.get('fnam')
         lnam = self.request.get('lnam')
         mem = Member(key_name=user.email(),fnam=fnam,lnam=lnam,user=user)
         mem.put()
         self.redirect('/')
    def get(self):
        user = users.get_current_user()
        url = users.create_logout_url(self.request.uri)
        url_linktext = 'Logout'
        member = Member.get_by_key_name(user.email())
        # if there is a 'id' in query string then it is a view for a specific cert...
        if self.request.get('certid'):
            cid = int(self.request.get('certid'))
            template_file = 'templates/master/cert.html'
            user = users.get_current_user()
            url = users.create_logout_url(self.request.uri)
            url_linktext = 'Logout'
            c = Certification.get_by_id(cid)
            if c:
                # i dunno
                pass


            #get all cert_temps
            ctemps_query = CertificationTemplate.all()
            ctemps = ctemps_query.fetch(100)
            for ctemp in ctemps:
                ctemp.code4 = ctemp.key().name()
            template_values = {'url': url,'url_linktext': url_linktext,'cert': c, 'ctemps':ctemps}
        else:
            member.canteach = ['KB1','KB2','KB3','IK1','IK2','IK3','EX1','EX2']
            template_file = 'templates/master/certs.html'
            cs_query = Certification.gql("WHERE createdBy= :1", users.get_current_user())
            cs = cs_query.fetch(100)
            template_values = {'url': url,'url_linktext': url_linktext, 'member':member,'certs':cs}
        path = os.path.join(os.path.dirname(__file__), template_file)
        self.response.out.write(template.render(path, template_values))
 def post(self):
     # provide an email: get one, no email, get all
     mkey = self.request.get('memberkey')
     if mkey:
         # get specific member
         member = Member.get_by_key_name(mkey)
         method = self.request.get('method')
         if method == 'delete':
             # delete member and his certs and scores
             for cert in member.certifications:
                 for sc in cert.scores:
                     sc.delete()
                 cert.delete()
             member.delete()
             self.redirect('/admin/members')
         elif method == 'update':
             # get admin changeable properties
             if self.request.get('level'): member.level = int(self.request.get('level'))
             if self.request.get('fnam'): member.fnam = self.request.get('fnam')
             if self.request.get('lnam'): member.lnam = self.request.get('lnam')
             member.put()
             self.redirect('/admin/members?memberkey=' + mkey)
     else:
         # no action to be done
         self.redirect('/admin/members')
 def get(self):
     url = users.create_logout_url(self.request.uri)
     url_linktext = 'Logout'
     # provide an email: get one, no email, get all
     mkey = self.request.get('memberkey')
     if mkey:
         # get specific member
         member = Member.get_by_key_name(mkey)
         ctemps_query = CertificationTemplate.all()
         ctemps = ctemps_query.fetch(100)
         template_file = 'templates/admin/member.html'
         template_values = {'url': url,'url_linktext': url_linktext,'member': member, 'ctemps': ctemps}
     else:
         # get all members
         members = Member.all()
         template_file = 'templates/admin/members.html'
         template_values = {'url': url,'url_linktext': url_linktext,'members': members}
     path = os.path.join(os.path.dirname(__file__), template_file)
     self.response.out.write(template.render(path, template_values))
 def get(self):
     template_file = 'templates/pubprof.html'
     profile = self.request.get('profile')
     if profile:
         # parse email from escaped profile parameter
         parsedemail = profile
         member = Member.get_by_key_name(parsedemail)
         for c in member.certifications:
             if c.completed > 0: pass
             else: c.incomplete = True
         template_values = {'member':member}
     path = os.path.join(os.path.dirname(__file__), template_file)
     self.response.out.write(template.render(path, template_values))
    def get(self):
        user = users.get_current_user()
        url = users.create_logout_url(self.request.uri)
        url_linktext = "Logout"
        member = Member.get_by_key_name(user.email())
        # if there is a 'id' in query string then it is a view for a specific cert...
        if self.request.get("certid"):
            cid = int(self.request.get("certid"))
            template_file = "templates/examiner/cert.html"
            user = users.get_current_user()
            url = users.create_logout_url(self.request.uri)
            url_linktext = "Logout"
            c = Certification.get_by_id(cid)
            if c:
                # i dunno
                pass

            # get all cert_temps
            ctemps_query = CertificationTemplate.all()
            ctemps = ctemps_query.fetch(100)
            for ctemp in ctemps:
                ctemp.code4 = ctemp.key().name()
            template_values = {"url": url, "url_linktext": url_linktext, "cert": c, "ctemps": ctemps}
        else:
            if member.level == 7:
                member.canteach = [
                    {"level": "KB1"},
                    {"level": "KB2"},
                    {"level": "KB3"},
                    {"level": "IK1", "mustscore": True},
                    {"level": "IK2", "mustscore": True},
                ]
            elif member.level == 8:
                member.canteach = [
                    {"level": "KB1"},
                    {"level": "KB2"},
                    {"level": "KB3"},
                    {"level": "IK1"},
                    {"level": "IK2"},
                    {"level": "IK3", "mustscore": True},
                ]
            template_file = "templates/examiner/certs.html"
            cs_query = Certification.gql("WHERE createdBy= :1", users.get_current_user())
            cs = cs_query.fetch(100)
            template_values = {"url": url, "url_linktext": url_linktext, "member": member, "certs": cs}
        path = os.path.join(os.path.dirname(__file__), template_file)
        self.response.out.write(template.render(path, template_values))
 def get(self):
     user = users.get_current_user()
     url = users.create_logout_url(self.request.uri)
     url_linktext = 'Logout'
     member = Member.get_by_key_name(user.email())
     if member.level == 4:
         member.canteach = [{'level':'KB1','musttaskscore':True},{'level':'KB2','mustscore':True}]
         member.musttaskscore = {'KB1':True,'KB2':True}
         member.musttaskscorejson = "{'KB1':true,'KB2':true}"
     elif member.level == 5:
         member.canteach = [{'level':'KB1','mustscore':True},{'level':'KB2','mustscore':True},{'level':'KB3','mustscore':True}]
         member.musttaskscore = {'KB1':False,'KB2':False,'KB3':True}
         member.musttaskscorejson = "{'KB1':false,'KB2':false,'KB3':true}"
     elif member.level == 6:
         member.canteach = [{'level':'KB1'},{'level':'KB2'},{'level':'KB3','mustscore':True}]
         member.musttaskscore = {'KB1':False,'KB2':False,'KB3':False}
         member.musttaskscorejson = "{'KB1':false,'KB2':false,'KB3':false}"
         # if there is a 'id' in query string then it is a view for a specific cert...
     if self.request.get('certid'):
         cid = int(self.request.get('certid'))
         template_file = 'templates/instructor/cert.html'
         user = users.get_current_user()
         url = users.create_logout_url(self.request.uri)
         url_linktext = 'Logout'
         c = Certification.get_by_id(cid)
         if c:
             ctkn = c.template.key().name()
             c.musttaskscore = member.musttaskscore[ctkn]
         #get all cert_temps
         ctemps_query = CertificationTemplate.all()
         ctemps = ctemps_query.fetch(100)
         for ctemp in ctemps:
             ctemp.code4 = ctemp.key().name()
         template_values = {'url': url,'url_linktext': url_linktext,'cert': c,'member':member, 'ctemps':ctemps}
     else:
         template_file = 'templates/instructor/certs.html'
         cs_query = Certification.gql("WHERE createdBy= :1", users.get_current_user())
         cs = cs_query.fetch(100)
         template_values = {'url': url,'url_linktext': url_linktext,'member':member,'certs':cs}
     path = os.path.join(os.path.dirname(__file__), template_file)
     self.response.out.write(template.render(path, template_values))
    def post(self):
        method = self.request.get("method")
        if self.request.get("id"):
            cert_id = int(self.request.get("id"))
        email = self.request.get("recipient")
        fnam = self.request.get("fnam")
        lnam = self.request.get("lnam")
        if self.request.get("completed") == "1":
            completed = True
        else:
            completed = False
        templatekey = self.request.get("ctemp")
        if method == "update":
            # an edit
            c = Certification.get_by_id(cert_id)
            if completed:
                if c.completed:
                    # already completed
                    pass
                else:
                    # update their level (member record)
                    if templatekey == "KB1":
                        level = 1
                    elif templatekey == "KB2":
                        level = 2
                    elif templatekey == "KB3":
                        level = 3
                    elif templatekey == "IK1":
                        level = 4
                    elif templatekey == "IK2":
                        level = 5
                    elif templatekey == "IK3":
                        level = 6
                    elif templatekey == "EX1":
                        level = 7
                    elif templatekey == "EX2":
                        level = 8
                    elif templatekey == "M":
                        level = 9
                    else:
                        pass
                    c.completed = True
                    c.owner.level = level
                    # updated Member's level using an algorithm to evaluate elements
            if c.put() and c.completed:
                # triggers an email to email
                pass
            self.redirect("/examiner/certifications")
        elif method == "delete":
            # delete the record and related scores
            c = Certification.get_by_id(cert_id)
            for s in c.scores:
                s.delete()
            # also delete the member if there are no other certs related and the member has no user
            mem = c.owner
            c.delete()
            if mem.user:
                pass
            else:
                memcs = Certification.all()
                memcs = Certification.gql("WHERE owner= :1", c.owner)
                if memcs.count(limit=2) > 0:
                    pass
                else:
                    # also check to see if this user is the creater of the record...
                    if mem.createdBy == users.get_current_user():
                        mem.delete()

            self.redirect("/examiner/certifications")
            # TODO adjust level
        else:
            # a new post
            c = Certification()
            template = CertificationTemplate.get_by_key_name(templatekey)

            c.template = template
            mem = Member.get_by_key_name(email)
            if mem:
                # ... what if the fnam and lnam are different? an update?
                pass
            else:
                # create a new member
                mem = Member(key_name=email, fnam=fnam, lnam=lnam)
                mem.put()
            if completed:
                c.completed = True
                if templatekey == "KB1":
                    level = 1
                elif templatekey == "KB2":
                    level = 2
                elif templatekey == "KB3":
                    level = 3
                elif templatekey == "IK1":
                    level = 4
                elif templatekey == "IK2":
                    level = 5
                elif templatekey == "IK3":
                    level = 6
                elif templatekey == "EX1":
                    level = 7
                elif templatekey == "EX2":
                    level = 8
                elif templatekey == "M":
                    level = 9
                mem.level = level
            mem.put()
            c.owner = mem
            c.put()
            # Trigger email to certification recipient
            from google.appengine.api import mail

            message = mail.EmailMessage(
                sender="WorldKiteOrg-DoNotReply <*****@*****.**>",
                subject="Congratulations - your WorldKite Certification is completed",
            )
            message.to = mem.key().name()
            message.body = "Congratulations" + mem.fnam + " " + mem.lnam
            message.body += """

"""
            message.body += c.template.key().name() + " " + c.template.short
            message.body += """

Visit http://worldkite.org and login with the email address
you provided for your World Kite certification. We use Google's
system for authentication so if you email account is not already
registered with Google then you will be prompted to do so.

Please let us know if you have any questions by dropping an email to:
[email protected]

Welcome to our team!

World Kite Organization
"""
            message.send()
            # now check the template and create new scores for each Element related to the CertTemp
            # first, get all CertificationTemplate.elements
            for el in template.elements:
                # now for each el, create a new ElemScore
                elsc = ElemScore()
                elsc.certtemp_elem = el
                elsc.certification = c
                if completed:
                    elsc.score = 1
                else:
                    elsc.score = 0
                elsc.put()
            self.redirect("/examiner/certifications?certid=" + str(c.key().id()))
    def post(self):
        method = self.request.get('method')
        if self.request.get('id'): cert_id = int(self.request.get('id'))
        email = self.request.get('recipient')
        fnam = self.request.get('fnam')
        lnam = self.request.get('lnam')
        if self.request.get('completed') == '1': completed = True
        else: completed = False
        templatekey = self.request.get('ctemp')
        if method == "update":
            # an edit
            c = Certification.get_by_id(cert_id)
            if completed:
                if c.completed:
                    #already completed
                    pass
                else:
                    #update their level (member record)
                    if templatekey == 'KB1': level = 1
                    elif templatekey == 'KB2': level = 2
                    elif templatekey == 'KB3': level = 3
                    elif templatekey == 'IK1': level = 4
                    elif templatekey == 'IK2': level = 5
                    elif templatekey == 'IK3': level = 6
                    elif templatekey == 'EX1': level = 7
                    elif templatekey == 'EX2': level = 8
                    elif templatekey == 'M': level = 9
                    else: pass
                    c.completed = True
                    c.owner.level = level
                    #updated Member's level using an algorithm to evaluate elements
            if c.put() and c.completed:
                #triggers an email to email
                pass
            self.redirect('/master/certifications')
        elif method == "delete":
            # delete the record and related scores
            c = Certification.get_by_id(cert_id)
            for s in c.scores:
                s.delete()
            #also delete the member if there are no other certs related and the member has no user
            mem = c.owner
            c.delete()
            if mem.user: pass
            else:
                memcs = Certification.all()
                memcs = Certification.gql("WHERE owner= :1", c.owner)
                if memcs.count(limit=2) > 0: pass
                else:
                    # also check to see if this user is the creater of the record...
                    if mem.createdBy == users.get_current_user(): mem.delete()

            self.redirect('/master/certifications')
            # TODO adjust level
        else:
            # a new post
            c = Certification()
            template = CertificationTemplate.get_by_key_name(templatekey)

            c.template = template
            mem = Member.get_by_key_name(email)
            if (mem):
                #... what if the fnam and lnam are different? an update?
                pass
            else:
                # create a new member
                mem = Member(key_name=email,fnam=fnam,lnam=lnam)
                mem.put()
                # TODO don't forget to send them an email to confirm membership!!!
            if completed:
                c.completed = True
                if templatekey == 'KB1': level = 1
                elif templatekey == 'KB2': level = 2
                elif templatekey == 'KB3': level = 3
                elif templatekey == 'IK1': level = 4
                elif templatekey == 'IK2': level = 5
                elif templatekey == 'IK3': level = 6
                elif templatekey == 'EX1': level = 7
                elif templatekey == 'EX2': level = 8
                elif templatekey == 'M': level = 9
                mem.level = level
            mem.put()
            c.owner = mem
            c.put()
            # now check the template and create new scores for each Element related to the CertTemp
            # first, get all CertificationTemplate.elements
            for el in template.elements:
                # now for each el, create a new ElemScore
                elsc = ElemScore()
                elsc.certtemp_elem = el
                elsc.certification = c
                if completed: elsc.score = 1
                else: elsc.score = 0
                elsc.put()
            self.redirect('/master/certifications?certid=' + str(c.key().id()))
    def get(self):
        template_file = "anonymous.html"
        user = users.get_current_user()
        if user:
            url = users.create_logout_url(self.request.uri)
            url_linktext = "Logout"
            template_values = {"url": url, "url_linktext": url_linktext}
            if users.is_current_user_admin():
                template_file = "templates/admin/admin.html"
            else:
                # check member database and pull member.level
                member = Member.get_by_key_name(user.email())
                if member:
                    url = users.create_logout_url(self.request.uri)
                    url_linktext = "Logout"
                    member.title = "Registered Member"
                    template_file = "templates/anonymous.html"
                    if member.level is None:
                        template_file = "templates/anonymous.html"
                    else:
                        # retrieve certifications for storage in template_values
                        if member.level == LevelsEnum.BEGINNER:
                            member.title = "Kiteboard Beginner"
                            template_file = "templates/rider/beginner.html"
                        elif member.level == LevelsEnum.INTERMEDIATE:
                            member.title = "Kiteboard Intermediate"
                            template_file = "templates/rider/intermediate.html"
                        elif member.level == LevelsEnum.RIDER:
                            member.title = "Kiteboard Rider"
                            template_file = "templates/rider/rider1.html"
                        elif member.level == LevelsEnum.RIDER2:
                            member.title = "Kitebaord Advanced Rider"
                            template_file = "templates/rider/rider2.html"
                        elif member.level == LevelsEnum.INSTRUCTOR1:
                            member.title = "Kiteboard Instructor Level I"
                            template_file = "templates/instructor/instructor1.html"
                        elif member.level == LevelsEnum.INSTRUCTOR2:
                            member.title = "Kiteboard Instructor Level II"
                            template_file = "templates/instructor/instructor2.html"
                        elif member.level == LevelsEnum.INSTRUCTOR3:
                            member.title = "Kiteboard Instructor Level III"
                            template_file = "templates/instructor/instructor3.html"
                        elif member.level == LevelsEnum.EXAMINER:
                            member.title = "Examiner"
                            template_file = "templates/examiner/examiner1.html"
                        elif member.level == LevelsEnum.EXAMINER2:
                            member.title = "Senior Examiner"
                            template_file = "templates/examiner/examiner2.html"
                        elif member.level == LevelsEnum.MASTER:
                            member.title = "Master Examiner"
                            template_file = "templates/master/master.html"
                        else:
                            # raise and handle error: member.level is beyond LevelsEnum constraints - invalid state.
                            pass
                    template_values = {"url": url, "url_linktext": url_linktext, "member": member}
                else:
                    # a google user but not registered
                    url = users.create_logout_url(self.request.uri)
                    url_linktext = "Logout"
                    template_file = "templates/anonymous.html"
                    template_values = {"url": url, "url_linktext": url_linktext, "register": True}
        else:
            url = users.create_login_url(self.request.uri)
            url_linktext = "Login|Register"
            template_file = "templates/anonymous.html"
            template_values = {"url": url, "url_linktext": url_linktext, "loginregister": True}

        path = os.path.join(os.path.dirname(__file__), template_file)
        self.response.out.write(template.render(path, template_values))
    def post(self):
        method = self.request.get('method')
        cert_id = None
        if self.request.get('id'): cert_id = int(self.request.get('id'))
        email = self.request.get('recipient')
        fnam = self.request.get('fnam')
        lnam = self.request.get('lnam')
        if self.request.get('completed') == '1': completed = True
        else: completed = False
        templatekey = self.request.get('ctemp')
        if method == "update":
            # an edit
            c = Certification.get_by_id(cert_id)
            if completed:
                if c.completed:
                    #already completed
                    pass
                else:
                    #update their level (member record)
                    if templatekey == 'KB1': level = 1
                    elif templatekey == 'KB2': level = 2
                    elif templatekey == 'KB3': level = 3
                    elif templatekey == 'IK1': level = 4
                    elif templatekey == 'IK2': level = 5
                    elif templatekey == 'IK3': level = 6
                    elif templatekey == 'EX1': level = 7
                    elif templatekey == 'EX2': level = 8
                    elif templatekey == 'M': level = 9
                    else: level = 0
                    c.completed = True
                    c.owner.level = level
                    #updated Member's level using an algorithm to evaluate elements
            if c.put() and c.completed:
                #triggers an email to email
                pass
            self.redirect('/admin/certifications')
        elif method == "delete":
            # delete the record and related scores
            c = Certification.get_by_id(cert_id)
            for s in c.scores:
                s.delete()
            c.delete()
            self.redirect('/admin/certifications')
            # todo : adjust level
        else:
            # a new post
            c = Certification()
            template = CertificationTemplate.get_by_key_name(templatekey)

            c.template = template
            mem = Member.get_by_key_name(email)
            # goddamit, email should be the keyname for a member!!!
            if mem:
                #... what if the fnam and lnam are different? an update?
                pass
            else:
                # create a new member
                mem = Member(key_name=email,fnam=fnam,lnam=lnam)
                mem.put()
                # todo : don't forget to send them an email to confirm membership!!!
            if completed:
                c.completed = True
                if templatekey == 'KB1': level = 1
                elif templatekey == 'KB2': level = 2
                elif templatekey == 'KB3': level = 3
                elif templatekey == 'IK1': level = 4
                elif templatekey == 'IK2': level = 5
                elif templatekey == 'IK3': level = 6
                elif templatekey == 'EX1': level = 7
                elif templatekey == 'EX2': level = 8
                elif templatekey == 'M': level = 9
                else: level = 0
                mem.level = level
            mem.put()
            c.owner = mem
            c.put()
            # now check the template and create new scores for each Element related to the CertTemp
            # first, get all CertificationTemplate.elements
            for el in template.elements:
                # now for each el, create a new ElemScore
                elsc = ElemScore()
                elsc.certtemp_elem = el
                elsc.certification = c
                if completed: elsc.score = 1
                else: elsc.score = 0
                elsc.put()
            self.redirect('/admin/members?memberkey=' + email)