From 52dd6361e7f8aa8babbcd32af036835837d3e2cb Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Sat, 10 Mar 2012 17:33:20 -0500 Subject: [PATCH 1/4] Helper methods for managing users --- student/models.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/student/models.py b/student/models.py index b26041a4aa..ce21930802 100644 --- a/student/models.py +++ b/student/models.py @@ -57,3 +57,31 @@ class Registration(models.Model): #self.delete() #cache_relation(User.profile) + +#### Helper methods for use from python manage.py shell. + +def get_user(email): + u = User.objects.get(email = email) + up = UserProfile.objects.get(user = u) + return u,up + +def user_info(email): + u,up = get_user(email) + print "User id", u.id + print "Username", u.username + print "E-mail", u.email + print "Name", up.name + print "Location", up.location + print "Language", up.language + return u,up + +def change_email(old_email, new_email): + u = User.objects.get(email = old_email) + u.email = new_email + u.save() + +def change_name(email, new_name): + u,up = get_user(email) + up.name = new_name + up.save() + From 6561cac242bf5ab4b947f7c089a4bf101ac77ba8 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Sat, 10 Mar 2012 17:41:54 -0500 Subject: [PATCH 2/4] User counts --- student/models.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/student/models.py b/student/models.py index ce21930802..a36658dd30 100644 --- a/student/models.py +++ b/student/models.py @@ -85,3 +85,9 @@ def change_name(email, new_name): up.name = new_name up.save() +def user_count(): + return User.objects.all().count() + +def active_user_count(): + return User.objects.filter(is_active = True).count() + From a8c2c3c5b4352b7afeee4253007216a2c3d81bf0 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Sat, 10 Mar 2012 19:38:51 -0500 Subject: [PATCH 3/4] More helpers --- student/models.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/student/models.py b/student/models.py index a36658dd30..024da56260 100644 --- a/student/models.py +++ b/student/models.py @@ -29,6 +29,8 @@ class UserProfile(models.Model): meta = models.CharField(blank=True, max_length=255) # JSON dictionary for future expansion courseware = models.CharField(blank=True, max_length=255, default='course.xml') +## TODO: Should be renamed to generic UserGroup, and possibly +# Given an optional field for type of group class UserTestGroup(models.Model): users = models.ManyToManyField(User, db_index=True) name = models.CharField(blank=False, max_length=32, db_index=True) @@ -91,3 +93,13 @@ def user_count(): def active_user_count(): return User.objects.filter(is_active = True).count() +def create_group(name, description): + utg = UserTestGroup() + utg.name = name + utg.description = description + utg.save() + +def add_user_to_group(group, user): + utg = UserTestGroup.objects.get(name = group) + utg.users.add(User.objects.get(username = user)) + utg.save() From a2c4010b8fe6615aa65e833fe5011b8a520646e4 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Sat, 10 Mar 2012 20:13:03 -0500 Subject: [PATCH 4/4] Removed caching for dev machines --- courseware/content_parser.py | 8 +++++++- settings.py | 1 + student/models.py | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/courseware/content_parser.py b/courseware/content_parser.py index 35ee7b5018..2aefcbb8d0 100644 --- a/courseware/content_parser.py +++ b/courseware/content_parser.py @@ -151,7 +151,13 @@ def user_groups(user): # TODO: Rewrite in Django key = 'user_group_names_{user.id}'.format(user=user) cache_expiration = 60 * 60 # one hour - group_names = cache.get(fasthash(key)) + + # Kill caching on dev machines -- we switch groups a lot + if "dev" not in setting.DEFAULT_GROUPS: + group_names = cache.get(fasthash(key)) + else: + group_names = None + if group_names is None: group_names = [u.name for u in UserTestGroup.objects.filter(users=user)] cache.set(fasthash(key), group_names, cache_expiration) diff --git a/settings.py b/settings.py index e8b0d2b1e7..cce3dfad4e 100644 --- a/settings.py +++ b/settings.py @@ -6,6 +6,7 @@ import tempfile import djcelery # from settings2.askbotsettings import LIVESETTINGS_OPTIONS +DEFAULT_GROUPS = [] # Configuration option for when we want to grab server error pages STATIC_GRAB = False diff --git a/student/models.py b/student/models.py index 024da56260..268503a7f3 100644 --- a/student/models.py +++ b/student/models.py @@ -103,3 +103,8 @@ def add_user_to_group(group, user): utg = UserTestGroup.objects.get(name = group) utg.users.add(User.objects.get(username = user)) utg.save() + +def remove_user_from_group(group, user): + utg = UserTestGroup.objects.get(name = group) + utg.users.add(User.objects.get(username = user)) + utg.save()