forked from 0x2620/pandora
move in preparation for virtualenv setup
This commit is contained in:
parent
ac65635b69
commit
973b3600af
33 changed files with 0 additions and 0 deletions
0
oxdb/user_management/__init__.py
Normal file
0
oxdb/user_management/__init__.py
Normal file
23
oxdb/user_management/models.py
Normal file
23
oxdb/user_management/models.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
class Group(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
name = models.CharField(blank=True, max_length=255, unique=True)
|
||||
users = models.ManyToManyField(User, related_name='groups')
|
||||
|
||||
class Profile(models.Model):
|
||||
user = models.ForeignKey(User, unique=True)
|
||||
|
||||
class Preference(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
user = models.ForeignKey(User, related_name='preferences')
|
||||
key = models.CharField(blank=True, max_length=255)
|
||||
value = models.TextField(blank=True)
|
||||
|
||||
23
oxdb/user_management/tests.py
Normal file
23
oxdb/user_management/tests.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
"""
|
||||
This file demonstrates two different styles of tests (one doctest and one
|
||||
unittest). These will both pass when you run "manage.py test".
|
||||
|
||||
Replace these with more appropriate tests for your application.
|
||||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
class SimpleTest(TestCase):
|
||||
def test_basic_addition(self):
|
||||
"""
|
||||
Tests that 1 + 1 always equals 2.
|
||||
"""
|
||||
self.failUnlessEqual(1 + 1, 2)
|
||||
|
||||
__test__ = {"doctest": """
|
||||
Another way to test that 1 + 1 is equal to 2.
|
||||
|
||||
>>> 1 + 1 == 2
|
||||
True
|
||||
"""}
|
||||
|
||||
14
oxdb/user_management/urls.py
Normal file
14
oxdb/user_management/urls.py
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
from django.conf.urls.defaults import *
|
||||
|
||||
|
||||
urlpatterns = patterns("oxdb.user_management.views",
|
||||
(r'^preferences', 'preferences'),
|
||||
(r'^login', 'login'),
|
||||
(r'^logout', 'logout'),
|
||||
(r'^register', 'register'),
|
||||
(r'^recover', 'recover'),
|
||||
)
|
||||
|
||||
91
oxdb/user_management/views.py
Normal file
91
oxdb/user_management/views.py
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.shortcuts import render_to_response, get_object_or_404, get_list_or_404
|
||||
from django.template import RequestContext
|
||||
from django.utils import simplejson as json
|
||||
|
||||
from oxdb.utils.shortcuts import render_to_json_response
|
||||
from oxdb.utils.decorators import login_required_json
|
||||
|
||||
import models
|
||||
|
||||
|
||||
def login(request):
|
||||
from django.contrib.auth import authenticate, login
|
||||
response = {'status': 403, 'message': 'login required'}
|
||||
username = request.POST['username']
|
||||
password = request.POST['password']
|
||||
user = authenticate(username=username, password=password)
|
||||
if user is not None:
|
||||
if user.is_active:
|
||||
user_json = {} #FIXME: preferences etc should be in here
|
||||
login(request, user)
|
||||
response = {'status': 200, 'message': 'You are logged in.', 'user': user_json}
|
||||
else:
|
||||
response = {'status': 403, 'message': 'Your account is disabled.'}
|
||||
print "Your account has been disabled!"
|
||||
else:
|
||||
response = {'status': 403, 'message': 'Your username and password were incorrect.'}
|
||||
return render_to_json_response(response)
|
||||
|
||||
def logout(request):
|
||||
response = {'status': 200}
|
||||
if request.user.is_authenticated():
|
||||
request.user.logout()
|
||||
return render_to_json_response(response)
|
||||
|
||||
def register(request):
|
||||
response = {'status': 500, 'message': 'registration failed'}
|
||||
return render_to_json_response(response)
|
||||
|
||||
def recover(request):
|
||||
username = request.POST.get('username', None)
|
||||
user = None
|
||||
q = User.objects.filter(username=username)
|
||||
if q.count() > 0:
|
||||
user = q[0]
|
||||
else:
|
||||
q = User.objects.filter(email=email)
|
||||
if q.count() > 0:
|
||||
user = q[0]
|
||||
if user:
|
||||
user.sendmail(...) #FIXME: send recovery mail
|
||||
response = {'status': 200, 'message': 'recovert email sent.'}
|
||||
else:
|
||||
response = {'status': 500, 'message': 'user or email not found.'}
|
||||
return render_to_json_response(response)
|
||||
|
||||
'''
|
||||
GET preferences/ //get all keys
|
||||
GET preferences/?key= //get key
|
||||
GEt preferences/?key=&value= //set key
|
||||
'''
|
||||
@login_required_json
|
||||
def preferences(request):
|
||||
response = {'status': 200}
|
||||
key = request.GET.get('key', None)
|
||||
value = request.GET.get('value', None)
|
||||
user = request.user
|
||||
if not key: # return all preferences for current user
|
||||
for p in models.Preference.objects.filter(user=user):
|
||||
response['preferences'][p.key] = p.value
|
||||
response['preferences']['email'] = user.email
|
||||
elif value == None: #return one preference
|
||||
p, created = models.Preference.objects.get_or_create(user=user, key=key)
|
||||
response['preferences'][key] = p.value
|
||||
else: # set preference
|
||||
response['message'] = '%s saved.' % key
|
||||
if key == 'password':
|
||||
user.set_password(value)
|
||||
user.save()
|
||||
elsif key == 'email':
|
||||
user.email = vaule
|
||||
user.save()
|
||||
else:
|
||||
p, created = models.Preference.objects.get_or_create(user=user, key=key)
|
||||
p.value = value
|
||||
p.save()
|
||||
return render_to_json_response(response)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue