Ejemplo n.º 1
0
    def post(self):

        email = self.request.get('email')
        password = self.request.get('password')
        verify = self.request.get('verify')

        if password != verify:
            template = env.get_template('signup.html')
            msg = "Password mismatch"
            html = template.render(email=email,
                                   error=msg)
            self.response.out.write(html)

        else:
            try:
                signup(email, password,
                       parent=ModelrParent.all().get())

                # Show the message page with "Success!"
                template = env.get_template('message.html')
                msg = ("Please check your inbox and spam folder " +
                       "for our message. Then click on the link " +
                       "in the email.")
                html = template.render(success=msg)
                self.response.out.write(html)

            except AuthExcept as e:
                template = env.get_template('signup.html')
                msg = e.msg
                html = template.render(email=email,
                                       error=msg)
                self.response.out.write(html)
Ejemplo n.º 2
0
    def post(self, user):
        if "admin" not in user.group:
            self.redirect('/')

        template = env.get_template('admin_site.html')

        host = self.request.get('host')
        if (len(host) > 0):
            server = Server.all().ancestor(ModelrParent.all().get()).get()
            server.host = self.request.get('host')
            server.put()
            html = template.render(
                self.get_base_params(success="Updated Host"))
            self.response.write(html)
            return

        email = self.request.get('email')
        password = self.request.get('password')
        verify = self.request.get('verify')

        if (len(email) > 0):
            if password != verify:
                template = env.get_template('admin_site.html')
                msg = "Password mismatch"
                html = template.render(email=email,
                                       error=msg)
                self.response.out.write(html)
                return

            else:
                try:
                    make_user(email=email,
                              password=password,
                              parent=ModelrParent.all().get())
                    template = env.get_template('admin_site.html')
                    html = template.render(success="Added User",
                                           email=email, user=user)
                    self.response.out.write(html)
                    return

                except AuthExcept as e:
                    template = env.get_template('admin_site.html')
                    html = template.render(error=e.msg, user=user,
                                           email=email)
                    self.response.out.write(html)
                    return

        else:
            template = env.get_template('admin_site.html')
            html = template.render()
            self.response.out.write(html)
Ejemplo n.º 3
0
    def get(self, user):

        group_name = self.request.get("selected_group")

        group = Group.all().ancestor(ModelrParent.all().get())
        group = group.filter("name =", group_name).fetch(1)
        if (not group):
            self.redirect('/profile')
            return

        group = group[0]
        if group.admin != user.user_id:
            self.redirect('/profile')
            return

        users = []
        for user_id in group.allowed_users:
            u = User.all().ancestor(ModelrParent.all().get())\
                          .filter("user_id =", user_id)
            u = u.fetch(1)
            if u:
                users.append(u[0])

        params = self.get_base_params(user=user, users=users,
                                      group=group)
        template = env.get_template('manage_group.html')
        html = template.render(params)

        activity = "manage_group"
        ActivityLog(user_id=user.user_id,
                    activity=activity,
                    parent=ModelrParent.all().get()).put()
        self.response.out.write(html)
Ejemplo n.º 4
0
    def get(self):

        template_params = self.get_base_params()
        template = env.get_template('demo.html')
        html = template.render(template_params)

        self.response.out.write(html)
Ejemplo n.º 5
0
    def get(self):

        g_user = users.get_current_user()

        if not g_user:
            login_url = users.create_login_url('/')
            template = env.get_template("main.html")
            html = template.render(login_url=login_url, stats=statistics())
            self.response.out.write(html)

        else:
            logout_url = users.create_logout_url('/')
            login_url = None
            email_hash = hashlib.md5(g_user.email()).hexdigest()

            user_obj = User.all().ancestor(db_parent)
            user_obj = user_obj.filter("user_id =", g_user.user_id())
            user_obj = user_obj.get()

            if not user_obj:
                user_obj = User(user_id=g_user.user_id(),
                                nickname=g_user.nickname(),
                                parent=db_parent,
                                email=g_user.email())
                user_obj.put()

            self.redirect('/library')
