rename date/access

This commit is contained in:
j 2011-11-10 19:52:26 +00:00
parent f2d32a7121
commit ba2dd341d3
6 changed files with 34 additions and 59 deletions

View file

@ -253,35 +253,35 @@
"title": "Budget", "title": "Budget",
"type": "integer", "type": "integer",
"columnWidth": 90, "columnWidth": 90,
"format": {"type": "currency", "args": ["$", 0]} "format": {"type": "unit", "args": ["$"]}
}, },
{ {
"id": "gross", "id": "gross",
"title": "Gross", "title": "Gross",
"type": "integer", "type": "integer",
"columnWidth": 90, "columnWidth": 90,
"format": {"type": "currency", "args": ["$", 0]} "format": {"type": "unit", "args": ["$"]}
}, },
{ {
"id": "profit", "id": "profit",
"title": "Profit", "title": "Profit",
"type": "integer", "type": "integer",
"columnWidth": 90, "columnWidth": 90,
"format": {"type": "currency", "args": ["$", 0]} "format": {"type": "unit", "args": ["$"]}
}, },
{ {
"id": "rating", "id": "rating",
"title": "Rating", "title": "Rating",
"type": "float", "type": "float",
"columnWidth": 60, "columnWidth": 60,
"format": {"type": "percent", "args": [10, 2]} "format": {"type": "unit", "args": ["%", 2]}
}, },
{ {
"id": "votes", "id": "votes",
"title": "Votes", "title": "Votes",
"type": "integer", "type": "float",
"columnWidth": 60, "columnWidth": 60,
"format": {"type": "percent", "args": ["auto", 2]} "format": {"type": "unit", "args": ["%", 2]}
}, },
{ {
"id": "id", "id": "id",
@ -418,39 +418,31 @@
"find": true "find": true
}, },
{ {
"id": "published", "id": "created",
"title": "Date Published", "title": "Date Created",
"type": "date", "type": "date",
"columnWidth": 90, "columnWidth": 150,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]} "format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]}
}, },
{ {
"id": "modified", "id": "modified",
"title": "Date Modified", "title": "Last Modified",
"type": "date", "type": "date",
"columnWidth": 90, "columnWidth": 150,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]} "format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]}
}, },
{ {
"id": "accessed", "id": "accessed",
"title": "Date Accessed", "title": "Last Accessed",
"type": "date", "type": "date",
"columnWidth": 90, "columnWidth": 150,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]} "format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]}
}, },
{ {
"id": "viewed", "id": "timesaccessed",
"title": "Date Viewed", "title": "Times Accessed",
"type": "date",
"columnWidth": 90,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]}
},
{
"id": "popularity",
"title": "Popularity",
"type": "integer", "type": "integer",
"columnWidth": 60, "columnWidth": 60
"format": {"type": "percent", "args": ["auto", 2]}
}, },
{ {
"id": "rightslevel", "id": "rightslevel",
@ -460,7 +452,7 @@
"format": {"type": "ColorLevel", "args": [ "format": {"type": "ColorLevel", "args": [
["Public", "Relaxed", "Regular", "Restricted", "Private"] ["Public", "Relaxed", "Regular", "Restricted", "Private"]
]}, ]},
"list": ["Public", "Relaxed", "Regular", "Restricted", "Private"], "list": ["Public", "Relaxed", "Regular", "Restricted", "Private", "Unknown"],
"sortOperator": "+" "sortOperator": "+"
}, },
{ {

View file

@ -57,17 +57,6 @@ def init(request):
config = copy.deepcopy(settings.CONFIG) config = copy.deepcopy(settings.CONFIG)
del config['keys'] #is this needed? del config['keys'] #is this needed?
#populate max values for percent requests
for key in filter(lambda k: 'format' in k, config['itemKeys']):
if key['format']['type'] == 'percent' and key['format']['args'][0] == 'auto':
name = key['id']
if name == 'popularity':
name = 'item__accessed__accessed'
value = ItemSort.objects.aggregate(Sum(name))['%s__sum'%name]
else:
value = ItemSort.objects.aggregate(Max(name))['%s__max'%name]
key['format']['args'][0] = value
response['data']['site'] = config response['data']['site'] = config
response['data']['user'] = init_user(request.user, request) response['data']['user'] = init_user(request.user, request)
return render_to_json_response(response) return render_to_json_response(response)

View file

@ -132,7 +132,6 @@ def get_item(info, user=None, async=False):
class Item(models.Model): class Item(models.Model):
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True) modified = models.DateTimeField(auto_now=True)
published = models.DateTimeField(default=datetime.now, editable=False)
user = models.ForeignKey(User, null=True, related_name='items') user = models.ForeignKey(User, null=True, related_name='items')
groups = models.ManyToManyField(Group, blank=True, related_name='items') groups = models.ManyToManyField(Group, blank=True, related_name='items')
@ -594,6 +593,7 @@ class Item(models.Model):
'aspectratio', 'aspectratio',
'bitrate', 'bitrate',
'clips', 'clips',
'created',
'cutsperminute', 'cutsperminute',
'duration', 'duration',
'hue', 'hue',
@ -604,8 +604,7 @@ class Item(models.Model):
'numberoffiles', 'numberoffiles',
'parts', 'parts',
'pixels', 'pixels',
'popularity', 'timesaccessed',
'published',
'resolution', 'resolution',
'rightslevel', 'rightslevel',
'saturation', 'saturation',
@ -667,7 +666,7 @@ class Item(models.Model):
#sort keys based on database, these will always be available #sort keys based on database, these will always be available
s.itemId = self.itemId.replace('0x', 'xx') s.itemId = self.itemId.replace('0x', 'xx')
s.modified = self.modified s.modified = self.modified
s.published = self.published s.created = self.created
s.rightslevel = self.level s.rightslevel = self.level
s.aspectratio = self.get('aspectratio') s.aspectratio = self.get('aspectratio')
@ -714,7 +713,7 @@ class Item(models.Model):
else: else:
s.cutsperminute = None s.cutsperminute = None
s.wordsperminute = None s.wordsperminute = None
s.popularity = self.accessed.aggregate(Sum('accessed'))['accessed__sum'] s.timesaccessed = self.accessed.aggregate(Sum('accessed'))['accessed__sum']
s.save() s.save()
#update cached values in clips #update cached values in clips
self.clips.all().update(director=s.director, title=s.title) self.clips.all().update(director=s.director, title=s.title)

View file

@ -242,8 +242,8 @@ Positions
r[p] = value.exists() and value[0].v or None r[p] = value.exists() and value[0].v or None
elif p == 'accessed': elif p == 'accessed':
r[p] = m.a r[p] = m.a
elif p == 'popularity': elif p == 'timesaccessed':
r[p] = m.sort.popularity r[p] = m.sort.timesaccessed
else: else:
r[p] = m.json.get(p, '') r[p] = m.json.get(p, '')
if 'clip_qs' in query: if 'clip_qs' in query:
@ -260,11 +260,11 @@ Positions
return r return r
qs = qs[query['range'][0]:query['range'][1]] qs = qs[query['range'][0]:query['range'][1]]
#response['data']['items'] = [m.get_json(_p) for m in qs] #response['data']['items'] = [m.get_json(_p) for m in qs]
if 'popularity' in _p: if 'timesaccessed' in _p:
qs = qs.annotate(popularity=Sum('accessed__accessed')) qs = qs.annotate(timesaccessed=Sum('accessed__accessed'))
if 'accessed' in _p: if 'accessed' in _p:
qs = qs.annotate(a=Max('accessed__access')) qs = qs.annotate(a=Max('accessed__access'))
if 'viewed' in _p or 'popularity' in _p or 'accessed' in _p: if 'viewed' in _p or 'timesaccessed' in _p or 'accessed' in _p:
qs = qs.select_related() qs = qs.select_related()
response['data']['items'] = [only_p_sums(m) for m in qs] response['data']['items'] = [only_p_sums(m) for m in qs]
else: else:

View file

@ -4,21 +4,16 @@
pandora.ui.filterForm = function(list) { pandora.ui.filterForm = function(list) {
var that = Ox.Filter({ var that = Ox.Filter({
findKeys: Ox.merge(Ox.map(pandora.site.itemKeys, function(key) { findKeys: Ox.merge(Ox.map(pandora.site.itemKeys, function(itemKey) {
return { var key = Ox.clone(itemKey);
autocomplete: key.autocomplete, key.type = key.type == 'layer'
autocompleteSortKey: key.autocompleteSortKey, ? Ox.getObjectById(pandora.site.layers, key.id).type
format: key.format, : key.type;
id: key.id, return key;
title: key.title,
type: key.type == 'layer'
? Ox.getObjectById(pandora.site.layers, key.id).type
: key.type
};
}), { }), {
id: 'list', id: 'list',
title: 'List', title: 'List',
type: 'list' type: 'string'
}), }),
list: list ? null : { list: list ? null : {
sort: pandora.user.ui.listSort, sort: pandora.user.ui.listSort,

View file

@ -65,7 +65,7 @@ pandora.ui.list = function() {
return { return {
align: ['string', 'text'].indexOf( align: ['string', 'text'].indexOf(
Ox.isArray(key.type) ? key.type[0]: key.type Ox.isArray(key.type) ? key.type[0]: key.type
) > -1 ? 'left' : key.type == 'label' ? 'center' : 'right', ) > -1 ? 'left' : key.type == 'list' ? 'center' : 'right',
defaultWidth: key.columnWidth, defaultWidth: key.columnWidth,
format: key.format, format: key.format,
id: key.id, id: key.id,