Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bundler.py19
-rw-r--r--MANIFEST32
-rw-r--r--Models.py208
-rw-r--r--ScorePadActivity.py911
-rw-r--r--Template.py90
-rw-r--r--dist/ScorePad-1.xobin1006212 -> 166024 bytes
-rw-r--r--images/AddProject.pngbin0 -> 2464 bytes
-rw-r--r--images/Projects.pngbin0 -> 2042 bytes
-rw-r--r--images/Rubrics.pngbin0 -> 2360 bytes
-rw-r--r--images/author.pngbin0 -> 4798 bytes
-rw-r--r--images/date.pngbin0 -> 3499 bytes
-rw-r--r--images/delete.pngbin0 -> 3729 bytes
-rw-r--r--images/description.pngbin0 -> 6937 bytes
-rw-r--r--images/design1.pngbin0 -> 6827 bytes
-rw-r--r--images/edit.pngbin0 -> 3311 bytes
-rw-r--r--images/evaluate.pngbin0 -> 4933 bytes
-rw-r--r--images/finalize.pngbin0 -> 3852 bytes
-rw-r--r--images/left.pngbin0 -> 2778 bytes
-rw-r--r--images/projectdetails.pngbin0 -> 8111 bytes
-rw-r--r--images/right.pngbin0 -> 2783 bytes
-rw-r--r--images/rubric.pngbin0 -> 4094 bytes
-rw-r--r--images/scorepad.pngbin0 -> 13983 bytes
-rw-r--r--images/seegrades.pngbin0 -> 4552 bytes
-rw-r--r--images/share.pngbin0 -> 5068 bytes
-rw-r--r--images/subject.pngbin0 -> 5492 bytes
-rw-r--r--images/submit.pngbin0 -> 4920 bytes
-rw-r--r--images/title.pngbin0 -> 2877 bytes
-rw-r--r--images/update.pngbin0 -> 5134 bytes
28 files changed, 796 insertions, 464 deletions
diff --git a/Bundler.py b/Bundler.py
index a00ee14..9f3bb6a 100644
--- a/Bundler.py
+++ b/Bundler.py
@@ -1,4 +1,5 @@
from Models import *
+import logging
class Bundler():
@@ -9,7 +10,9 @@ class Bundler():
str(project.publish_date)+"|"+\
str(project.is_owned) + "|"+str(project.is_shared)+"|"+\
str(project.rubric_id) +"|"+project.xo_name+"|"+\
- project.project_sha
+ project.project_sha + "|"+str(project.total_score)
+
+ logging.debug(project_bundle)
return project_bundle
@@ -18,7 +21,9 @@ class Bundler():
rubric_bundle = "Rubric|" + str(rubric.rubric_id)+"|"+rubric.title+"|"+\
rubric.author+"|"+rubric.description+"|"+\
str(rubric.is_predefined) +"|"+rubric.xo_name +"|"+\
- rubric.rubric_sha
+ rubric.rubric_sha+"|"+str(rubric.enable_points)
+
+ logging.debug(rubric_bundle)
return rubric_bundle
@@ -28,9 +33,9 @@ class Bundler():
for category in categories:
bundle = "Category|" + str(category.category_id)+"|"+category.name+"|"+\
str(category.rubric_id) +"|"+\
- category.category_sha
+ category.category_sha +"|"+str(category.percentage)
categorylist.append(bundle)
-
+ logging.debug(bundle)
return categorylist
def bundle_level(self, levels):
@@ -39,8 +44,9 @@ class Bundler():
for level in levels:
bundle = "Level|" + str(level.level_id) +"|"+ level.name+"|"+level.description+"|"+\
str(level.category_id)+"|"+str(level.rubric_id)+"|"+\
- level.level_sha
+ level.level_sha +"|"+str(level.points)
levelist.append(bundle)
+ logging.debug(bundle)
return levelist
@@ -50,6 +56,7 @@ class Bundler():
score_bundle = "Score|" + str(score.score_id) + "|" + str(score.project_id) + "|" + \
str(score.rubric_id) + "|" + str(score.category_id) + "|" + str(score.level_id) + "|" + \
score.project_sha + "|" + score.rubric_sha + "|" + score.category_sha + "|" +\
- score.level_sha + "|" + str(score.count)
+ score.level_sha + "|" + str(score.score_count)
+ logging.debug(score_bundle)
return score_bundle
diff --git a/MANIFEST b/MANIFEST
index 1aeaf1b..d1302ec 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2,26 +2,40 @@ ScorePadActivity.py
activity/activity.info
activity/activity-scorepad.svg
setup.py
-images/hello2.png
-images/green_button2.png
-images/wel2.png
Template.py
Models.py
Bundler.py
-LessonPlanTemplate.txt
pygtk_chart/data/tango.color
pygtk_chart/bar_chart.py
pygtk_chart/basics.py
pygtk_chart/chart.py
pygtk_chart/__init__.py
pygtk_chart/pie_chart.py
-db/cnixdb.sqlite
-images/logo5.png
-images/start.png
-images/logo4.png
-images/background.jpg
pygtk_chart/chart_object.py
pygtk_chart/multi_bar_chart.py
pygtk_chart/label.py
COPYING
+images/author.png
+images/date.png
+images/delete.png
+images/description.png
+images/design1.png
+images/edit.png
+images/evaluate.png
+images/finalize.png
+images/green_button2.png
+images/projectdetails.png
+images/rubric.png
+images/seegrades.png
+images/share.png
+images/subject.png
+images/submit.png
+images/title.png
+images/update.png
+images/Projects.png
+images/AddProject.png
+images/right.png
+images/scorepad.png
+images/Rubrics.png
+images/left.png
diff --git a/Models.py b/Models.py
index c504886..a921cc7 100644
--- a/Models.py
+++ b/Models.py
@@ -1,35 +1,51 @@
import sqlite3
import hashlib
+import logging
+import os
class ScorePadDB():
-
- def __init__(self, nickname = ""):
-
- #self.scorepaddb = "/home/cnix/ThesisWorkspace2/ScorePad1.4/src/db/scorepaddb.sqlite"
+
+ def connect_db(self, nickname = ""):
+ is_newlycreated = False
+ self.scorepaddb = str(nickname)+"db.sqlite"
+ if not os.path.isfile(self.scorepaddb):
+ logging.debug("the database already exist")
- self.scorepaddb = "db/"+str(nickname)+"db.sqlite"
self.connection = sqlite3.connect(self.scorepaddb)
+ logging.debug("ScorepadDB-->connect")
self.cursor = self.connection.cursor()
+ try:
+ self.create_tables()
+ is_newlycreated = True
+ logging.debug("ScorepadDB -->create_tables")
+ except:
+ logging.debug("Exception here")
+ return is_newlycreated
+
def create_tables(self):
+
rubric_table = "CREATE TABLE rubric_table (rubric_id INTEGER PRIMARY KEY,\
title VARCHAR(40) NOT NULL,\
author VARCHAR(40) NOT NULL,\
description TEXT,\
is_predefined INTEGER,\
xo_name VARCHAR(50),\
- rubric_sha TEXT)"
+ rubric_sha TEXT,\
+ enable_points INTERGER)"
category_table = "CREATE TABLE category_table (category_id INTEGER PRIMARY KEY,\
name VARCHAR(40) NOT NULL,\
rubric_id INTEGER NOT NULL REFERENCES rubric_table(rubric_id),\
- category_sha TEXT)"
+ category_sha TEXT,\
+ percentage FLOAT)"
level_table = "CREATE TABLE level_table (level_id INTEGER PRIMARY KEY,\
name VARCHAR(40) NOT NULL,\
description TEXT NOT NULL,\
category_id INTEGER NOT NULL REFERENCES category_table(category_id),\
rubric_id INTEGER NOT NULL REFERENCES rubric_table(rubric_id),\
- level_sha TEXT)"
+ level_sha TEXT,\
+ points INTEGER)"
project_table = "CREATE TABLE project_table (project_id INTEGER PRIMARY KEY,\
title VARCHAR(40) NOT NULL,\
@@ -41,7 +57,8 @@ class ScorePadDB():
is_shared INTEGER,\
rubric_id INTEGER NOT NULL REFERENCES rubric_table(rubric_id),\
xo_name VARCHAR(50),\
- project_sha TEXT)"
+ project_sha TEXT,\
+ total_score FLOAT)"
score_table = "CREATE TABLE score_table (score_id INTEGER PRIMARY KEY,\
project_id INTEGER NOT NULL REFERENCES project_table(project_id),\
@@ -52,33 +69,26 @@ class ScorePadDB():
rubric_sha TEXT REFERENCES rubric_table(rubric_sha),\
category_sha TEXT REFERENCES category_table(category_sha),\
level_sha TEXT REFERENCES level_table(level_sha),\
- count INTEGER NOT NULL)"
-
- assessor_table = "CREATE TABLE assessor_table (assessor_id INTEGER PRIMARY KEY,\
- name TEXT NOT NULL, \
- score_id INTEGER NOT NULL REFERENCES score_table(score_id))"
+ score_count INTEGER NOT NULL)"
self.cursor.execute(rubric_table)
- print "rubric table created"
+ logging.debug("rubric table created")
self.cursor.execute(category_table)
- print "category table created"
+ logging.debug("category table created")
self.cursor.execute(level_table)
- print "level table created"
+ logging.debug("level table created")
self.cursor.execute(project_table)
- print "project table created"
+ logging.debug("project table created")
self.cursor.execute(score_table)
- print "score table created"
- self.cursor.execute(assessor_table)
- print "assessor table created"
- self.cursor.close()
-
+ logging.debug("score table created")
+
def insert_rubric(self, rubric):
temp = (rubric.title, rubric.author, rubric.description, rubric.is_predefined,
- rubric.xo_name, rubric.rubric_sha)
+ rubric.xo_name, rubric.rubric_sha, rubric.enable_points)
insert_str = "INSERT INTO rubric_table(title, author, description,is_predefined,\
- xo_name, rubric_sha)\
- VALUES(?,?,?,?,?,?)"
+ xo_name, rubric_sha, enable_points)\
+ VALUES(?,?,?,?,?,?,?)"
self.cursor.execute(insert_str,temp)
self.connection.commit()
@@ -89,8 +99,8 @@ class ScorePadDB():
return rubric_id
def insert_criteria(self, category, levels):
- temp = (category.name, category.rubric_id, category.category_sha)
- insert_str = "INSERT INTO category_table(name,rubric_id,category_sha) VALUES (?,?,?)"
+ temp = (category.name, category.rubric_id, category.category_sha, category.percentage)
+ insert_str = "INSERT INTO category_table(name,rubric_id,category_sha,percentage) VALUES (?,?,?,?)"
self.cursor.execute(insert_str, temp)
self.connection.commit()
@@ -98,11 +108,11 @@ class ScorePadDB():
self.cursor.execute(query_str)
category_id = self.cursor.fetchone()[0]
- insert_str = "INSERT INTO level_table(name,description,category_id,rubric_id,level_sha)\
- VALUES(?,?,?,?,?)"
+ insert_str = "INSERT INTO level_table(name,description,category_id,rubric_id,level_sha,points)\
+ VALUES(?,?,?,?,?,?)"
for i in range(len(levels)):
temp = (levels[i].name, levels[i].description,category_id ,\
- levels[i].rubric_id, levels[i].level_sha)
+ levels[i].rubric_id,levels[i].level_sha,levels[i].points)
self.cursor.execute(insert_str, temp)
self.connection.commit()
@@ -110,11 +120,11 @@ class ScorePadDB():
temp = (project.title, project.author, project.description, project.subject,\
project.publish_date, project.is_owned,\
project.is_shared, project.rubric_id,project.xo_name,\
- project.project_sha)
+ project.project_sha, project.total_score)
insert_str = "INSERT INTO project_table(title, author, description, subject,\
publish_date, is_owned, is_shared, rubric_id,xo_name,\
- project_sha) VALUES (?,?,?,?,?,?,?,?,?,?)"
+ project_sha,total_score) VALUES (?,?,?,?,?,?,?,?,?,?,?)"
self.cursor.execute(insert_str,temp)
self.connection.commit()
@@ -127,23 +137,23 @@ class ScorePadDB():
def insert_score(self, score):
temp = (score.project_id, score.rubric_id, score.category_id, score.level_id,
- score.project_sha, score.rubric_sha, score.category_sha, score.level_sha, score.count)
+ score.project_sha, score.rubric_sha, score.category_sha, score.level_sha, score.score_count)
insert_str = "INSERT INTO score_table(project_id,rubric_id,category_id,level_id,\
- project_sha, rubric_sha, category_sha, level_sha, count)\
+ project_sha, rubric_sha, category_sha, level_sha, score_count)\
VALUES (?,?,?,?,?,?,?,?,?)"
self.cursor.execute(insert_str,temp)
self.connection.commit()
def insert_category(self, category):
- temp = (category.name, category.rubric_id, category.category_sha)
- insert_str = "INSERT INTO category_table(name,rubric_id,category_sha) VALUES (?,?,?)"
+ temp = (category.name, category.rubric_id, category.category_sha, category.percentage)
+ insert_str = "INSERT INTO category_table(name,rubric_id,category_sha,percentage) VALUES (?,?,?,?)"
self.cursor.execute(insert_str, temp)
self.connection.commit()
def insert_level(self, level):
- temp = (level.name, level.description, level.category_id, level.rubric_id, level.level_sha)
- insert_str = "INSERT INTO level_table(name, description, category_id, rubric_id, level_sha) \
- VALUES(?,?,?,?,?)"
+ temp = (level.name, level.description, level.category_id, level.rubric_id, level.level_sha,level.points)
+ insert_str = "INSERT INTO level_table(name, description, category_id, rubric_id,level_sha,points) \
+ VALUES(?,?,?,?,?,?)"
self.cursor.execute(insert_str, temp)
self.connection.commit()
@@ -166,7 +176,7 @@ class ScorePadDB():
rubric_list = []
for row in self.cursor:
- rubric = Rubric(row[0], row[1], row[2], row[3], row[4], row[5], row[6])
+ rubric = Rubric(row[0], row[1], row[2], row[3], row[4], row[5], row[6],row[7])
rubric_list.append(rubric)
return rubric_list
@@ -177,7 +187,7 @@ class ScorePadDB():
project_list = []
for row in self.cursor:
project = Project(row[0],row[1],row[2],row[3],row[4],
- row[5],row[6],row[7],row[8], row[9],row[10])
+ row[5],row[6],row[7],row[8], row[9],row[10],row[11])
project_list.append(project)
return project_list
@@ -186,7 +196,7 @@ class ScorePadDB():
self.cursor.execute(query_str)
for row in self.cursor:
- rubric = Rubric(row[0],row[1],row[2],row[3],row[4],row[5],row[6])
+ rubric = Rubric(row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7])
return rubric
@@ -196,7 +206,7 @@ class ScorePadDB():
category_list = []
for row in self.cursor:
- category = Category(row[0], row[1], row[2], row[3])
+ category = Category(row[0], row[1], row[2], row[3],row[4])
category_list.append(category)
return category_list
@@ -207,7 +217,7 @@ class ScorePadDB():
level_list = []
for row in self.cursor:
- level = Level(row[0], row[1], row[2], row[3], row[4], row[5])
+ level = Level(row[0], row[1], row[2], row[3], row[4], row[5],row[6])
level_list.append(level)
return level_list
@@ -221,7 +231,7 @@ class ScorePadDB():
def query_score(self, project_id, rubric_id, category_id, level_id):
temp = (project_id, rubric_id, category_id, level_id)
- query_str = "SELECT count from score_table WHERE project_id = ? \
+ query_str = "SELECT score_count from score_table WHERE project_id = ? \
and rubric_id = ? and category_id = ? and \
level_id = ?"
self.cursor.execute(query_str, temp)
@@ -251,7 +261,7 @@ class ScorePadDB():
self.cursor.execute(query_str)
for row in self.cursor:
- project = Project(row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9],row[10])
+ project = Project(row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9],row[10],row[11])
return project
@@ -284,32 +294,50 @@ class ScorePadDB():
score_id = self.cursor.fetchone()[0]
return score_id
-
def update_project(self, modified_project):
temp = (modified_project.title,modified_project.author,modified_project.description,\
modified_project.subject,\
modified_project.publish_date,\
modified_project.rubric_id,modified_project.project_sha,\
- modified_project.project_id)
+ modified_project.total_score,modified_project.project_id)
update_str = "UPDATE project_table SET title = ?,"+\
"author = ?, "+\
"description = ?,"+\
"subject = ?,"+\
"publish_date = ?,"+\
"rubric_id = ?,"+\
- "project_sha = ?"+\
+ "project_sha = ?,"+\
+ "total_score = ?"+\
"WHERE project_id = ?"
print update_str
self.cursor.execute(update_str,temp)
self.connection.commit()
-
+ def update_projectshare(self, project_id, is_shared):
+ temp = (is_shared, project_id)
+ update_str = "UPDATE project_table SET is_shared = ?"+\
+ "WHERE project_id = ?"
+ self.cursor.execute(update_str,temp)
+ self.connection.commit()
+
def delete_project(self, project_id):
delete_str = "DELETE FROM project_table WHERE project_id ="+ str(project_id)
self.cursor.execute(delete_str)
self.connection.commit()
+ def delete_rubric(self, rubric_id):
+ delete_str = "DELETE FROM rubric_table WHERE rubric_id ="+ str(rubric_id)
+ self.cursor.execute(delete_str)
+
+ delete_str = "DELETE FROM category_table WHERE rubric_id ="+ str(rubric_id)
+ self.cursor.execute(delete_str)
+
+ delete_str = "DELETE FROM level_table WHERE rubric_id ="+ str(rubric_id)
+ self.cursor.execute(delete_str)
+
+ self.connection.commit()
+
def score_exists(self, project_id, rubric_id, category_id, level_id):
temp = (project_id, rubric_id, category_id, level_id)
query_str = "SELECT * FROM score_table WHERE project_id = ? and rubric_id = ? and \
@@ -328,14 +356,14 @@ class ScorePadDB():
except:
return False
- def project_exists(self, project_sha, author):
- temp = (project_sha, author)
- query_str = "SELECT * FROM project_table WHERE project_sha = ? and author = ?"
+ def project_exists(self, title, author):
+ temp = (title, author)
+ query_str = "SELECT * FROM project_table WHERE title = ? and author = ?"
self.cursor.execute(query_str, temp)
for row in self.cursor:
project = Project(row[0],row[1],row[2],row[3],row[4],row[5],row[6],\
- row[7],row[8],row[9],row[10])
+ row[7],row[8],row[9],row[10],row[11])
try:
if project.project_id == None:
@@ -344,14 +372,23 @@ class ScorePadDB():
return True
except:
return False
-
+
+ def is_ownedproject(self, project_sha):
+ query_str = "SELECT is_owned FROM project_table WHERE project_sha = \'" + str(project_sha) +"\'"
+ self.cursor.execute(query_str)
+ is_owned = self.cursor.fetchone()[0]
+
+ if is_owned == None:
+ return 0
+ return is_owned
+
def rubric_exists(self, rubric_sha, description):
temp = (rubric_sha, description)
query_str = "SELECT * FROM rubric_table WHERE rubric_sha = ? and description = ?"
self.cursor.execute(query_str, temp)
for row in self.cursor:
- rubric = Rubric(row[0],row[1],row[2],row[3],row[4],row[5],row[6])
+ rubric = Rubric(row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7])
try:
if rubric.rubric_id == None:
@@ -361,6 +398,22 @@ class ScorePadDB():
except:
return None
+ def check_relatedproject(self, rubric_id):
+ query_str = "SELECT * FROM project_table WHERE rubric_id = "+str(rubric_id)
+ self.cursor.execute(query_str)
+
+ for row in self.cursor:
+ project = Project(row[0],row[1],row[2],row[3],row[4],row[5],row[6],\
+ row[7],row[8],row[9],row[10],row[11])
+
+ try:
+ if project.project_id == None:
+ return False
+ else:
+ return True
+ except:
+ return False
+
def query_score_attr(self, score_id):
query_str = "SELECT * from score_table WHERE score_id = " + str(score_id)
self.cursor.execute(query_str)
@@ -383,22 +436,36 @@ class ScorePadDB():
score = Score(row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9])
score_id = score.score_id
- count = score.count
+ count = score.score_count
count = count +1
temp = (count, score_id)
- update_str = "UPDATE score_table SET count = ?"+\
+ update_str = "UPDATE score_table SET score_count = ?"+\
"WHERE score_id = ?"
self.cursor.execute(update_str, temp)
self.connection.commit()
return score_id
-
+
+
+ #def count_assessor(self, category_id):
+ # query_str = "SELECT COUNT(*) FROM level_table WHERE category_id = " + str(category_id)
+ # self.cursor.execute(query_str)
+ # count = self.cursor.fetchone()[0]
+ # return count
+
+ def get_scorecount(self, project_id, category_id, level_id):
+ temp = (project_id, category_id, level_id)
+ query_str = "SELECT count FROM score_table WHERE project_id = ? AND" +\
+ "category_id = ? AND level_id = ?"
+ self.cursor.execute(query_str, temp)
+ count = self.cursor.fetchone()[0]
+ return count
class Project():
def __init__(self, project_id = 0, title = "", author = "",
description = "", subject = "", publish_date = "",
- is_owned = 1, is_shared = 1, rubric_id = None, xo_name = "",
- project_sha = ""):
+ is_owned = 1, is_shared = 0, rubric_id = None, xo_name = "",
+ project_sha = "",total_score = 0):
self.project_id = project_id
self.title = title
self.author = author
@@ -410,7 +477,7 @@ class Project():
self.rubric_id = rubric_id
self.xo_name = xo_name
self.project_sha = self.get_sha(xo_name, title, publish_date)
-
+ self.total_score = total_score
def get_sha(self, xo_name, title, publish_date):
text = xo_name + title + str(publish_date)
@@ -420,12 +487,10 @@ class Project():
return project_sha
-
-
class Rubric():
def __init__(self, rubric_id = 0, title = "", author = "", description = "",\
- is_predefined =None, xo_name = "", rubric_sha = ""):
+ is_predefined =None, xo_name = "", rubric_sha = "",enable_points = 0):
self.rubric_id = rubric_id
self.title = title
self.author = author
@@ -433,6 +498,7 @@ class Rubric():
self.is_predefined = is_predefined
self.xo_name = xo_name
self.rubric_sha = self.get_sha(xo_name, title, author)
+ self.enable_points = enable_points
def get_sha(self, xo_name, title, author):
text = xo_name + title + author
@@ -446,11 +512,12 @@ class Rubric():
class Category():
def __init__(self, category_id = None, name = "", rubric_id = None,
- category_sha = ""):
+ category_sha = "",percentage = 0):
self.category_id = category_id
self.name = name
self.rubric_id = rubric_id
self.category_sha = self.get_sha(name)
+ self.percentage = percentage
def get_sha(self, name):
text = name
@@ -465,13 +532,14 @@ class Level():
def __init__(self, level_id = None, name = "", description = "",
category_id = None, rubric_id = None,
- level_sha = ""):
+ level_sha = "",points = 0):
self.level_id = level_id
self.name = name
self.description = description
self.category_id = category_id
self.rubric_id = rubric_id
self.level_sha = self.get_sha(name,description)
+ self.points = points
def get_sha(self, name, description):
text = name + description
@@ -484,7 +552,7 @@ class Level():
class Score():
def __init__(self, score_id = 0, project_id = None, rubric_id = None, category_id = None,level_id = None,
- project_sha = "", rubric_sha = "", category_sha = "", level_sha = "",count = 0):
+ project_sha = "", rubric_sha = "", category_sha = "", level_sha = "",score_count = 0):
self.score_id = score_id
self.project_id = project_id
self.rubric_id = rubric_id
@@ -494,5 +562,5 @@ class Score():
self.rubric_sha = rubric_sha
self.category_sha = category_sha
self.level_sha = level_sha
- self.count = count
+ self.score_count = score_count
diff --git a/ScorePadActivity.py b/ScorePadActivity.py
index b4e798d..614d35a 100644
--- a/ScorePadActivity.py
+++ b/ScorePadActivity.py
@@ -1,11 +1,8 @@
-# Copyright 2011-2012 Almira Cayetano <almiracayetano@gmail.com>
-# Copyright 2011-2012 Christian Joy Aranas <cjmaranas@gmail.com>
-# Copyright 2011-2012 Ma. Rowena Solamo <rcsolamo@dcs.upd.edu.ph>
-# Copyright 2011-2012 Rommel Feria <rpferia@dcs.upd.edu.ph>
-#
-# University of the Philippines
-# College of Engineering
-# Department of Computer Science
+# Copyright 2011-2012 Almira Cayetano
+# Copyright 2011-2012 Christian Joy Aranas
+# Copyright 2011-2012 Ma. Rowena Solamo
+# Copyright 2011-2012 Rommel Feria
+# Copyright 2007-2008 One Laptop Per Child
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -21,10 +18,15 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-# Copyright 2007-2008 One Laptop Per Child Chat Activity for the method on
-# connecting sugar activities
-# Copyright 2008 Sven Festersen for the pygtk_chart library
-
+# This program is a project of the University of the Philippines, College
+# of Engineering, Department of Computer Science intended for
+# educational purposes. If you have any suggestions and comments, you can contact us
+# with the following email addresses :
+#
+# Almira Cayetano - accayetano@ittc.up.edu.ph
+# Christian Joy Aranas - cjmaranas@gmail.com
+# Ma. Rowena Solamo - rcsolamo@dcs.upd.edu.ph
+# Rommel Feria - rpferia@dcs.upd.edu.ph
import pygtk
pygtk.require('2.0')
@@ -37,10 +39,10 @@ from Bundler import Bundler
from pygtk_chart import multi_bar_chart
import cjson
-import logging
import telepathy
from dbus.service import method, signal
from dbus.gobject_service import ExportedGObject
+import logging
from sugar.activity.activity import Activity, ActivityToolbox
from sugar.activity import activity
@@ -66,7 +68,6 @@ BUTTON_COLOR = '#097054'
WHITE = '#FFFFFF'
BLUE = '#82CAFA'
-lessonplan_path = 'LessonPlanTemplate.txt'
PROJECTLIST = []
TITLELIST = []
@@ -101,6 +102,14 @@ def theme_button(button):
return button
+def image_button(button, path):
+ pixbufanim = gtk.gdk.PixbufAnimation(path)
+ image = gtk.Image()
+ image.set_from_animation(pixbufanim)
+ image.show()
+ button.add(image)
+ return button
+
def theme_box(box, color):
eb = gtk.EventBox()
box.set_border_width(5)
@@ -110,8 +119,11 @@ def theme_box(box, color):
return eb
class ScorePadActivity(activity.Activity):
-
+#class ScorePadActivity():
def __init__(self, handle):
+# def __init__(self):
+
+ logging.root.setLevel(logging.DEBUG)
Activity.__init__(self, handle)
self.set_title('ScorePad Activity')
@@ -124,29 +136,39 @@ class ScorePadActivity(activity.Activity):
owner = self.pservice.get_owner()
self.owner = owner
self.owner_nick = owner.props.nick
-
+# self.owner_nick = "cnix"
main_canvas = self.build_root()
self.set_canvas(main_canvas)
main_canvas.show_all()
-
+ #self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+ #self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS)
+ #self.window.set_title("ScorePad")
+ #self.window.resize(730,650)
+ #self.window.add(main_canvas)
+ #self.window.show_all()
+
self.is_shared = False
self.text_channel = None
if self.shared_activity:
+ logging.debug('Activity joined')
self.connect('joined', self._joined_cb)
if self.get_shared():
self._joined_cb(self)
else:
+ logging.debug('Activity shared')
self.connect('shared', self._shared_cb)
def build_root(self):
- self.scorepadDB = ScorePadDB(self.owner_nick)
- try:
- self.scorepadDB.create_tables()
- template = Template(self.owner_nick)
+ logging.debug("Function: build_root")
+
+ self.scorepadDB = ScorePadDB()
+ is_newlycreated = self.scorepadDB.connect_db(self.owner_nick)
+ if(is_newlycreated):
+ template = Template(self.owner_nick, self.scorepadDB)
+ logging.debug("ScorepadDB --> template")
template.save_template()
- except:
- print "tables exist"
-
+ logging.debug("ScorepadDB -->save_template")
+
list = self.scorepadDB.queryall_rubric(1)
for temp in list:
RUBRICLIST.append(temp)
@@ -169,8 +191,10 @@ class ScorePadActivity(activity.Activity):
print "friends :" +str(temp.title)
self.is_owned = True
- self.category_titles = [] #submit grades
+ self.category_titles = []
self.is_exists = False
+ self.rubric_received = False
+ self.is_project_owned = True
self.main_table = gtk.HPaned()
self.main_table.set_position(270)
@@ -178,69 +202,59 @@ class ScorePadActivity(activity.Activity):
self.main_table.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.Color(BACKGROUND_COLOR))
menupanel = self.build_menupanel()
self.main_table.add1(menupanel)
-
- self.build_startpage("Start Page")
+
+ self.build_processframe("Projects")
+ self.build_projectlist()
main_table_eb = theme_box(self.main_table, BACKGROUND_COLOR)
-
return main_table_eb
def build_menupanel(self):
- menupanel = gtk.Table(2,1, True)
+ logging.debug("Function: build_menupanel")
+ menupanel = gtk.VBox(False,0)
menupanel.set_border_width(2)
logo = gtk.Image()
- logo.set_from_file("images/hello2.png")
+ logo.set_from_file("images/scorepad.png")
logo.show()
- project_button = gtk.Button("Projects")
+ project_button = gtk.Button()
+ project_button = image_button(project_button,"images/Projects.png")
project_button = theme_button(project_button)
project_button.connect("clicked", self.project_cb, "Projects")
- create_button = gtk.Button("Create New Project")
+
+ create_button = gtk.Button()
+ create_button = image_button(create_button,"images/AddProject.png")
create_button = theme_button(create_button)
create_button.connect("clicked", self.addproject_cb, "Create new project")
- rubrics_button = gtk.Button("Rubrics")
+
+ rubrics_button = gtk.Button()
+ rubrics_button = image_button(rubrics_button,"images/Rubrics.png")
rubrics_button = theme_button(rubrics_button)
rubrics_button.connect("clicked", self.rubrics_cb, "Rubrics")
- lessonplan_button = gtk.Button("Lesson Plan")
- lessonplan_button = theme_button(lessonplan_button)
- lessonplan_button.connect("clicked", self.lessonplan_cb)
- tutorial_button = gtk.Button("Tutorial")
- tutorial_button = theme_button(tutorial_button)
- tutorial_button.connect("clicked", self.tutorial_cb)
-
- button_array = [project_button, create_button, rubrics_button, lessonplan_button, tutorial_button]
-
- menupanel.attach(logo,0,1,0,1)
- menu_table_box = gtk.VBox(False,0)
- for i in range(5) :
- button = theme_box(button_array[i], BORDER_COLOR)
- menu_table_box.add(button)
- menupanel.attach(menu_table_box,0,1,1,2)
-
- return menupanel
-
- def build_startpage(self,label):
- self.build_processframe(label)
- logo = gtk.Image()
- logo.set_from_file("images/wel2.png")
+ menupanel.pack_start(logo,False,False,0)
+ menupanel.add(project_button)
+ menupanel.add(create_button)
+ menupanel.add(rubrics_button)
- self.processtable.attach(logo, 0,2,0,12)
- self.main_table.show_all()
+ return menupanel
def build_processframe(self,label):
+ logging.debug('Function: build_processframe')
self.processtable = gtk.Table(12,2,True)
self.processpanel = gtk.Frame()
self.processpanel.add(self.processtable)
self.processpanel.set_label(label)
+ self.processpanel.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(BACKGROUND_COLOR))
self.main_table.add2(self.processpanel)
self.main_table.show_all()
-
def addproject_cb(self,widget,label):
+ logging.debug('Function: addproject_cb')
entries = self.build_projectentry(label)
- finalize_button = gtk.Button(" Finalize ")
+ finalize_button = gtk.Button()
+ finalize_button = image_button(finalize_button, "images/finalize.png")
finalize_button = theme_button(finalize_button)
finalize_button.connect("clicked", self.finalize_cb, entries)
box = gtk.HBox(False,0)
@@ -250,38 +264,54 @@ class ScorePadActivity(activity.Activity):
self.main_table.show_all()
def build_projectentry(self,label):
+ logging.debug('Function: build_projectentry')
self.processpanel.destroy()
self.build_processframe(label)
- title_label = gtk.Label("Project Title")
- author_label = gtk.Label("Author")
- description_label = gtk.Label("Project Description")
- subject_label = gtk.Label("Subject")
- date_label = gtk.Label("Date")
- rubric_label = gtk.Label("Rubric Name")
+ title_img = gtk.Image()
+ title_img.set_from_file("images/title.png")
+ author_img = gtk.Image()
+ author_img.set_from_file("images/author.png")
+ description_img = gtk.Image()
+ description_img.set_from_file("images/description.png")
+ subject_img = gtk.Image()
+ subject_img.set_from_file("images/subject.png")
+ date_img = gtk.Image()
+ date_img.set_from_file("images/date.png")
+ rubric_img = gtk.Image()
+ rubric_img.set_from_file("images/rubric.png")
title = gtk.Entry(50)
+ title.modify_bg(gtk.STATE_INSENSITIVE,gtk.gdk.color_parse(BACKGROUND_COLOR))
author = gtk.Entry(50)
+ author.modify_bg(gtk.STATE_INSENSITIVE,gtk.gdk.color_parse(BACKGROUND_COLOR))
description = gtk.TextView()
description.set_wrap_mode(gtk.WRAP_WORD)
description.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color(BLUE))
- description.set_border_width(3)
+ description.set_border_width(7)
subject = gtk.Entry(50)
+ subject.modify_bg(gtk.STATE_INSENSITIVE,gtk.gdk.color_parse(BACKGROUND_COLOR))
publish_date = gtk.Entry(50)
+ publish_date.modify_bg(gtk.STATE_INSENSITIVE,gtk.gdk.color_parse(BACKGROUND_COLOR))
+ publish_date.set_editable(False)
rubric_combobox = gtk.ComboBox()
rubric_list = gtk.ListStore(str)
cell = gtk.CellRendererText()
rubric_combobox.pack_start(cell)
rubric_combobox.add_attribute(cell, 'text', 0)
- today = datetime.date.today()
- publish_date.set_text(str(today))
+ today = datetime.datetime.now()
+ publish_date.set_text(unicode(today.replace(microsecond=0)))
for i in range(len(RUBRICTITLE)):
- rubric_list.append([RUBRICTITLE[i]])
+ rubric_list.append([RUBRICTITLE[i] + " - " + RUBRICLIST[i].author])
+
+ for i in range(len(OTHER_RUBRICLIST)):
+ rubric_list.append([OTHER_RUBRICTITLE[i] + " - " + OTHER_RUBRICLIST[i].author])
+
rubric_combobox.set_model(rubric_list)
rubric_combobox.set_active(0)
- label = [title_label, author_label,description_label,subject_label,date_label,rubric_label]
+ label = [title_img, author_img,description_img,subject_img,date_img,rubric_img]
entries = [title, author, description,subject,publish_date,rubric_combobox]
j = 0
for i in range(6):
@@ -303,17 +333,21 @@ class ScorePadActivity(activity.Activity):
entry.modify_bg(gtk.STATE_NORMAL,gtk.gdk.Color(BORDER_COLOR))
self.processtable.attach(entries[i],1,3,j,j+1)
j = j+1
-
+
+ design = gtk.Image()
+ design.set_from_file("images/design1.png")
+ self.processtable.attach(design,0,3,9,11)
return entries
def finalize_cb(self,widget,entries):
+ logging.debug('Function: finalize_cb')
project = self.get_entries(entries)
- if self.scorepadDB.project_exists(project.project_sha, project.author):
+ if self.scorepadDB.project_exists(project.title, project.author):
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Error. Duplicated project.")
+ message_format = "The project already exists.")
md.run()
md.destroy()
else:
@@ -322,7 +356,8 @@ class ScorePadActivity(activity.Activity):
project.project_id = project_id
rubric_id = project.rubric_id
- rubric = self.scorepadDB.query_rubric(rubric_id)
+ rubric = self.scorepadDB.query_rubric(project.rubric_id)
+ #rubric = self.search_rubric(rubric_id)
categories = self.scorepadDB.queryall_category(rubric_id)
self.initialize_score(project, rubric, categories)
@@ -330,21 +365,21 @@ class ScorePadActivity(activity.Activity):
PROJECTLIST.append(project)
self.processpanel.destroy()
self.build_processframe("Projects")
- tuplelist1 = (TITLELIST, PROJECTLIST)
- tuplelist2 = (FRIENDSTITLELIST, FRIENDSPROJECTLIST)
- projectlist = self.build_projectpanel(tuplelist1, tuplelist2)
+ projectlist = self.build_projectpanel()
self.processtable.attach(projectlist,0,2,0,11)
actionpanel = self.build_project_actionpanel()
self.processtable.attach(actionpanel,0,2,11,12)
self.main_table.show_all()
def editproject_cb(self, widget, label):
+ logging.debug('Function: editproject_cb')
try:
if self.is_owned:
project = PROJECTLIST[self.selected_project]
entries = self.build_projectentry(label)
- update_button = gtk.Button(" Update ")
+ update_button = gtk.Button()
+ update_button = image_button(update_button,"images/update.png")
update_button = theme_button(update_button)
update_button.connect("clicked", self.update_cb, entries)
box = gtk.HBox(False,0)
@@ -357,18 +392,19 @@ class ScorePadActivity(activity.Activity):
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Sorry. You cannot edit your friend's project.")
+ message_format = "Sorry. You cannot edit your neighbor's project.")
md.run()
md.destroy()
except:
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Error. No project selected.")
+ message_format = "No project selected. Please select a project first.")
md.run()
md.destroy()
def update_cb(self,widget,entries):
+ logging.debug('Function: update_cb')
modified_project = self.get_entries(entries)
project = PROJECTLIST[self.selected_project]
@@ -379,32 +415,35 @@ class ScorePadActivity(activity.Activity):
PROJECTLIST[self.selected_project] = modified_project
self.processpanel.destroy()
self.build_processframe("Projects")
- tuplelist1 = (TITLELIST, PROJECTLIST)
- tuplelist2 = (FRIENDSTITLELIST, FRIENDSPROJECTLIST)
- projectlist = self.build_projectpanel(tuplelist1, tuplelist2)
+ projectlist = self.build_projectpanel()
self.processtable.attach(projectlist,0,2,0,11)
actionpanel = self.build_project_actionpanel()
self.processtable.attach(actionpanel,0,2,11,12)
self.main_table.show_all()
def set_entries(self,entries,project):
+ logging.debug('Function: set_entries')
entries[0].set_text(project.title)
entries[1].set_text(project.author)
buffer = entries[2].get_buffer()
buffer.set_text(project.description)
entries[3].set_text(project.subject)
-
rubric = self.scorepadDB.query_rubric(project.rubric_id)
+ #rubric = self.search_rubric(project.rubric_id)
for i in range(len(RUBRICTITLE)):
if str(rubric.title) == str(RUBRICTITLE[i]):
active_rubric = i
+
+ for i in range(len(OTHER_RUBRICTITLE)):
+ if str(rubric.title) == str(OTHER_RUBRICTITLE[i]):
+ active_rubric = i
entries[4].set_text(project.publish_date)
entries[5].set_active(active_rubric)
def get_entries(self,entries):
-
+ logging.debug('Function: get_entries')
title = entries[0].get_text()
author = entries[1].get_text()
description_buffer = entries[2].get_buffer()
@@ -417,42 +456,40 @@ class ScorePadActivity(activity.Activity):
chosen_rubric = entries[5].get_active()
rubric = model[chosen_rubric][0]
+ print "rubricj"+str(rubric)
for r in RUBRICLIST:
- if str(r.title) == str(rubric):
+ if str(r.title)+" - " +str(r.author) == str(rubric):
rubric_id = r.rubric_id
+
+ for r2 in OTHER_RUBRICLIST:
+ if str(r2.title)+" - " +str(r2.author) == str(rubric):
+ rubric_id = r2.rubric_id
- is_shared = 0
- is_owned = 1
-
- project = Project(None,title,author,description,subject,publish_date,is_owned,is_shared,rubric_id,
+ project = Project(None,title,author,description,subject,publish_date,1,0,rubric_id,
self.owner_nick,"")
-
return project
def viewproject_details(self,widget,row,col,tuple):
+ logging.debug('Function: viewproject_details')
buffer = tuple[0]
projectlist = tuple[1]
buffer.set_text("")
r = row[0]
self.selected_project = r
self.is_owned = tuple[2]
- print self.selected_project
project = projectlist[r]
- print "rubric id : "+str(project.rubric_id)
- print "project id :"+str(project.project_id)
rubric = self.scorepadDB.query_rubric(project.rubric_id)
-
- details ="===PROJECT DETAILS===\n\n"+"Title :\n -"+project.title+"\n"+\
+ #rubric = self.search_rubric(project.rubric_id)
+ details ="\nTitle :\n -"+project.title+"\n"+\
"Author :\n -"+project.author+"\n"+\
"Description :\n -"+project.description+"\n"+\
"Subject :\n -"+project.subject+"\n"+\
"Date :\n -"+str(project.publish_date)+"\n"+\
"Rubric :\n -"+rubric.title+"\n"
-
buffer.set_text(details)
def deleteproject_cb(self,widget,data=None):
-
+ logging.debug('Function: deleteproject')
try:
if self.is_owned == True:
project_id = PROJECTLIST[self.selected_project].project_id
@@ -473,8 +510,8 @@ class ScorePadActivity(activity.Activity):
PROJECTLIST.remove(PROJECTLIST[self.selected_project])
else:
self.scorepadDB.delete_project(project_id)
- FRIENDSTITLELIST.remove(TITLELIST[self.selected_project])
- FRIENDSPROJECTLIST.remove(PROJECTLIST[self.selected_project])
+ FRIENDSTITLELIST.remove(FRIENDSTITLELIST[self.selected_project])
+ FRIENDSPROJECTLIST.remove(FRIENDSPROJECTLIST[self.selected_project])
warning.destroy()
elif result == gtk.RESPONSE_NO:
print "No was clicked"
@@ -482,9 +519,7 @@ class ScorePadActivity(activity.Activity):
self.processpanel.destroy()
self.build_processframe("Projects")
- tuplelist1 = (TITLELIST, PROJECTLIST)
- tuplelist2 = (FRIENDSTITLELIST, FRIENDSPROJECTLIST)
- projectlist = self.build_projectpanel(tuplelist1, tuplelist2)
+ projectlist = self.build_projectpanel()
self.processtable.attach(projectlist,0,2,0,11)
actionpanel = self.build_project_actionpanel()
self.processtable.attach(actionpanel,0,2,11,12)
@@ -493,89 +528,89 @@ class ScorePadActivity(activity.Activity):
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Error. No project selected.")
+ message_format = "No project selected. Please select a project first.")
md.run()
md.destroy()
def share_cb(self,widget,data=None):
-
+
+ logging.debug('Function: share_cb')
+
if self.is_shared :
if self.is_owned:
project = PROJECTLIST[self.selected_project]
- print "selected " + str(self.selected_project)
+ self.scorepadDB.update_projectshare(project.project_id, 1)
bundler = Bundler()
project_bundle = bundler.bundle_project(project)
rubric_id = project.rubric_id
+ logging.debug("UYRUBRIC_ID :"+str(rubric_id))
rubric = self.scorepadDB.query_rubric(rubric_id)
- rubric_bundle = bundler.bundle_rubric(rubric)
- categories = self.scorepadDB.queryall_category(rubric_id)
- category_bundle = bundler.bundle_category(categories)
- level_bundle_list = []
- for category in categories:
- levels = self.scorepadDB.query_level(category.category_id)
- level_bundle = bundler.bundle_level(levels)
- level_bundle_list.append(level_bundle)
+ logging.debug("UYRUBRIC_SHA2 :"+str(rubric.rubric_sha))
+ if not rubric.is_predefined:
+ rubric_bundle = bundler.bundle_rubric(rubric)
+ categories = self.scorepadDB.queryall_category(rubric_id)
+ category_bundle = bundler.bundle_category(categories)
+ level_bundle_list = []
+ for category in categories:
+ levels = self.scorepadDB.query_level(category.category_id)
+ level_bundle = bundler.bundle_level(levels)
+ level_bundle_list.append(level_bundle)
- self.sendbundle_cb(rubric_bundle)
- self.sendbundle_cb(project_bundle)
- for i in range(len(category_bundle)):
- self.sendbundle_cb(category_bundle[i])
- level_temp = level_bundle_list[i]
- for level in level_temp:
- self.sendbundle_cb(level)
- self.currently_shared = project.project_sha
- md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
+ self.sendbundle_cb(rubric_bundle)
+ for i in range(len(category_bundle)):
+ self.sendbundle_cb(category_bundle[i])
+ level_temp = level_bundle_list[i]
+ for level in level_temp:
+ self.sendbundle_cb(level)
+ self.currently_shared = project.project_sha
+ md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Project shared")
- md.run()
- md.destroy()
+ message_format = "The project was successfully shared!")
+ md.run()
+ md.destroy()
+ self.is_project_owned = True
+ self.sendbundle_cb(project_bundle)
else:
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Cannot send other's project")
+ message_format = "You cannot share your neighbor's project.")
md.run()
md.destroy()
else:
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Cannot share. You are not connected to anybody.")
+ message_format = "No one is connected to you. You cannot share the project.")
md.run()
md.destroy()
def project_cb(self,widget,label):
+ logging.debug('Function: project_cb')
self.processpanel.destroy()
self.build_processframe(label)
+ self.build_projectlist()
- tuplelist1 = (TITLELIST, PROJECTLIST)
- tuplelist2 = (FRIENDSTITLELIST, FRIENDSPROJECTLIST)
-
- panel = self.build_projectpanel(tuplelist1, tuplelist2)
+ def build_projectlist(self):
+ panel = self.build_projectpanel()
panel.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(BACKGROUND_COLOR))
panel.set_border_width(5)
self.processtable.attach(panel,0,2,0,11)
-
actionpanel = self.build_project_actionpanel()
self.processtable.attach(actionpanel,0,2,11,12)
-
self.main_table.show_all()
- def build_projectpanel(self, tuplelist1, tuplelist2):
+ def build_projectpanel(self,):
+ logging.debug('Function: build_projectpanel')
vpanel = gtk.VPaned()
vpanel.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(BACKGROUND_COLOR))
vpanel.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.Color(BACKGROUND_COLOR))
panel = gtk.HPaned()
- mytitlelist = tuplelist1[0]
- myprojectlist = tuplelist1[1]
- friendstitlelist = tuplelist2[0]
- friendsprojectlist = tuplelist2[1]
-
tree_store1 = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)
- for project in mytitlelist:
+ for project in TITLELIST:
tree_store1.append(None, (project,None))
tree_view1 = gtk.TreeView(tree_store1)
tree_view1.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(BLUE))
@@ -591,25 +626,26 @@ class ScorePadActivity(activity.Activity):
tree_store2 = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)
- for friendsproject in friendstitlelist:
+ for friendsproject in FRIENDSTITLELIST:
tree_store2.append(None, (friendsproject,None))
tree_view2 = gtk.TreeView(tree_store2)
tree_view2.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(BLUE))
tree_view2.set_rules_hint(True)
renderer2 = gtk.CellRendererText()
- project_column2 = gtk.TreeViewColumn("Friends Projects", renderer2, text = 0)
+ project_column2 = gtk.TreeViewColumn("Friends' Projects", renderer2, text = 0)
tree_view2.append_column(project_column2)
tree_view2_scroll = gtk.ScrolledWindow()
tree_view2_scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
tree_view2_scroll.add(tree_view2)
- vpanel.set_position(300)
+ vpanel.set_position(350)
vpanel.add2(tree_view2_scroll)
sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
project_view = gtk.TextView()
+ project_view.modify_font(pango.FontDescription('Segoe 10'))
project_view.set_wrap_mode(gtk.WRAP_WORD)
project_view.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color(BLUE))
buffer = project_view.get_buffer()
@@ -617,14 +653,20 @@ class ScorePadActivity(activity.Activity):
sw.add(project_view)
sw = theme_box(sw, BUTTON_COLOR)
+ vbox = gtk.VBox(False,0)
+ pdetails_img = gtk.Image()
+ pdetails_img.set_from_file("images/projectdetails.png")
+ vbox.pack_start(pdetails_img,False,False,0)
+ vbox.add(sw)
+
panel.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(BACKGROUND_COLOR))
panel.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color(BLUE))
- panel.set_position(410)
+ panel.set_position(500)
panel.add1(vpanel)
- panel.add2(sw)
+ panel.add2(vbox)
- tuple1 = (buffer, myprojectlist,True)
- tuple2 = (buffer, friendsprojectlist,False)
+ tuple1 = (buffer, PROJECTLIST,True)
+ tuple2 = (buffer, FRIENDSPROJECTLIST,False)
tree_view1.connect("row-activated", self.viewproject_details, tuple1)
tree_view2.connect("row-activated", self.viewproject_details, tuple2)
@@ -632,45 +674,52 @@ class ScorePadActivity(activity.Activity):
return panel
def build_project_actionpanel(self):
- actionpanel = gtk.HBox(False, 20)
- leftpanel = gtk.HBox(False,5)
- rightpanel = gtk.HBox(False,5)
- edit_button = gtk.Button("Edit")
+ logging.debug('Function: build_project_actionpanel')
+ actionpanel = gtk.HBox(False,5)
+
+ edit_button = gtk.Button()
+ edit_button = image_button(edit_button,"images/edit.png")
edit_button = theme_button(edit_button)
edit_button.connect("clicked", self.editproject_cb, "Edit Project")
- share_button = gtk.Button("Share")
+
+ share_button = gtk.Button()
+ share_button = image_button(share_button,"images/share.png")
share_button = theme_button(share_button)
share_button.connect("clicked", self.share_cb)
- evaluate_button = gtk.Button("Evaluate")
+
+ evaluate_button = gtk.Button()
+ evaluate_button = image_button(evaluate_button,"images/evaluate.png")
evaluate_button = theme_button(evaluate_button)
evaluate_button.connect("clicked", self.evaluate_cb)
- grades_button = gtk.Button("See Grades")
+
+ grades_button = gtk.Button()
+ grades_button = image_button(grades_button,"images/seegrades.png")
grades_button = theme_button(grades_button)
grades_button.connect("clicked", self.seegrades_cb)
- delete_button = gtk.Button("Delete")
+
+ delete_button = gtk.Button()
+ delete_button = image_button(delete_button,"images/delete.png")
delete_button = theme_button(delete_button)
delete_button.connect("clicked", self.deleteproject_cb)
- leftpanel.add(edit_button)
- leftpanel.add(share_button)
- rightpanel.add(evaluate_button)
- rightpanel.add(grades_button)
- rightpanel.add(delete_button)
- leftpanel = theme_box(leftpanel, BORDER_COLOR)
- rightpanel = theme_box(rightpanel, BORDER_COLOR)
- actionpanel.add(leftpanel)
- actionpanel.add(rightpanel)
+ actionpanel.add(edit_button)
+ actionpanel.add(share_button)
+ actionpanel.add(evaluate_button)
+ actionpanel.add(grades_button)
+ actionpanel.add(delete_button)
actionpanel.set_border_width(5)
+ actionpanel = theme_box(actionpanel, BORDER_COLOR)
return actionpanel
def evaluate_cb(self, widget):
+ logging.debug('Function: evaluate_cb')
try:
if self.is_owned == True:
project = PROJECTLIST[self.selected_project]
else:
project = FRIENDSPROJECTLIST[self.selected_project]
-
+ #rubric = self.search_rubric(project.rubric_id)
rubric = self.scorepadDB.query_rubric(project.rubric_id)
self.processpanel.destroy()
self.build_processframe(project.title+" by "+project.author)
@@ -691,23 +740,25 @@ class ScorePadActivity(activity.Activity):
sw = theme_box(sw, BUTTON_COLOR)
sw.set_border_width(5)
lowerbox.add1(sw)
-
+
sw2 = gtk.ScrolledWindow()
sw2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.level_view = gtk.TextView()
+ self.level_view.set_border_width(10)
self.level_view.set_wrap_mode(gtk.WRAP_WORD)
self.level_view.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color(BLUE))
buffer1 = self.level_view.get_buffer()
buffer1.set_text("Rubric description")
sw2.add(self.level_view)
sw2 = theme_box(sw2, BUTTON_COLOR)
-
+
lowerbox.set_position(380)
lowerbox.add2(sw2)
tuple = [rubric, project]
box = gtk.HBox(False,0)
- submit_button = gtk.Button(" Submit ")
+ submit_button = gtk.Button()
+ submit_button = image_button(submit_button,"images/submit.png")
submit_button = theme_button(submit_button)
submit_button.connect("clicked", self.submitgrade_cb, tuple)
box.pack_start(submit_button, False, False, 0)
@@ -720,11 +771,13 @@ class ScorePadActivity(activity.Activity):
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Error. No project selected.")
+ message_format = "No project selected. Please select a project first.")
md.run()
md.destroy()
def build_upper_evalbox(self,project):
+ logging.debug('Function: build_upper_evalbox')
+ print "nasa build upper evalbox"
hpaned = gtk.HPaned()
leftbox = gtk.Table(2,1,False)
sw = gtk.ScrolledWindow()
@@ -744,11 +797,12 @@ class ScorePadActivity(activity.Activity):
hpaned.set_position(450)
leftbox = theme_box(leftbox, BORDER_COLOR)
hpaned.add1(leftbox)
-
rightbox = gtk.VBox(False,0)
+ #rubric = self.search_rubric(project.rubric_id)
rubric = self.scorepadDB.query_rubric(project.rubric_id)
rubric_label = gtk.Label("Rubric")
rubric_entry = gtk.Entry()
+ rubric_entry.modify_bg(gtk.STATE_INSENSITIVE,gtk.gdk.color_parse(BORDER_COLOR))
rubric_entry.set_text(rubric.title)
rbox = gtk.HBox()
rbox.add(rubric_label)
@@ -756,6 +810,7 @@ class ScorePadActivity(activity.Activity):
rightbox.add(rbox)
date_label = gtk.Label("Date")
date_entry = gtk.Entry()
+ date_entry.modify_bg(gtk.STATE_INSENSITIVE,gtk.gdk.color_parse(BORDER_COLOR))
date_entry.set_text(project.publish_date)
dbox = gtk.HBox()
dbox.add(date_label)
@@ -763,12 +818,12 @@ class ScorePadActivity(activity.Activity):
rightbox.add(dbox)
rightbox = theme_box(rightbox, BORDER_COLOR)
hpaned.add2(rightbox)
-
hpaned.set_border_width(5)
-
+ print "tapos ng build upper evalbox"
return hpaned
def build_lower_evalbox(self, rubric):
+ logging.debug('Function: build_lower_evalbox')
rubric_id = rubric.rubric_id
category = self.scorepadDB.queryall_category(rubric_id)
row = len(category)+1
@@ -776,9 +831,7 @@ class ScorePadActivity(activity.Activity):
column = len(self.scorepadDB.query_level(category_id))+1
column_names = self.scorepadDB.query_level(category_id)
-
levels = []
-
for i in range(column-1):
level = []
for j in range(row-1):
@@ -787,40 +840,56 @@ class ScorePadActivity(activity.Activity):
level.append(level_temp[i].description)
levels.append(level)
- view = self.build_category_column(rubric, levels, column_names)
+ view = self.build_category_column(rubric, levels, column_names, column)
return view
-
- def build_category_column(self, rubric, levels,column_names):
- self.tree_store = gtk.TreeStore( gobject.TYPE_STRING,gobject.TYPE_BOOLEAN,gobject.TYPE_BOOLEAN,
- gobject.TYPE_BOOLEAN,gobject.TYPE_BOOLEAN)
- column = [None, None, None, None]
+ def build_category_column(self, rubric, levels,column_names, column_count):
+ logging.debug('Function: build_category_column')
+ self.tree_store = self.create_tree_store2(column_count)
+
+ column = []
for i in range(len(levels)):
- column[i] = levels[i]
-
+ column.append(levels[i])
+
rubric_id = rubric.rubric_id
- category = self.scorepadDB.queryall_category(rubric_id)
+ category = self.scorepadDB.queryall_category(rubric_id)
for i in range(len(category)):
- self.tree_store.append( None, (category[i].name,
- None, None,
- None, None) )
-
+ if column_count-1 == 2:
+ self.tree_store.append( None, (category[i].name,None, None))
+ if column_count-1 == 3:
+ self.tree_store.append( None, (category[i].name,None, None,None))
+ if column_count-1 == 4:
+ self.tree_store.append( None, (category[i].name,None, None,None,None))
+ if column_count-1 == 5:
+ self.tree_store.append( None, (category[i].name,None, None,None,None,None))
+ if column_count-1 == 6:
+ self.tree_store.append( None, (category[i].name,None, None,None,None,None,None))
+ if column_count-1 == 7:
+ self.tree_store.append( None, (category[i].name,None, None,None,None,None,None,None))
+ if column_count-1 == 8:
+ self.tree_store.append( None, (category[i].name,None, None,None,None,None,None,None,None))
+ if column_count-1 == 9:
+ self.tree_store.append( None, (category[i].name,None, None,None,None,None,None,None,None,None))
+
view = gtk.TreeView(self.tree_store)
view.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(BLUE))
view.set_rules_hint(True)
renderer = gtk.CellRendererText()
+ renderer.props.wrap_width = 250
+ renderer.props.wrap_mode = pango.WRAP_WORD
+
column0 = gtk.TreeViewColumn("Category", renderer, text=0)
- column0.set_resizable(True)
+ #column0.set_resizable(True)
view.append_column(column0)
view.connect("row-activated", self.viewlevel_details, rubric_id, category)
-
+
renderlist = []
self.number_of_level = len(levels)
for i in range(len(levels)):
render = gtk.CellRendererToggle()
- render.set_property('indicator-size', 20)
+ render.set_property('indicator-size', 40)
render.set_property('activatable', True)
render.connect( 'toggled', self.col1_toggled_cb, i+1 )
renderlist.append(render)
@@ -828,8 +897,8 @@ class ScorePadActivity(activity.Activity):
column.add_attribute( renderlist[i], "active", i+1)
column.set_resizable(True)
view.append_column(column)
-
return view
+
def col1_toggled_cb( self, cell, path, col ):
@@ -841,6 +910,7 @@ class ScorePadActivity(activity.Activity):
return
def viewlevel_details(self, widget, row, col, rubric_id, categories):
+ logging.debug('Function: viewlevel_details')
selected_row = row[0]
category_id = categories[selected_row].category_id
@@ -854,47 +924,15 @@ class ScorePadActivity(activity.Activity):
details = details + level.name + "\n" + \
" - " + level.description + "\n\n"
buffer.set_text(details)
-
-
- def lessonplan_cb(self,widget,data= None):
- self.processpanel.destroy()
- self.build_processframe("Lesson Plan")
-
- update_lesson = gtk.Button(" Update ")
- update_lesson = theme_button(update_lesson)
-
- hbox = gtk.HBox(False,0)
- box = gtk.HBox(False,0)
- box.pack_start(update_lesson, False, False, 0)
- box = theme_box(box,BORDER_COLOR)
-
- lesson_field = gtk.TextView()
- lesson_field.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color(BLUE))
- lesson_field.set_wrap_mode(gtk.WRAP_WORD)
- lesson_field.set_border_width(5)
- lesson_buffer = lesson_field.get_buffer()
- self.load_lessonplan(lesson_buffer)
-
- lesson_field.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(BUTTON_COLOR))
- hbox.add(lesson_field)
- hbox.set_border_width(5)
- self.processtable.attach(hbox,0,2,0,11)
- self.processtable.attach(box,0,2,11,12)
- self.main_table.show_all()
-
- def load_lessonplan(self, lesson_buffer):
- fp = open(lessonplan_path, 'r')
- lines = fp.readlines()
-
- iter = lesson_buffer.get_iter_at_offset(0)
-
- for line in lines:
- lesson_buffer.insert(iter, line)
def rubrics_cb(self,widget,label):
+ logging.debug('Function: rubrics_cb')
self.processpanel.destroy()
self.build_processframe(label)
+ self.build_rubric_box()
+ def build_rubric_box(self):
+ logging.debug('Function: build_rubric_box')
hpaned = gtk.HPaned()
hpaned.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(BACKGROUND_COLOR))
hpaned.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.Color(BACKGROUND_COLOR))
@@ -914,6 +952,7 @@ class ScorePadActivity(activity.Activity):
self.main_table.show_all()
def create_rubriclist(self, rubrics, title, label):
+ logging.debug('Function: create_rubriclist')
rubricsbox = gtk.VBox(False,0)
buttons = []
@@ -930,7 +969,7 @@ class ScorePadActivity(activity.Activity):
if str(title[i]) == str(r.title):
rubric = r
button = gtk.Button()
- box = xpm_label_box( "images/green_button2.png", title[i])
+ box = xpm_label_box( "images/green_button2.png", title[i] + " - " + str(r.author))
button.add(box)
button = theme_button(button)
button.connect("clicked", self.viewrubric_cb, rubric)
@@ -941,8 +980,9 @@ class ScorePadActivity(activity.Activity):
return rubricsbox
def viewrubric_cb(self, widget, rubric):
+ logging.debug('Function: viewrubric_cb')
self.processpanel.destroy()
- self.build_processframe("Rubric")
+ self.build_processframe(rubric.title + " - " + rubric.author)
box = self.build_rubriclist(rubric)
sw = gtk.ScrolledWindow()
@@ -950,11 +990,21 @@ class ScorePadActivity(activity.Activity):
sw.add_with_viewport(box)
sw.set_border_width(5)
sw = theme_box(sw, BUTTON_COLOR)
- self.processtable.attach(sw,0,2,0,12)
- self.main_table.show_all()
+ self.processtable.attach(sw,0,2,0,11)
+ hbox = gtk.HBox(False,0)
+ remove_button = gtk.Button()
+ remove_button = image_button(remove_button,"images/delete.png")
+ remove_button = theme_button(remove_button)
+ remove_button.connect("clicked", self.remove_rubric_cb, rubric.rubric_id)
+ hbox.pack_start(remove_button,False,False,0)
+ hbox = theme_box(hbox, BORDER_COLOR)
+
+ self.processtable.attach(hbox,0,2,11,12)
+ self.main_table.show_all()
def build_rubriclist(self, rubric):
+ logging.debug('Function: build_rubriclist')
rubric_id = rubric.rubric_id
category = self.scorepadDB.queryall_category(rubric_id)
row = len(category)+1
@@ -973,92 +1023,202 @@ class ScorePadActivity(activity.Activity):
level.append(level_temp[i].description)
levels.append(level)
- view = self.build_categorylist(rubric, levels, column_names)
+ view = self.build_categorylist(rubric, levels, column_names, column)
return view
- def build_categorylist(self, rubric, levels,column_names):
- tree_store = gtk.TreeStore( gobject.TYPE_STRING,gobject.TYPE_STRING,gobject.TYPE_STRING,
- gobject.TYPE_STRING,gobject.TYPE_STRING)
-
- column = [None, None, None, None]
+ def build_categorylist(self, rubric, levels,column_names,column_count):
+ logging.debug('Function: build_categorylist')
+ tree_store = self.create_tree_store(column_count)
+ column = []
for i in range(len(levels)):
- column[i] = levels[i]
+ column.append(levels[i])
rubric_id = rubric.rubric_id
- category = self.scorepadDB.queryall_category(rubric_id)
-
+ category = self.scorepadDB.queryall_category(rubric_id)
+ tuple = []
for i in range(len(category)):
- tree_store.append( None, (category[i].name,
- column[0][i], column[1][i],
- column[2][i],column[3][i]) )
+ tuple = []
+ cat_str = category[i].name + " (" + str(category[i].percentage) + ")"
+ logging.debug(cat_str)
+ tuple.append(cat_str)
+
+ for j in range(column_count-1):
+ tuple.append(column[j][i])
+
+ tree_store.append(None, tuple)
view = gtk.TreeView(tree_store)
view.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(BLUE))
view.set_rules_hint(True)
renderer = gtk.CellRendererText()
+ renderer.props.wrap_width = 150
+ renderer.props.wrap_mode = pango.WRAP_WORD
column0 = gtk.TreeViewColumn("Category", renderer, text=0)
- column0.set_resizable(True)
view.append_column(column0)
+
for i in range(len(levels)):
render = gtk.CellRendererText()
- column = gtk.TreeViewColumn(column_names[i].name, render, text=i+1)
- column.set_resizable(True)
+ render.props.wrap_width = 150
+ render.props.wrap_mode = pango.WRAP_WORD
+ column = gtk.TreeViewColumn(column_names[i].name + " (" +str(column_names[i].points) + ")", render, text=i+1)
view.append_column(column)
return view
+
+ def create_tree_store(self, c):
+
+ if c == 2:
+ p = gtk.TreeStore(str,str)
+ elif c == 3:
+ p = gtk.TreeStore(str,str,str)
+ elif c == 4:
+ p = gtk.TreeStore(str,str,str,str)
+ elif c == 5:
+ p = gtk.TreeStore(str,str,str,str,str)
+ elif c == 6:
+ p = gtk.TreeStore(str,str,str,str,str,str)
+ elif c == 7:
+ p = gtk.TreeStore(str,str,str,str,str,str,str)
+ elif c == 8:
+ p = gtk.TreeStore(str,str,str,str,str,str,str,str)
+ elif c == 9:
+ p = gtk.TreeStore(str,str,str,str,str,str,str,str,str)
+
+ return p
+
+ def create_tree_store2(self, c):
+ b = gobject.TYPE_BOOLEAN
+
+ if c == 2:
+ p = gtk.TreeStore(str,b)
+ elif c == 3:
+ p = gtk.TreeStore(str,b,b)
+ elif c == 4:
+ p = gtk.TreeStore(str,b,b,b)
+ elif c == 5:
+ p = gtk.TreeStore(str,b,b,b,b)
+ elif c == 6:
+ p = gtk.TreeStore(str,b,b,b,b,b)
+ elif c == 7:
+ p = gtk.TreeStore(str,b,b,b,b,b,b)
+ elif c == 8:
+ p = gtk.TreeStore(str,b,b,b,b,b,b,b)
+ elif c == 9:
+ p = gtk.TreeStore(str,b,b,b,b,b,b,b,b)
+ return p
+
+ def remove_rubric_cb(self, widget, rubric_id):
+
+ if self.scorepadDB.check_relatedproject(rubric_id):
+ md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
+ flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
+ type = gtk.MESSAGE_INFO,\
+ message_format = "You cannot delete this rubric. This rubric is still used by other projects.")
+ md.run()
+ md.destroy()
+ else:
+
+ warning = gtk.MessageDialog(parent = None,buttons = gtk.BUTTONS_YES_NO, \
+ flags =gtk.DIALOG_DESTROY_WITH_PARENT,\
+ type = gtk.MESSAGE_WARNING,\
+ message_format = "Are you sure you want to delete this rubric?")
+ result = warning.run()
+
+ if result == gtk.RESPONSE_YES:
+ self.scorepadDB.delete_rubric(rubric_id)
+
+ for i in range(len(RUBRICLIST)):
+ temp = RUBRICLIST[i]
+ if temp.rubric_id == rubric_id:
+ RUBRICLIST.remove(RUBRICLIST[i])
+ RUBRICTITLE.remove(RUBRICTITLE[i])
+ for i in range(len(OTHER_RUBRICLIST)):
+ temp = OTHER_RUBRICLIST[i]
+ if temp.rubric_id == rubric_id:
+ OTHER_RUBRICLIST.remove(OTHER_RUBRICLIST[i])
+ OTHER_RUBRICTITLE.remove(OTHER_RUBRICTITLE[i])
+
+ self.processpanel.destroy()
+ self.build_processframe("Rubric List")
+ self.build_rubric_box()
+ warning.destroy()
+ elif result == gtk.RESPONSE_NO:
+ warning.destroy()
+
def submitgrade_cb(self, widget, tuple):
+ logging.debug('Function: submitgrade_cb')
rubric = tuple[0]
project = tuple[1]
project_id = project.project_id
rubric_id = rubric.rubric_id
categories = self.scorepadDB.queryall_category(rubric_id)
- self.initialize_score(project, rubric, categories)
-
category_id = categories[0].category_id
level_list = self.scorepadDB.query_level(category_id)
- level_name = ""
- for i in range(len(categories)):
- category_id = categories[i].category_id
- for j in range(len(level_list)+1):
- if (self.tree_store[i][j] == True):
- level_name = level_list[j-1].name
- level_id = self.scorepadDB.querylevel_id(category_id, level_name)
- score_id = self.scorepadDB.increment_scorecount(project_id, rubric_id, category_id, level_id)
- score = self.scorepadDB.query_score2(project_id, rubric_id, category_id, level_id)
- bundler = Bundler()
- score_bundle = bundler.bundle_score(score)
+
+ if self.check_columns(categories, level_list):
+ self.initialize_score(project, rubric, categories)
+
+ level_name = ""
+ for i in range(len(categories)):
+ category_id = categories[i].category_id
+ for j in range(len(level_list)+1):
+ if (self.tree_store[i][j] == True):
+ level_name = level_list[j-1].name
+ level_id = self.scorepadDB.querylevel_id(category_id, level_name)
+ score_id = self.scorepadDB.increment_scorecount(project_id, rubric_id, category_id, level_id)
+ score = self.scorepadDB.query_score2(project_id, rubric_id, category_id, level_id)
+ bundler = Bundler()
+ score_bundle = bundler.bundle_score(score)
+ logging.debug("Function: submitgrade_cb --> scorebundle : "+score_bundle)
+ logging.debug('Function: submitgrade_cb --> about to send bundle')
+ is_send = False
+ if self.is_shared and project.is_shared:
+ self.sendbundle_cb(score_bundle)
+ logging.debug('Function: submitgrade_cb --> bundle sent')
+ is_send = True
+ if is_send:
+ md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
+ flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
+ type = gtk.MESSAGE_INFO,\
+ message_format = "You have successfully evaluated the project!")
+ md.run()
+ md.destroy()
+
+ self.processpanel.destroy()
+ self.build_processframe("Projects")
+
+ panel = self.build_projectpanel()
+ panel.set_border_width(5)
+ self.processtable.attach(panel,0,2,0,11)
- is_send = False
- if self.is_shared:
- self.sendbundle_cb(score_bundle)
- is_send = True
- if is_send:
+ actionpanel = self.build_project_actionpanel()
+ self.processtable.attach(actionpanel,0,2,11,12)
+
+ self.main_table.show_all()
+ else:
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
- flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
- type = gtk.MESSAGE_INFO,\
- message_format = "Evaluation sent!")
+ flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
+ type = gtk.MESSAGE_INFO,\
+ message_format = "Please complete the form before proceeding.")
md.run()
md.destroy()
-
- self.processpanel.destroy()
- self.build_processframe("Projects")
-
- tuplelist1 = (TITLELIST, PROJECTLIST)
- tuplelist2 = (FRIENDSTITLELIST, FRIENDSPROJECTLIST)
-
- panel = self.build_projectpanel(tuplelist1, tuplelist2)
- panel.set_border_width(5)
- self.processtable.attach(panel,0,2,0,11)
- actionpanel = self.build_project_actionpanel()
- self.processtable.attach(actionpanel,0,2,11,12)
-
- self.main_table.show_all()
+ def check_columns(self, categories, level_list):
+ counter = 0
+ for i in range(len(categories)):
+ for j in range(len(level_list)+1):
+ if (self.tree_store[i][j] == True):
+ counter = counter +1
+ if (counter == len(categories)):
+ return True
+ else:
+ return False
def initialize_score(self, project, rubric, categories):
+ logging.debug('Function: initialize_score')
project_id = project.project_id
rubric_id = rubric.rubric_id
@@ -1079,65 +1239,89 @@ class ScorePadActivity(activity.Activity):
self.scorepadDB.insert_score(score)
def seegrades_cb(self, widget, data =None):
- try:
- if self.is_owned == True:
+ logging.debug('Function: seegrades_cb')
+
+ if self.is_owned == True:
+ logging.debug('Function: seegrades_cb; is_owned=True')
+ try:
project = PROJECTLIST[self.selected_project]
+ logging.debug("Function: seegrades_cb; project: "+ str(self.selected_project))
rubric = self.scorepadDB.query_rubric(project.rubric_id)
+ logging.debug('Function: seegrades_cb; rubric')
self.processpanel.destroy()
self.build_processframe(project.title+" by "+project.author)
-
+ logging.debug('Function: seegrades_cb; build_processframe')
upperbox = self.build_upper_evalbox(project)
+ logging.debug('Function: seegrades_cb; build_upper_evalbox')
upperbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(BACKGROUND_COLOR))
-
self.processtable.attach(upperbox,0,2,0,2)
self.build_lower_gradebox(project, rubric)
- else:
+ logging.debug('Function: seegrades_cb; build_lower_gradebox')
+ except:
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
type = gtk.MESSAGE_INFO,\
- message_format = "Sorry. You cannot display your friend's grade")
+ message_format = "No project selected.")
md.run()
- except:
+ md.destroy()
+ else:
md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
- flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
- type = gtk.MESSAGE_INFO,\
- message_format = "Error. No project selected.")
+ flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
+ type = gtk.MESSAGE_INFO,\
+ message_format = "Sorry. You cannot display your neighbor's grade.")
md.run()
md.destroy()
- md.destroy()
def build_lower_gradebox(self, project, rubric):
+ logging.debug('Function: build_lower_gradebox')
+
project_id = project.project_id
rubric_id = rubric.rubric_id
+
categories = self.scorepadDB.queryall_category(rubric_id)
category_id = categories[0].category_id
+ logging.debug('Function: build_lower_gradebox --> queryall_category finished')
navpanel = gtk.HBox(False)
- left_arrow = gtk.Button("Left")
+
+ left_arrow = gtk.Button()
+ left_arrow = image_button(left_arrow, "images/left.png")
left_arrow = theme_button(left_arrow)
- right_arrow = gtk.Button("Right")
+ right_arrow = gtk.Button()
+ right_arrow = image_button(right_arrow, "images/right.png")
right_arrow = theme_button(right_arrow)
navpanel.add(left_arrow)
navpanel.add(right_arrow)
navpanel = theme_box(navpanel, BORDER_COLOR)
self.processtable.attach(navpanel,1,2,11,12)
+ try:
+ if rubric.enable_points == 1:
+ gradepanel = gtk.HBox(False)
+ grade_label = gtk.Label("Final Grade")
+ grade = gtk.Label(str("%0.2f%%" % ( (self.compute_score(project, rubric, categories)*100))))
+ gradepanel.add(grade_label)
+ gradepanel.add(grade)
+ gradepanel = theme_box(gradepanel, BORDER_COLOR)
+ self.processtable.attach(gradepanel,0,1,11,12)
+ except:
+ logging.debug("Points and Percentage not set")
+
category_list = ""
for category in categories:
- category_list = category_list + str(category.name) +" "
+ category_list = category_list + str(category.name.replace(' ', '~&')) + " "
level_list = ""
levels = self.scorepadDB.query_level(category_id)
for level in levels:
- level_list = level_list + str(level.name) + " "
-
+ level_list = level_list + str(level.name.replace(' ', '~&')) + " "
self.category_length = len(categories)
- self.number_of_click = 3
- if self.category_length == (1 or 2 or 3):
+ self.number_of_click = 3
+ if ((self.category_length == 1) or (self.category_length == 2) or (self.category_length ==3)):
barchart = self.build_barchart(category_list, categories, level_list, project_id, rubric_id)
else :
partial_cat_list = ""
- partial_cat_list = str(categories[0].name) + " " + str(categories[1].name) + " " + str(categories[2].name)
+ partial_cat_list = str(categories[0].name) + "~& " + str(categories[1].name) + "~& " + str(categories[2].name)
partial_cat = []
partial_cat.append(categories[0])
partial_cat.append(categories[1])
@@ -1154,6 +1338,38 @@ class ScorePadActivity(activity.Activity):
navparam = [categories, level_list, project_id, rubric_id]
right_arrow.connect("clicked", self.navigate_cb, "0", navparam)
left_arrow.connect("clicked", self.navigate_cb, "1", navparam)
+
+ def compute_score(self, project, rubric, categories):
+ project_id = project.project_id
+ category_id = categories[0].category_id
+ rubric_id = rubric.rubric_id
+
+ list = self.scorepadDB.query_level(category_id)
+
+ max = 0
+ for item in list:
+ if max < item.points:
+ max = item.points
+
+ raw_score = 0
+ denom_score = 0
+ for category in categories:
+ list = self.scorepadDB.query_level(category.category_id)
+ per_cat_total = 0
+ per_cat_total2 = 0
+ for item in list:
+ count = self.scorepadDB.query_score(project_id, rubric_id, category.category_id, item.level_id)
+ per_level_count = count * item.points
+ per_cat_total = per_cat_total + per_level_count
+ per_level_count2 = count * max
+ per_cat_total2 = per_cat_total2 + per_level_count2
+ temp = per_cat_total * (category.percentage * 0.01)
+ temp2 = per_cat_total2 * (category.percentage * 0.01)
+ raw_score = raw_score + temp
+ denom_score = denom_score + temp2
+
+ final_score = raw_score/denom_score
+ return final_score
def navigate_cb(self, widget,position, navparam):
categories = navparam[0] #b
@@ -1172,7 +1388,7 @@ class ScorePadActivity(activity.Activity):
if self.number_of_click <= self.category_length and self.number_of_click != 0:
a = ""
- a = str(categories[self.number_of_click-3].name) + " " + str(categories[self.number_of_click-2].name) + " " \
+ a = str(categories[self.number_of_click-3].name) + "~& " + str(categories[self.number_of_click-2].name) + "~& " \
+ str(categories[self.number_of_click-1].name)
b = []
b.append(categories[self.number_of_click-3])
@@ -1196,7 +1412,7 @@ class ScorePadActivity(activity.Activity):
self.main_table.show_all()
if ((self.number_of_click - self.category_length) == 1):
a = ""
- a = str(categories[self.category_length-2].name) + " " + str(categories[self.number_of_click-1].name)
+ a = str(categories[self.category_length-2].name) + "~& " + str(categories[self.category_length-1].name)
b = []
b.append(categories[self.category_length-2])
b.append(categories[self.category_length-1])
@@ -1206,7 +1422,7 @@ class ScorePadActivity(activity.Activity):
self.processtable.attach(self.chartbox, 0,2,2,11)
self.main_table.show_all()
else:
- print "Out of bounds"
+ logging.debug("Out of bounds")
def build_barchart(self,category_list, categories, level_list, project_id, rubric_id):
barchart = multi_bar_chart.MultiBarChart()
@@ -1215,7 +1431,7 @@ class ScorePadActivity(activity.Activity):
i = 0
for categoryname in category_list.split():
- categoryname_label = categoryname.capitalize()
+ categoryname_label = categoryname.replace('~&',' ').capitalize()
multibar = multi_bar_chart.BarGroup(categoryname, categoryname_label)
category_id = categories[i].category_id
levels_temp = self.scorepadDB.query_level(category_id)
@@ -1224,7 +1440,7 @@ class ScorePadActivity(activity.Activity):
count = 0
level_id = levels_temp[j].level_id
count = self.scorepadDB.query_score(project_id, rubric_id, category_id, level_id)
- levelname_label = levelname.capitalize()
+ levelname_label = levelname.replace('~&',' ').capitalize()
sub_bar = multi_bar_chart.Bar(levelname, count, levelname_label)
multibar.add_bar(sub_bar)
print "count : " + str(count)
@@ -1232,14 +1448,26 @@ class ScorePadActivity(activity.Activity):
barchart.add_bar(multibar)
i = i + 1
return barchart
+
+ def search_rubric(self, rubric_id):
+ for element in RUBRICLIST:
+ if element.rubric_id == rubric_id:
+ return element
+ for element in OTHER_RUBRICLIST:
+ if element.rubric_id == rubric_id:
+ return element
+ return None
+
+# def destroy(self, widget, data=None):
+# gtk.main_quit()
+
+# def main(self):
+# gtk.main()
- def tutorial_cb(self, widget, data=None):
- md = gtk.MessageDialog(parent = None, buttons = gtk.BUTTONS_OK, \
- flags = gtk.DIALOG_DESTROY_WITH_PARENT, \
- type = gtk.MESSAGE_INFO,\
- message_format = "Under construction.")
- md.run()
- md.destroy()
+
+#if __name__ == "__main__":
+# scorepad = ScorePadActivity()
+# scorepad.main()
def update_status(self, nick, text):
text = text.split("|")
@@ -1247,13 +1475,22 @@ class ScorePadActivity(activity.Activity):
if model_name == "Project":
self._alert("Project was shared by", nick)
- if self.is_exists:
- rubric_id = self.rubric_exists
- else:
- rubric_id = self.scorepadDB.query_maxrubric()
+ self.is_project_owned = False
+
+ if self.rubric_received:
+ if self.is_exists:
+ rubric_id = self.rubric_exists
+ logging.debug("rubric_id if not predef, exists in the list: " +str(rubric_id))
+ else:
+ rubric_id = self.scorepadDB.query_maxrubric()
+ logging.debug("rubric_id if not predef, does not exists in the list: " +str(rubric_id))
+ else:
+ rubric_id = text[9] #predefined kasi to kaya same ng rubric_id
+ logging.debug("rubric_id if predefined : " + str(rubric_id))
+
project = Project(None, text[2], text[3], text[4], text[5],text[6],\
- 0, 1, rubric_id, text[10], text[11])
+ 0, 1, rubric_id, text[10], text[11], text[12])
if self.scorepadDB.project_exists(project.project_sha, project.author):
print "project exists"
@@ -1266,12 +1503,10 @@ class ScorePadActivity(activity.Activity):
FRIENDSPROJECTLIST.append(project)
FRIENDSTITLELIST.append(project.title)
self.currently_shared = project.project_sha
- tuplelist1 = (TITLELIST, PROJECTLIST)
- tuplelist2 = (FRIENDSTITLELIST, FRIENDSPROJECTLIST)
self.processpanel.destroy()
self.build_processframe("Projects")
- panel = self.build_projectpanel(tuplelist1, tuplelist2)
+ panel = self.build_projectpanel()
panel.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(BACKGROUND_COLOR))
panel.set_border_width(5)
self.processtable.attach(panel,0,2,0,11)
@@ -1282,44 +1517,56 @@ class ScorePadActivity(activity.Activity):
self.main_table.show_all()
if model_name == "Rubric":
- rubric = Rubric(None, text[2], text[3], text[4], 0, text[6], text[7])
+ logging.debug("NASA RUBRIC KA!!")
+ self.rubric_received = True
+ rubric = Rubric(None, text[2], text[3], text[4], 0, text[6], text[7], text[8])
self.rubric_exists = self.scorepadDB.rubric_exists(rubric.rubric_sha, rubric.description)
+ logging.debug("ito ang rubric_sha : "+str(rubric.rubric_sha))
if self.rubric_exists == None:
self.scorepadDB.insert_rubric(rubric)
rubric_id = self.scorepadDB.query_maxrubric()
rubric = self.scorepadDB.query_rubric(rubric_id)
+ logging.debug("ito ang sa loob ng if rubric_sha : "+str(rubric.rubric_sha))
OTHER_RUBRICLIST.append(rubric)
OTHER_RUBRICTITLE.append(rubric.title)
self.is_exists = False
+ logging.debug("Di nag-iexists yung rubric")
else:
self.is_exists = True
+ logging.debug("Nag-iexists yung rubric")
if model_name == "Category":
if self.is_exists == False:
rubric_id = self.scorepadDB.query_maxrubric()
- category = Category(None, text[2], rubric_id, text[4])
+ category = Category(None, text[2], rubric_id, text[4], text[5])
self.scorepadDB.insert_category(category)
if model_name == "Level":
if self.is_exists == False:
rubric_id = self.scorepadDB.query_maxrubric()
category_id = self.scorepadDB.query_maxcategory()
- level = Level(None, text[2], text[3], category_id, rubric_id, text[6])
+ level = Level(None, text[2], text[3], category_id, rubric_id, text[6], text[7])
self.scorepadDB.insert_level(level)
if model_name == "Score":
- self._alert("Score received from", nick)
project_sha = text[6]
rubric_sha = text[7]
category_sha = text[8]
level_sha = text[9]
- score_id = self.scorepadDB.query_score_id(project_sha, rubric_sha, category_sha, level_sha)
- attr = self.scorepadDB.query_score_attr(score_id)
- self.scorepadDB.increment_scorecount(attr[0], attr[1], attr[2], attr[3])
+
+ if self.scorepadDB.is_ownedproject(project_sha):
+ self._alert("Score received from", nick)
+ logging.debug('project_sha '+str(project_sha)+'rubric_sha '+str(rubric_sha)+'category_sha '+str(category_sha)\
+ +'level_sha '+str(level_sha))
+ score_id = self.scorepadDB.query_score_id(project_sha, rubric_sha, category_sha, level_sha)
+ attr = self.scorepadDB.query_score_attr(score_id)
+ logging.debug("Function: update_status; query_score_attr; score_id :"+str(score_id))
+ self.scorepadDB.increment_scorecount(attr[0], attr[1], attr[2], attr[3])
+ logging.debug('Function: update_status; increment_scorecount')
def _alert(self, title, text=None):
- alert = NotifyAlert(timeout=5)
+ alert = NotifyAlert(timeout=3)
alert.props.title = title
alert.props.msg = text
self.add_alert(alert)
@@ -1440,9 +1687,3 @@ class TextChannelWrapper(object):
return pservice.get_buddy_by_telepathy_handle(
tp_name, tp_path, handle)
-
- def destroy(self, widget, data=None):
- gtk.main_quit()
-
- def main(self):
- gtk.main()
diff --git a/Template.py b/Template.py
index c469c24..68ef7e6 100644
--- a/Template.py
+++ b/Template.py
@@ -1,97 +1,99 @@
-from Models import *
+from Models import Rubric
+from Models import Project
+from Models import Category
+from Models import Level
import datetime
class Template():
- def __init__(self, nickname = ""):
+ def __init__(self, nickname = "", scorepadDB =None):
+ self.scorepadDB = scorepadDB
self.owner_nick = nickname
- self.scorepadDB = ScorePadDB(self.owner_nick)
def save_template(self):
- today = datetime.date.today()
+ today = datetime.datetime.now()
- rubric = Rubric(None, "Music", "Sample", "Music Rubric",1,self.owner_nick,"")
+ rubric = Rubric(None, "Music", "Sample", "Music Rubric",1,"sample","",1)
self.scorepadDB.insert_rubric(rubric)
rubric_id = self.scorepadDB.query_maxrubric()
- category = Category(None, "Song", rubric_id,"")
- level0 = Level(None, "Exemplary","Song relates to genre", None, rubric_id,"")
- level1 = Level(None, "Proficient","Song loosely relates to genre", None, rubric_id,"")
- level2 = Level(None, "Developing","Song doesn't relate to genre", None, rubric_id,"")
- level3 = Level(None, "Unsatisfactory","No song chosen", None, rubric_id,"")
+ category = Category(None, "Song", rubric_id,"",25)
+ level0 = Level(None, "Exemplary","Song relates to genre", None, rubric_id,"",4)
+ level1 = Level(None, "Proficient","Song loosely relates to genre", None, rubric_id,"",3)
+ level2 = Level(None, "Developing","Song doesn't relate to genre", None, rubric_id,"",2)
+ level3 = Level(None, "Unsatisfactory","No song chosen", None, rubric_id,"",1)
levels = [level0, level1, level2, level3]
self.scorepadDB.insert_criteria(category, levels)
- category = Category(None, "Presentation", rubric_id,"")
- level0 = Level(None, "Exemplary","Song is explained.Tied well to genre.", None, rubric_id,"")
+ category = Category(None, "Presentation", rubric_id,"",25)
+ level0 = Level(None, "Exemplary","Song is explained.Tied well to genre.", None, rubric_id,"",4)
level1 = Level(None, "Proficient","Song explained but not tied well to \
- genre/assignment.", None, rubric_id,"")
- level2 = Level(None, "Developing","Vague explanation given.", None, rubric_id,"")
- level3 = Level(None, "Unsatisfactory","No historical context given.", None, rubric_id,"")
+ genre/assignment.", None, rubric_id,"",3)
+ level2 = Level(None, "Developing","Vague explanation given.", None, rubric_id,"",2)
+ level3 = Level(None, "Unsatisfactory","No historical context given.", None, rubric_id,"",1)
levels = []
levels = [level0, level1, level2, level3]
self.scorepadDB.insert_criteria(category, levels)
- category = Category(None, "Performance", rubric_id,"")
- level0 = Level(None, "Exemplary","Taken seriously. Performed well", None, rubric_id,"")
- level1 = Level(None, "Proficient","Performed well with some mistakes", None, rubric_id,"")
- level2 = Level(None, "Developing","Not taken very seriously", None, rubric_id,"")
- level3 = Level(None, "Unsatisfactory","Weak performance", None, rubric_id,"")
+ category = Category(None, "Performance", rubric_id,"",25)
+ level0 = Level(None, "Exemplary","Taken seriously. Performed well", None, rubric_id,"",4)
+ level1 = Level(None, "Proficient","Performed well with some mistakes", None, rubric_id,"",3)
+ level2 = Level(None, "Developing","Not taken very seriously", None, rubric_id,"",2)
+ level3 = Level(None, "Unsatisfactory","Weak performance", None, rubric_id,"",1)
levels = []
levels = [level0, level1, level2, level3]
self.scorepadDB.insert_criteria(category, levels)
- category = Category(None, "Effort", rubric_id,"")
- level0 = Level(None, "Exemplary","Went above and beyond for effort", None, rubric_id,"")
- level1 = Level(None, "Proficient","Put significant effort", None, rubric_id,"")
- level2 = Level(None, "Developing","Effort put is only asked in class", None, rubric_id,"")
- level3 = Level(None, "Unsatisfactory","No effort put in", None, rubric_id,"")
+ category = Category(None, "Effort", rubric_id,"",25)
+ level0 = Level(None, "Exemplary","Went above and beyond for effort", None, rubric_id,"",4)
+ level1 = Level(None, "Proficient","Put significant effort", None, rubric_id,"",3)
+ level2 = Level(None, "Developing","Effort put is only asked in class", None, rubric_id,"",2)
+ level3 = Level(None, "Unsatisfactory","No effort put in", None, rubric_id,"",1)
levels = []
levels = [level0, level1, level2, level3]
self.scorepadDB.insert_criteria(category, levels)
project = Project(None, "My song", "Sample", "Great Song","Music I",\
- str(today), 1, 1,rubric_id,self.owner_nick,"")
+ str(unicode(today.replace(microsecond=0))), 1, 1,rubric_id,"sample","",0)
print project.subject
self.scorepadDB.insert_project(project)
- rubric = Rubric(None, "Art", "Sample", "Art Rubric",1,self.owner_nick,"")
+ rubric = Rubric(None, "Art", "Sample", "Art Rubric",1,"sample","",1)
self.scorepadDB.insert_rubric(rubric)
rubric_id = self.scorepadDB.query_maxrubric()
- category = Category(None, "Creativity", rubric_id,"")
- level0 = Level(None, "Exemplary","Generating many ideas", None, rubric_id,"")
- level1 = Level(None, "Proficient","Based his or her work on someone else's idea", None, rubric_id,"")
- level2 = Level(None, "Developing","Lacked originality", None, rubric_id,"")
- level3 = Level(None, "Unsatisfactory","No evidence of trying anything unusual", None, rubric_id,"")
+ category = Category(None, "Creativity", rubric_id,"",33.3333)
+ level0 = Level(None, "Exemplary","Generating many ideas", None, rubric_id,"",5)
+ level1 = Level(None, "Proficient","Based his or her work on someone else's idea", None, rubric_id,"",4)
+ level2 = Level(None, "Developing","Lacked originality", None, rubric_id,"",3)
+ level3 = Level(None, "Unsatisfactory","No evidence of trying anything unusual", None, rubric_id,"",2)
levels = []
levels = [level0, level1, level2, level3]
self.scorepadDB.insert_criteria(category, levels)
- category = Category(None, "Effort", rubric_id,"")
- level0 = Level(None, "Exemplary","Gave it effort far beyond that required", None, rubric_id,"")
- level1 = Level(None, "Proficient","The student work hard and completed the project", None, rubric_id,"")
- level2 = Level(None, "Developing","Chose an easy project and did it indifferently", None, rubric_id,"")
- level3 = Level(None, "Unsatisfactory","Completed with minimum effort", None, rubric_id,"")
+ category = Category(None, "Effort", rubric_id,"",33.3333)
+ level0 = Level(None, "Exemplary","Gave it effort far beyond that required", None, rubric_id,"",5)
+ level1 = Level(None, "Proficient","The student work hard and completed the project", None, rubric_id,"",4)
+ level2 = Level(None, "Developing","Chose an easy project and did it indifferently", None, rubric_id,"",3)
+ level3 = Level(None, "Unsatisfactory","Completed with minimum effort", None, rubric_id,"",2)
levels = []
levels = [level0, level1, level2, level3]
self.scorepadDB.insert_criteria(category, levels)
- category = Category(None, "Craftsmanship/Skill", rubric_id,"")
- level0 = Level(None, "Exemplary","The artwork was beautiful and patiently done", None, rubric_id,"")
- level1 = Level(None, "Proficient","Lacks the finishing touches", None, rubric_id,"")
- level2 = Level(None, "Developing","The student showed average craftsmanship", None, rubric_id,"")
- level3 = Level(None, "Unsatisfactory","The student showed below average craftsmanship", None, rubric_id,"")
+ category = Category(None, "Craftsmanship/Skill", rubric_id,"",33.3333)
+ level0 = Level(None, "Exemplary","The artwork was beautiful and patiently done", None, rubric_id,"",5)
+ level1 = Level(None, "Proficient","Lacks the finishing touches", None, rubric_id,"",4)
+ level2 = Level(None, "Developing","The student showed average craftsmanship", None, rubric_id,"",3)
+ level3 = Level(None, "Unsatisfactory","The student showed below average craftsmanship", None, rubric_id,"",2)
levels = []
levels = [level0, level1, level2, level3]
self.scorepadDB.insert_criteria(category, levels)
project2 = Project(None, "My Mosaic", "Sample", "Art Project","Art Stud I",\
- str(today), 0, 1,rubric_id,self.owner_nick,"")
+ str(unicode(today.replace(microsecond=0))), 0, 1,rubric_id,"sample","",0)
self.scorepadDB.insert_project(project2)
-
diff --git a/dist/ScorePad-1.xo b/dist/ScorePad-1.xo
index 3272bd4..3f1265d 100644
--- a/dist/ScorePad-1.xo
+++ b/dist/ScorePad-1.xo
Binary files differ
diff --git a/images/AddProject.png b/images/AddProject.png
new file mode 100644
index 0000000..54a7bef
--- /dev/null
+++ b/images/AddProject.png
Binary files differ
diff --git a/images/Projects.png b/images/Projects.png
new file mode 100644
index 0000000..9c1c9a5
--- /dev/null
+++ b/images/Projects.png
Binary files differ
diff --git a/images/Rubrics.png b/images/Rubrics.png
new file mode 100644
index 0000000..f81c1c9
--- /dev/null
+++ b/images/Rubrics.png
Binary files differ
diff --git a/images/author.png b/images/author.png
new file mode 100644
index 0000000..0e693c6
--- /dev/null
+++ b/images/author.png
Binary files differ
diff --git a/images/date.png b/images/date.png
new file mode 100644
index 0000000..7d02983
--- /dev/null
+++ b/images/date.png
Binary files differ
diff --git a/images/delete.png b/images/delete.png
new file mode 100644
index 0000000..8becb90
--- /dev/null
+++ b/images/delete.png
Binary files differ
diff --git a/images/description.png b/images/description.png
new file mode 100644
index 0000000..7a8a1d9
--- /dev/null
+++ b/images/description.png
Binary files differ
diff --git a/images/design1.png b/images/design1.png
new file mode 100644
index 0000000..81aaa81
--- /dev/null
+++ b/images/design1.png
Binary files differ
diff --git a/images/edit.png b/images/edit.png
new file mode 100644
index 0000000..c15e65c
--- /dev/null
+++ b/images/edit.png
Binary files differ
diff --git a/images/evaluate.png b/images/evaluate.png
new file mode 100644
index 0000000..f88989a
--- /dev/null
+++ b/images/evaluate.png
Binary files differ
diff --git a/images/finalize.png b/images/finalize.png
new file mode 100644
index 0000000..5ea049e
--- /dev/null
+++ b/images/finalize.png
Binary files differ
diff --git a/images/left.png b/images/left.png
new file mode 100644
index 0000000..3e2bc53
--- /dev/null
+++ b/images/left.png
Binary files differ
diff --git a/images/projectdetails.png b/images/projectdetails.png
new file mode 100644
index 0000000..c6a12aa
--- /dev/null
+++ b/images/projectdetails.png
Binary files differ
diff --git a/images/right.png b/images/right.png
new file mode 100644
index 0000000..0742de9
--- /dev/null
+++ b/images/right.png
Binary files differ
diff --git a/images/rubric.png b/images/rubric.png
new file mode 100644
index 0000000..631b0b3
--- /dev/null
+++ b/images/rubric.png
Binary files differ
diff --git a/images/scorepad.png b/images/scorepad.png
new file mode 100644
index 0000000..b7030c6
--- /dev/null
+++ b/images/scorepad.png
Binary files differ
diff --git a/images/seegrades.png b/images/seegrades.png
new file mode 100644
index 0000000..5dc6aa2
--- /dev/null
+++ b/images/seegrades.png
Binary files differ
diff --git a/images/share.png b/images/share.png
new file mode 100644
index 0000000..8cd8d91
--- /dev/null
+++ b/images/share.png
Binary files differ
diff --git a/images/subject.png b/images/subject.png
new file mode 100644
index 0000000..0780db4
--- /dev/null
+++ b/images/subject.png
Binary files differ
diff --git a/images/submit.png b/images/submit.png
new file mode 100644
index 0000000..6482ee2
--- /dev/null
+++ b/images/submit.png
Binary files differ
diff --git a/images/title.png b/images/title.png
new file mode 100644
index 0000000..ba3c158
--- /dev/null
+++ b/images/title.png
Binary files differ
diff --git a/images/update.png b/images/update.png
new file mode 100644
index 0000000..77329a3
--- /dev/null
+++ b/images/update.png
Binary files differ