alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Android example source code file (dashboard.py)

This example Android source code file (dashboard.py) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Android by Example" TM.

Java - Android tags/keywords

conditions, false, get, inserts, license, lists, meta, post, project, represents, reprint, save, source, this

The dashboard.py Android example source code

#!/usr/bin/python2.5

# Copyright (C) 2010 The Android Open Source Project
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

"""Defines Django forms for inserting/updating/viewing data
   to/from SampleSyncAdapter datastore."""

import cgi
import datetime
import os

from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.db import djangoforms
from model import datastore

import wsgiref.handlers


class UserForm(djangoforms.ModelForm):
  """Represents django form for entering user info."""

  class Meta:
    model = datastore.User


class UserInsertPage(webapp.RequestHandler):
  """Inserts new users. GET presents a blank form. POST processes it."""

  def get(self):
    self.response.out.write('<html>'
                            '<form method="POST" '
                            'action="/add_user">'
                            '<table>')
    # This generates our shopping list form and writes it in the response
    self.response.out.write(UserForm())
    self.response.out.write('</table>'
                            '<input type="submit">'
                            '</form>')

  def post(self):
    data = UserForm(data=self.request.POST)
    if data.is_valid():
      # Save the data, and redirect to the view page
      entity = data.save(commit=False)
      entity.put()
      self.redirect('/users')
    else:
      # Reprint the form
      self.response.out.write('<html>'
                              '<form method="POST" '
                              'action="/">'
                              '<table>')
      self.response.out.write(data)
      self.response.out.write('</table>'
                              '<input type="submit">'
                              '</form>')


class UserEditPage(webapp.RequestHandler):
  """Edits users. GET presents a form prefilled with user info
     from datastore. POST processes it."""

  def get(self):
    id = int(self.request.get('user'))
    user = datastore.User.get(db.Key.from_path('User', id))
    self.response.out.write('<html>'
                            '<form method="POST" '
                            'action="/edit_user">'
                            '<table>')
    # This generates our shopping list form and writes it in the response
    self.response.out.write(UserForm(instance=user))
    self.response.out.write('</table>'
                            '<input type="hidden" name="_id" value="%s">'
                            '<input type="submit">'
                            '</form>' % id)

  def post(self):
    id = int(self.request.get('_id'))
    user = datastore.User.get(db.Key.from_path('User', id))
    data = UserForm(data=self.request.POST, instance=user)
    if data.is_valid():
      # Save the data, and redirect to the view page
      entity = data.save(commit=False)
      entity.updated = datetime.datetime.utcnow()
      entity.put()
      self.redirect('/users')
    else:
      # Reprint the form
      self.response.out.write('<html>'
                              '<form method="POST" '
                              'action="/edit_user">'
                              '<table>')
      self.response.out.write(data)
      self.response.out.write('</table>'
                              '<input type="hidden" name="_id" value="%s">'
                              '<input type="submit">'
                              '</form>' % id)


class UsersListPage(webapp.RequestHandler):
  """Lists all Users. In addition displays links for editing user info,
     viewing user's friends and adding new users."""

  def get(self):
    users = datastore.User.all()
    template_values = {
        'users': users
        }

    path = os.path.join(os.path.dirname(__file__), 'templates', 'users.html')
    self.response.out.write(template.render(path, template_values))


class UserCredentialsForm(djangoforms.ModelForm):
  """Represents django form for entering user's credentials."""

  class Meta:
    model = datastore.UserCredentials


class UserCredentialsInsertPage(webapp.RequestHandler):
  """Inserts user credentials. GET shows a blank form, POST processes it."""

  def get(self):
    self.response.out.write('<html>'
                            '<form method="POST" '
                            'action="/add_credentials">'
                            '<table>')
    # This generates our shopping list form and writes it in the response
    self.response.out.write(UserCredentialsForm())
    self.response.out.write('</table>'
                            '<input type="submit">'
                            '</form>')

  def post(self):
    data = UserCredentialsForm(data=self.request.POST)
    if data.is_valid():
      # Save the data, and redirect to the view page
      entity = data.save(commit=False)
      entity.put()
      self.redirect('/users')
    else:
      # Reprint the form
      self.response.out.write('<html>'
                              '<form method="POST" '
                              'action="/add_credentials">'
                              '<table>')
      self.response.out.write(data)
      self.response.out.write('</table>'
                              '<input type="submit">'
                              '</form>')


class UserFriendsForm(djangoforms.ModelForm):
  """Represents django form for entering user's friends."""

  class Meta:
    model = datastore.UserFriends
    exclude = ['deleted', 'username']


class UserFriendsInsertPage(webapp.RequestHandler):
  """Inserts user's new friends. GET shows a blank form, POST processes it."""

  def get(self):
    user = self.request.get('user')
    self.response.out.write('<html>'
                            '<form method="POST" '
                            'action="/add_friend">'
                            '<table>')
    # This generates our shopping list form and writes it in the response
    self.response.out.write(UserFriendsForm())
    self.response.out.write('</table>'
                            '<input type = hidden name = "user" value = "%s">'
                            '<input type="submit">'
                            '</form>' % user)

  def post(self):
    data = UserFriendsForm(data=self.request.POST)
    if data.is_valid():
      user = self.request.get('user')
      # Save the data, and redirect to the view page
      entity = data.save(commit=False)
      entity.username = user
      query = datastore.UserFriends.all()
      query.filter('username = ', user)
      query.filter('friend_handle = ', entity.friend_handle)
      result = query.get()
      if result:
	result.deleted = False
	result.updated = datetime.datetime.utcnow()
	result.put()
      else:
        entity.deleted = False
        entity.put()
      self.redirect('/user_friends?user=' + user)
    else:
      # Reprint the form
      self.response.out.write('<html>'
                              '<form method="POST" '
                              'action="/add_friend">'
                              '<table>')
      self.response.out.write(data)
      self.response.out.write('</table>'
                              '<input type="submit">'
                              '</form>')


class UserFriendsListPage(webapp.RequestHandler):
  """Lists all friends for a user. In addition displays links for removing
     friends and adding new friends."""

  def get(self):
    user = self.request.get('user')
    query = datastore.UserFriends.all()
    query.filter('deleted = ', False)
    query.filter('username = ', user)
    friends = query.fetch(50)
    template_values = {
        'friends': friends,
        'user': user
        }
    path = os.path.join(os.path.dirname(__file__),
                        'templates', 'view_friends.html')
    self.response.out.write(template.render(path, template_values))


class DeleteFriendPage(webapp.RequestHandler):
  """Processes delete friend request."""

  def get(self):
    user = self.request.get('user')
    friend = self.request.get('friend')
    query = datastore.UserFriends.all()
    query.filter('username =', user)
    query.filter('friend_handle =', friend)
    result = query.get()
    result.deleted = True
    result.updated = datetime.datetime.utcnow()
    result.put()

    self.redirect('/user_friends?user=' + user)


def main():
  application = webapp.WSGIApplication(
      [('/add_user', UserInsertPage),
       ('/users', UsersListPage),
       ('/add_credentials', UserCredentialsInsertPage),
       ('/add_friend', UserFriendsInsertPage),
       ('/user_friends', UserFriendsListPage),
       ('/delete_friend', DeleteFriendPage),
       ('/edit_user', UserEditPage)
      ],
      debug=True)
  wsgiref.handlers.CGIHandler().run(application)

if __name__ == '__main__':
  main()

Other Android examples (source code examples)

Here is a short list of links related to this Android dashboard.py source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.