forked from 0x2620/pandora
rename date/access
This commit is contained in:
parent
f2d32a7121
commit
ba2dd341d3
6 changed files with 34 additions and 59 deletions
|
@ -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": "+"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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,
|
|
||||||
format: key.format,
|
|
||||||
id: key.id,
|
|
||||||
title: key.title,
|
|
||||||
type: key.type == 'layer'
|
|
||||||
? Ox.getObjectById(pandora.site.layers, key.id).type
|
? Ox.getObjectById(pandora.site.layers, key.id).type
|
||||||
: key.type
|
: key.type;
|
||||||
};
|
return key;
|
||||||
}), {
|
}), {
|
||||||
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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in a new issue