Merge dormsbee
This commit is contained in:
@@ -9,6 +9,7 @@ from lxml import etree
|
||||
|
||||
try: # This lets us do __name__ == ='__main__'
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
from student.models import UserProfile
|
||||
from student.models import UserTestGroup
|
||||
from mitxmako.shortcuts import render_to_response, render_to_string
|
||||
@@ -144,7 +145,16 @@ def propogate_downward_tag(element, attribute_name, parent_attribute = None):
|
||||
|
||||
def user_groups(user):
|
||||
# TODO: Rewrite in Django
|
||||
return [u.name for u in UserTestGroup.objects.raw("select * from auth_user, student_usertestgroup, student_usertestgroup_users where auth_user.id = student_usertestgroup_users.user_id and student_usertestgroup_users.usertestgroup_id = student_usertestgroup.id and auth_user.id = %s", [user.id])]
|
||||
key = 'user_group_names_{user.id}'.format(user=user)
|
||||
cache_expiration = 60 * 60 * 4 # four hours
|
||||
group_names = cache.get(key)
|
||||
if group_names is None:
|
||||
group_names = [u.name for u in UserTestGroup.objects.filter(users=user)]
|
||||
cache.set(key, group_names, cache_expiration)
|
||||
|
||||
return group_names
|
||||
|
||||
# return [u.name for u in UserTestGroup.objects.raw("select * from auth_user, student_usertestgroup, student_usertestgroup_users where auth_user.id = student_usertestgroup_users.user_id and student_usertestgroup_users.usertestgroup_id = student_usertestgroup.id and auth_user.id = %s", [user.id])]
|
||||
|
||||
def course_xml_process(tree):
|
||||
''' Do basic pre-processing of an XML tree. Assign IDs to all
|
||||
@@ -161,7 +171,7 @@ def course_file(user):
|
||||
''' Given a user, return course.xml
|
||||
'''
|
||||
# TODO: Cache.
|
||||
filename = UserProfile.objects.get(user=user).courseware
|
||||
filename = user.profile_cache.courseware # UserProfile.objects.get(user=user).courseware
|
||||
|
||||
groups = user_groups(user)
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ file and check it in at the same time as your model changes. To do that,
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from cache_toolbox import cache_model, cache_relation
|
||||
|
||||
class StudentModule(models.Model):
|
||||
# For a homework problem, contains a JSON
|
||||
# object consisting of state
|
||||
@@ -50,3 +52,4 @@ class StudentModule(models.Model):
|
||||
return self.module_type+'/'+self.student.username+"/"+self.module_id+'/'+str(self.state)[:20]
|
||||
|
||||
|
||||
cache_model(StudentModule)
|
||||
@@ -247,7 +247,7 @@ def profile(request):
|
||||
]
|
||||
|
||||
|
||||
user_info=UserProfile.objects.get(user=request.user)
|
||||
user_info = request.user.profile_cache # UserProfile.objects.get(user=request.user)
|
||||
context={'name':user_info.name,
|
||||
'username':request.user.username,
|
||||
'location':user_info.location,
|
||||
|
||||
@@ -13,6 +13,8 @@ import uuid
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from cache_toolbox import cache_model, cache_relation
|
||||
|
||||
class UserProfile(models.Model):
|
||||
class Meta:
|
||||
db_table = "auth_userprofile"
|
||||
@@ -20,7 +22,7 @@ class UserProfile(models.Model):
|
||||
## CRITICAL TODO/SECURITY
|
||||
# Sanitize all fields.
|
||||
# This is not visible to other users, but could introduce holes later
|
||||
user = models.ForeignKey(User, unique=True, db_index=True)
|
||||
user = models.OneToOneField(User, unique=True, db_index=True, related_name='profile')
|
||||
name = models.CharField(blank=True, max_length=255, db_index=True)
|
||||
language = models.CharField(blank=True, max_length=255, db_index=True)
|
||||
location = models.CharField(blank=True, max_length=255, db_index=True)
|
||||
@@ -54,3 +56,4 @@ class Registration(models.Model):
|
||||
self.user.save()
|
||||
#self.delete()
|
||||
|
||||
cache_relation(User.profile)
|
||||
|
||||
@@ -86,7 +86,7 @@ def logout_user(request):
|
||||
def change_setting(request):
|
||||
if not request.user.is_authenticated():
|
||||
return redirect('/')
|
||||
up=UserProfile.objects.get(user=request.user)
|
||||
up = request.user.profile_cache # UserProfile.objects.get(user=request.user)
|
||||
if 'location' in request.POST:
|
||||
# print "loc"
|
||||
up.location=request.POST['location']
|
||||
@@ -171,7 +171,7 @@ def create_account(request, post_override=None):
|
||||
u.save()
|
||||
r.register(u)
|
||||
|
||||
up=UserProfile(user=u)
|
||||
up = UserProfile(user=u)
|
||||
up.name=post_vars['name']
|
||||
up.language=post_vars['language']
|
||||
up.location=post_vars['location']
|
||||
|
||||
Reference in New Issue
Block a user