se-hub/models/User.py

62 lines
2.1 KiB
Python

import json
__author__ = 'Aran'
from google.appengine.ext import db
class User(db.Model):
username = db.StringProperty(required=True)
name = db.StringProperty(required=False)
email = db.StringProperty(required=True)
isLecturer = db.BooleanProperty(required=True)
accessToken = db.StringProperty(required=True)
seToken = db.StringProperty(required=True)
avatar_url = db.StringProperty(required=True)
isFirstLogin = db.BooleanProperty(default=True)
campuses_id_list = db.StringListProperty(default=[])
courses_id_list = db.StringListProperty(default=[])
projects_id_list = db.StringListProperty(default=[])
def to_JSON(self):
data = {'username' : self.username,
'name' : self.name,
'email' : self.email,
'isLecturer' : self.isLecturer,
'avatar_url' : self.avatar_url,
'isFirstLogin' : self.isFirstLogin,
'campuses_id_list': self.campuses_id_list,
'courses_id_list': self.courses_id_list,
'projects_id_list': self.projects_id_list,
'id' : self.key().id(),
'stats': get_stats(self)
}
return json.dumps(data)
def get_stats(user):
from models.Project import Project
from models.Message import Message
labels = ['Commits', 'Open Issues Assigned', 'Messages', 'Unfinished Tasks']
data = [0, 0, 0, 0]
for pid in user.projects_id_list:
project = Project.get_by_id(int(pid))
info = json.loads(project.info)
stats = info["stats"]['micro']
p_data = stats['data']
p_series = stats['series']
try:
user_index = p_series.index(user.username)
#adding commits
data[0] = data[0] + p_data[user_index][0]
#adding open issues
data[1] = data[1] + p_data[user_index][1]
except Exception:
pass
messages = Message.all().filter('master_id =', user.key().id())
for m in messages.run():
data[2] = data[2] + 1
#need to do tasks
####
data = [data]
return {'data': data, 'labels': labels}