user ids for users

This commit is contained in:
j 2011-10-03 18:10:53 +00:00
parent 8dd8dab270
commit 4559fd167a
6 changed files with 33 additions and 23 deletions

View file

@ -8,6 +8,7 @@ from django.db import models
from django.db.models import Max from django.db.models import Max
from django.conf import settings from django.conf import settings
import ox
from ox.django.fields import DictField from ox.django.fields import DictField
from ox.utils import json from ox.utils import json
@ -30,7 +31,7 @@ class UserProfile(models.Model):
windowsize = models.CharField(default='', max_length=255) windowsize = models.CharField(default='', max_length=255)
screensize = models.CharField(default='', max_length=255) screensize = models.CharField(default='', max_length=255)
info = DictField(default={}) info = DictField(default={})
note = models.TextField(default='') notes = models.TextField(default='')
def get_preferences(self): def get_preferences(self):
prefs = self.preferences prefs = self.preferences
@ -103,15 +104,17 @@ def user_post_save(sender, instance, **kwargs):
models.signals.post_save.connect(user_post_save, sender=User) models.signals.post_save.connect(user_post_save, sender=User)
def user_json(user, keys, request_user=None): def user_json(user, keys=None, request_user=None):
p = user.get_profile() p = user.get_profile()
j = { j = {
'disabled': not user.is_active,
'email': user.email, 'email': user.email,
'firstseen': user.date_joined, 'firstseen': user.date_joined,
'ip': p.ip, 'ip': p.ip,
'id': ox.to26(user.id),
'lastseen': user.last_login, 'lastseen': user.last_login,
'level': p.get_level(), 'level': p.get_level(),
'note': p.note, 'notes': p.notes,
'numberoflists': user.lists.count(), 'numberoflists': user.lists.count(),
'screensize': p.screensize, 'screensize': p.screensize,
'timesseen': p.timesseen, 'timesseen': p.timesseen,

View file

@ -316,7 +316,7 @@ def editUser(request):
key: value key: value
} }
required key: id required key: id
optional keys: username, email, level, note optional keys: username, email, level, notes
return { return {
'status': {'code': int, 'text': string} 'status': {'code': int, 'text': string}
@ -326,8 +326,10 @@ def editUser(request):
''' '''
response = json_response() response = json_response()
data = json.loads(request.POST['data']) data = json.loads(request.POST['data'])
user = get_object_or_404_json(models.User, username=data['id']) user = get_object_or_404_json(models.User, pk=ox.from26(data['id']))
profile = user.get_profile() profile = user.get_profile()
if 'disabled' in data:
user.is_active = not data['disabled']
if 'email' in data: if 'email' in data:
if models.User.objects.filter(email=data['email']).exclude(id=user.id).count()>0: if models.User.objects.filter(email=data['email']).exclude(id=user.id).count()>0:
response = json_response(status=403, text='email already in use') response = json_response(status=403, text='email already in use')
@ -335,8 +337,8 @@ def editUser(request):
user.email = data['email'] user.email = data['email']
if 'level' in data: if 'level' in data:
profile.set_level(data['level']) profile.set_level(data['level'])
if 'note' in data: if 'notes' in data:
profile.note = data['note'] profile.notes = data['notes']
if 'username' in data: if 'username' in data:
if models.User.objects.filter(username=data['username']).exclude(id=user.id).count()>0: if models.User.objects.filter(username=data['username']).exclude(id=user.id).count()>0:
response = json_response(status=403, text='username already in use') response = json_response(status=403, text='username already in use')
@ -344,7 +346,7 @@ def editUser(request):
user.username = data['username'] user.username = data['username']
user.save() user.save()
profile.save() profile.save()
response['data'] = models.user_json() response['data'] = models.user_json(user)
return render_to_json_response(response) return render_to_json_response(response)
actions.register(editUser, cache=False) actions.register(editUser, cache=False)
@ -515,7 +517,7 @@ Positions
if qs.count() > 0: if qs.count() > 0:
response['data']['position'] = utils.get_positions(ids, [qs[0].itemId])[0] response['data']['position'] = utils.get_positions(ids, [qs[0].itemId])[0]
elif 'positions' in data: elif 'positions' in data:
ids = [i.username for i in qs] ids = [ox.to26(i.id) for i in qs]
response['data']['positions'] = utils.get_positions(ids, data['positions']) response['data']['positions'] = utils.get_positions(ids, data['positions'])
else: else:
response['data']['items'] = qs.count() response['data']['items'] = qs.count()

View file

@ -4,18 +4,18 @@
<style> <style>
body { body {
text-align: center; text-align: center;
padding-top: 96px; padding-top: 128px;
background: #101010; background: #101010;
color: #F0F0F0; color: #F0F0F0;
} }
</style> </style>
<link rel="stylesheet" type="text/css" href="/static/oxjs/build/Ox.UI/css/Ox.UI.css"/> <link rel="stylesheet" type="text/css" href="/static/oxjs/build/Ox.UI/css/Ox.UI.css"/>
<title>We'll be back in a minute</title> <title>We will be back in a minute</title>
</head> </head>
<body class="OxThemeModern"> <body class="OxThemeModern">
<img src="/static/png/logo256.png"> <img src="/static/png/logo256.png" style="width: 256px"/>
<div style="padding-top: 8px"> <div style="padding-top: 16px">
We'll be back in a minute. We will be back in a minute.
</div> </div>
</body> </body>

View file

@ -98,7 +98,7 @@ pandora.UI = (function() {
if (!isAdd) { if (!isAdd) {
trigger[key] = val; trigger[key] = val;
} }
} }// else { alert(keys[0] + ' equal\n\n' + JSON.stringify([ui[keys[0]], val])); }
}); });
}); });
Ox.len(set) && pandora.api.setUI(set); Ox.len(set) && pandora.api.setUI(set);

View file

@ -50,8 +50,7 @@ pandora.ui.filter = function(list) {
}); });
} else { } else {
pandora.UI.set({find: data.query}); pandora.UI.set({find: data.query});
pandora.URL.push(); //pandora.URL.replace();
//reload();
} }
} }
}); });

View file

@ -26,7 +26,7 @@ pandora.ui.usersDialog = function() {
click: function() { click: function() {
pandora.api.findUsers({ pandora.api.findUsers({
query: {conditions: [], operator: '&'}, query: {conditions: [], operator: '&'},
keys: ['mail', 'username'], keys: ['email', 'username'],
range: [0, numberOfUsers], range: [0, numberOfUsers],
sort: [{key: 'username', operator: '+'}] sort: [{key: 'username', operator: '+'}]
}, function(result) { }, function(result) {
@ -46,7 +46,7 @@ pandora.ui.usersDialog = function() {
.css({margin: '16px'}) .css({margin: '16px'})
.html( .html(
result.data.items.map(function(item) { result.data.items.map(function(item) {
return item.username + ' &lt;' + 'mail@example.com' + '&gt;' return item.username + ' &lt;' + item.email + '&gt;'
}).join(', ') }).join(', ')
), ),
title: 'E-Mail Addresses' title: 'E-Mail Addresses'
@ -100,6 +100,12 @@ pandora.ui.usersDialog = function() {
$list = Ox.TextList({ $list = Ox.TextList({
columns: [ columns: [
{
id: 'id',
title: 'ID',
unique: true,
visible: false,
},
{ {
format: function(value) { format: function(value) {
Ox.print('&&', value) Ox.print('&&', value)
@ -136,7 +142,6 @@ pandora.ui.usersDialog = function() {
removable: false, removable: false,
title: 'Username', title: 'Username',
visible: true, visible: true,
unique: true,
width: 120 width: 120
}, },
{ {
@ -250,7 +255,7 @@ pandora.ui.usersDialog = function() {
columnsRemovable: true, columnsRemovable: true,
columnsVisible: true, columnsVisible: true,
items: pandora.api.findUsers, items: pandora.api.findUsers,
keys: [], keys: ['notes'],
max: 1, max: 1,
scrollbarVisible: true, scrollbarVisible: true,
sort: [ sort: [
@ -426,7 +431,7 @@ pandora.ui.usersDialog = function() {
.css({margin: '8px'}) .css({margin: '8px'})
.bindEvent({ .bindEvent({
change: function(event) { change: function(event) {
var data = {id: userData.username}, key, value; var data = {id: userData.id}, key, value;
if (event.id == 'status') { if (event.id == 'status') {
data.disabled = !event.data.checked; data.disabled = !event.data.checked;
} else if (event.id == 'level') { } else if (event.id == 'level') {
@ -434,8 +439,9 @@ pandora.ui.usersDialog = function() {
} else { } else {
data[event.id] = event.data.value; data[event.id] = event.data.value;
} }
$list.value(userData.id, event.id, data[event.id]);
pandora.api.editUser(data, function(result) { pandora.api.editUser(data, function(result) {
// ... Ox.Request.clearCache('findUsers');
}); });
} }
}); });