Ejemplo n.º 6
0
    def get(self):

        user = users.get_current_user()

        # Unlogged-in people can see the library.
        if user:
            upload_url = blobstore.create_upload_url('/upload')
            user_id = user.user_id()
        else:
            upload_url = ''
            user_id = ''

        # Get the images.
        # We need to delete images without titles.
        # I would rather do this in add_image.html
        # but it seems you can't trigger deletion
        # with $(window).on(beforeunload)...
        # https://developer.mozilla.org/en-US/docs/WindowEventHandlers.onbeforeunload
        if users.is_current_user_admin():
            # Then see everything.
            img_objs = ImageObject.all().ancestor(db_parent).fetch(1000)
        else:
            # Then omit aborted uploads.
            img_objs = ImageObject.all().ancestor(db_parent).filter(
                "title !=", '').fetch(1000)

        template = env.get_template('choose.html')

        params = self.get_base_params(img_objs=img_objs,
                                      upload_url=upload_url,
                                      user_id=user_id)
        html = template.render(params)

        self.response.write(html)
Ejemplo n.º 7
0
    def get(self):

        user = self.verify()
        template_params = self.get_base_params(user=user)
        template = env.get_template('features.html')
        html = template.render(template_params)
        self.response.out.write(html)      
Ejemplo n.º 8
0
    def get(self):

        user_id = users.get_current_user().user_id()
        image_key = self.request.get("image_key")
        img_obj = ImageObject.get_by_id(int(image_key), parent=db_parent)

        # DO THE MAGIC!
        image = get_result_image(img_obj)

        picks = Picks.all().ancestor(img_obj).fetch(1000)
        pick_users = [p.user_id for p in picks]
        count = len(pick_users)

        owner_user = img_obj.user_id

        # Filter out the owner and current user
        if user_id in pick_users: pick_users.remove(user_id)
        if owner_user in pick_users: pick_users.remove(owner_user)

        # Get a list of comment strings, if any.
        comments = Comment.all().ancestor(img_obj).order('datetime').fetch(
            1000)

        params = self.get_base_params(count=count,
                                      image=image,
                                      img_obj=img_obj,
                                      user_id=user_id,
                                      owner_user=owner_user,
                                      pick_users=pick_users,
                                      comments=comments)

        template = env.get_template("results.html")
        html = template.render(params)

        self.response.write(html)
Ejemplo n.º 9
0
    def get(self):

        # allow guests as well
        user = self.verify()
        all_rocks = get_all_items_user(Rock, user)

        rock_json = json.dumps([rock.json for rock in all_rocks])
      
        all_fluids = get_all_items_user(Fluid, user)
        fluid_json = json.dumps([fluid.json for fluid in all_fluids])

        colour_map = {item.name: RGBToString(colour)
                      for (item, colour) in
                      zip(all_rocks + all_fluids, usgs_colours)}

        colour_map = json.dumps(colour_map)
        params = self.get_base_params(user=user,
                                      db_rocks=rock_json,
                                      db_fluids=fluid_json,
                                      colour_map=colour_map)

        template = env.get_template('1D_model.html')

        html = template.render(params)
        self.response.write(html)
Ejemplo n.º 10
0
    def get(self, user):

        if "admin" not in user.group:
            self.redirect('/')

        template = env.get_template('admin_site.html')
        html = template.render(self.get_base_params(user=user))
        self.response.out.write(html)
Ejemplo n.º 11
0
    def get(self):

        template = env.get_template('signup.html')
        error = self.request.get("error")
        if error == 'auth_failed':
            error_msg = "failed to authorize user"
            html = template.render(error=error_msg)
        else:
            html = template.render()

        self.response.out.write(html)
Ejemplo n.º 12
0
    def get(self):

        # Redirect to the dashboard if the user is logged in
        user = self.verify()
        if user:
            self.redirect('/dashboard')

        template_params = self.get_base_params()
        template = env.get_template('index.html')
        html = template.render(template_params)

        self.response.out.write(html)
Ejemplo n.º 13
0
    def post(self, user):

        template = env.get_template('message.html')

        try:
            cancel_subscription(user)
            msg = "Unsubscribed from Modelr"
            html = template.render(user=user, msg=msg)
            self.response.write(html)

        except AuthExcept as e:
            html = template.render(user=user, error=e.msg)
            self.response.write(html)
Ejemplo n.º 14
0
    def post(self, subpage):

        email = self.request.get('email')
        message = self.request.get('message')

        user = self.verify()

        try:
            send_message("User message %s" % email, message)
            template = env.get_template('message.html')
            msg = ("Thank you for your message. " +
                   "We'll be in touch shortly.")
            html = template.render(success=msg, user=user)
            self.response.out.write(html)

        except:
            template = env.get_template('message.html')
            msg = ('Your message was not sent.   ' +
                   '<button class="btn btn-default" ' +
                   'onclick="goBack()">Go back and retry</button>')
            html = template.render(warning=msg, user=user)
            self.response.out.write(html)
Ejemplo n.º 15
0
    def get(self):

        user = self.verify()
        template_params = self.get_base_params(user=user)
        template = env.get_template('privacy.html')
        html = template.render(template_params)
        activity = "privacy"

        if user:
            ActivityLog(user_id=user.user_id,
                        activity=activity,
                        parent=ModelrParent.all().get()).put()

        self.response.out.write(html)
Ejemplo n.º 16
0
    def post(self, user):
        current_pword = self.request.get("current_pword")
        new_password = self.request.get("new_password")
        verify = self.request.get("verify")

        template = env.get_template('profile.html')

        try:
            reset_password(user, current_pword, new_password,
                           verify)
            msg = ("You reset your password.")
            html = template.render(user=user, success=msg)
            self.response.out.write(html)
        except AuthExcept as e:
            html = template.render(user=user, error=e.msg)
Ejemplo n.º 17
0
    def get(self, user):

        groups = []
        for group in user.group:
            g = Group.all().ancestor(ModelrParent.all().get())\
                           .filter("name =", group)
            g = g.fetch(1)
            if g:
                groups.append(g[0])

        template_params = self.get_base_params(user=user, groups=groups,
                                               stripe_key=stripe_public_key)

        if self.request.get("createfailed"):
            create_error = "Group name exists"
            template_params.update(create_error=create_error)
        if self.request.get("joinfailed"):
            join_error = "Group does not exists"
            template_params.update(join_error=join_error)

        # Get the user permission requests
        req = GroupRequest.all().ancestor(ModelrParent.all().get())\
                                .filter("user ="******"admin =", user.user_id)
        admin_groups = admin_groups.fetch(100)
        req = []
        for group in admin_groups:
            # Check for a request
            g_req = GroupRequest.all().ancestor(ModelrParent.all().get())
            g_req = g_req.filter("group =", group.name).fetch(100)
            req = req + [{'group': group.name,
                          'user': User.all().filter("user_id =", i.user).get()}
                         for i in g_req]

        template_params.update(admin_req=req)
        template = env.get_template('profile.html')
        html = template.render(template_params)

        activity = "profile_view"
        ActivityLog(user_id=user.user_id,
                    activity=activity,
                    parent=ModelrParent.all().get()).put()
        self.response.out.write(html)
Ejemplo n.º 18
0
    def post(self):

        email = self.request.get('email')
        template = env.get_template('message.html')

        try:
            forgot_password(email, parent=ModelrParent.all().get())

            msg = ("Please check your inbox and spam folder " +
                   "for our message. Then click on the link " +
                   "in the email.")
            html = template.render(success=msg)
            self.response.out.write(html)
        except AuthExcept as e:
            html = template.render(error=e.msg)
            self.response.out.write(html)
Ejemplo n.º 19
0
    def get(self, user_id):

        image_key = self.request.get("image_key")

        img_obj = ImageObject.get_by_id(int(image_key), parent=db_parent)

        if ((user_id == img_obj.user_id) or (users.is_current_user_admin())):

            template_params = self.get_base_params()
            template_params.update(img_obj=img_obj, image_key=image_key)

            template = env.get_template("add_image.html")
            html = template.render(template_params)
            self.response.write(html)

        else:
            raise Exception
Ejemplo n.º 20
0
    def get(self):

        # Allow guests
        user = self.verify()
        
        # Make the upload url
        upload_url = blobstore.create_upload_url('/upload')

        params = self.get_base_params(user=user,
                                      upload_url=upload_url)

        # Check if there was an upload error (see Upload handler)
        if self.request.get("error"):
            params.update(error="Invalid image file")

        template = env.get_template('model2.html')
        html = template.render(params)
        self.response.out.write(html)
Ejemplo n.º 21
0
    def get(self):

        user_id = self.request.get("user_id")

        try:
            # Change this to check the user can be validated and
            # get temp_user
            user = verify_signup(user_id, ModelrParent.all().get())

        except AuthExcept:
            self.redirect('/signup?error=auth_failed')
            return

        msg = "Thank you for verifying your email address."
        params = self.get_base_params(user=user,
                                      stripe_key=stripe_public_key)
        template = env.get_template('checkout.html')
        html = template.render(params, success=msg)
        self.response.out.write(html)
Ejemplo n.º 22
0
    def get(self, user_id, id=None):

        if id:
            key_id = id
            if key_id == 'hohoho':
                key_id = '5156048109305856'
        else:
            key_id = self.request.get("image_key")

        img_obj = ImageObject.get_by_id(int(key_id), parent=db_parent)

        # Write the page.
        template = env.get_template('pickpoint.html')

        params = self.get_base_params(img_obj=img_obj)

        html = template.render(params)

        self.response.write(html)
Ejemplo n.º 23
0
    def get(self, subpage):

        if subpage:
            page = subpage
        else:
            page = 'help'
        page += '.html'

        user = self.verify()
        template_params = self.get_base_params(user=user)
        template = env.get_template(page)
        html = template.render(template_params)
        activity = "help"

        if user:
            ActivityLog(user_id=user.user_id,
                        activity=activity,
                        parent=ModelrParent.all().get()).put()

        self.response.out.write(html)
Ejemplo n.º 24
0
    def post(self):

        email = self.request.get('email')
        password = self.request.get('password')
        redirect = self.request.get('redirect').encode('utf-8')

        try:
            signin(email, password, ModelrParent.all().get())
            cookie = get_cookie_string(email)
            self.response.headers.add_header('Set-Cookie', cookie)

            if redirect:
                self.redirect(redirect)
            else:
                self.redirect('/')

        except AuthExcept as e:
            template = env.get_template('signin.html')
            msg = e.msg
            html = template.render(email=email,
                                   error=msg)
            self.response.out.write(html)
Ejemplo n.º 25
0
    def get(self):

        status = self.request.get("verified")
        redirect = self.request.get('redirect')

        if status == "true":
            msg = ("Your account has been created and your card has "
                   "been charged. Welcome to Modelr!")
            error_msg = None

        elif status == "false":
            error_msg = ("Failed to create account. Your credit card will "
                         "not be charged.")
            msg = None
        else:
            msg = None
            error_msg = None

        template = env.get_template('signin.html')
        html = template.render(success=msg, error=error_msg,
                               redirect=redirect)
        self.response.out.write(html)
Ejemplo n.º 26
0
    def get(self, user):

        template_params = self.get_base_params(user=user)

        # Get the list of issues from GitHub.
        # First, set up the request.
        gh_api_key = 'token 89c9d30cddd95358b1465d1dacb1b64597b42f89'
        url = 'https://api.github.com/repos/kwinkunks/modelr_app/issues'
        params = {'labels': 'wishlist', 'state': 'open'}
        query = urllib.urlencode(params)
        full_url = '{0}?{1}'.format(url, query)

        # Now make the request.
        req = urllib2.Request(full_url)
        req.add_header('Authorization', gh_api_key)

        try:
            resp = urllib2.urlopen(req)
            raw_json = resp.read()
            git_data = json.loads(raw_json)

        except:
            err_msg = ('Failed to retrieve issues from GitHub. ' +
                       'Please check back later.')
            git_data = {}

        else:
            err_msg = ''

            for issue in git_data:

                # Get the user's opinion.
                status = None
                if user:
                    user_issues = Issue.all().ancestor(user)
                    user_issue = user_issues.filter("issue_id =",
                                                    issue["id"]).get()
                    if user_issue:
                        status = user_issue.vote
                    else:
                        Issue(parent=user, issue_id=issue["id"]).put()

                up, down = 0, 0

                if status == 1:
                    up = 'true'
                if status == -1:
                    down = 'true'

                issue.update(status=status,
                             up=up,
                             down=down)

                # Get the count. We have to read the database twice.
                down_votes = Issue.all().ancestor(ModelrParent.all().get())\
                                        .filter("issue_id =", issue["id"])\
                                        .filter("vote =", -1).count()
                up_votes = Issue.all().ancestor(ModelrParent.all().get())\
                                      .filter("issue_id =", issue["id"])\
                                      .filter("vote =", 1).count()
                count = up_votes - down_votes

                issue.update(up_votes=up_votes,
                             down_votes=down_votes,
                             count=count)

        # Write out the results.
        template_params.update(issues=git_data,
                               error=err_msg
                               )

        template = env.get_template('feedback.html')
        html = template.render(template_params)
        self.response.out.write(html)
Ejemplo n.º 27
0
    def get(self, user):

        template_params = self.get_base_params(user=user)
        template = env.get_template('settings.html')
        html = template.render(template_params)
        self.response.out.write(html)
Ejemplo n.º 28
0
 def get(self):
     template_params = self.get_base_params()
     template = env.get_template('about.html')
     html = template.render(template_params, stats=statistics())
     self.response.write(html)
Ejemplo n.º 29
0
    def get(self):
        template = env.get_template("404.html")
        html = template.render()

        self.response.write(html)
Ejemplo n.º 30
0
 def get(self):
     template = env.get_template('forgot.html')
     html = template.render()
     self.response.out.write(html)