d53659c0c4
move annotation update_matches logic into models
2016-09-05 23:46:36 +02:00
5d43ed0585
Merge changes
2016-09-05 18:17:06 +02:00
3cb9281d6d
w should never be 0
2016-09-05 18:16:39 +02:00
400162e400
full_tile_widths can be 0 for items with many parts
2016-09-05 15:47:36 +02:00
bf984fe256
return item info for 0x urls
2016-09-05 13:45:24 +02:00
0f0f5f42d8
space
2016-08-31 19:07:44 +02:00
1c580a2df7
async update of annotation matches, fixes deadlock in load_subtitles
2016-08-31 18:03:19 +02:00
3913373c9b
update db if guest was reclassified as robot
2016-08-31 17:38:40 +02:00
680efc967c
processing trumps queued
2016-08-31 12:23:41 +02:00
c409b63f25
__future__ print
2016-08-31 01:33:41 +02:00
5ced5cf791
return url
2016-08-31 01:30:13 +02:00
89311c14b4
typo
2016-08-31 01:30:13 +02:00
cf3161d4bd
better findMedia
2016-08-31 01:30:13 +02:00
fc6cc93d26
keep import url
2016-08-31 01:30:13 +02:00
4d9e8a788a
add task for queued downloads
2016-08-31 01:30:13 +02:00
1ec69b9c05
more py3 fixes
2016-08-31 00:33:08 +02:00
6aabe8d9df
py3 fixes
2016-08-31 00:31:38 +02:00
9b3547f9bc
fix tv
2016-08-28 15:05:52 +02:00
78c26daaeb
update poster after processing stream
2016-08-28 13:38:46 +02:00
f71334ae25
avoid ad
2016-08-28 13:25:26 +02:00
da89a9748a
include download task
2016-08-28 12:22:31 +02:00
029bcfee29
files are queued after download
2016-08-28 12:22:08 +02:00
11e36b550e
update task after updating item
2016-08-25 18:34:49 +02:00
1dd574cb9e
task queue has status not state
2016-08-25 18:34:49 +02:00
8136a2c2f5
create new item if unregistered file gets uploaded
2016-08-25 18:34:49 +02:00
181f27b93a
fix audio only uploads
2016-08-25 18:34:49 +02:00
1468ddbecb
towards supporting python 2 and 3
...
- use absolute_imports
- make use of six.moves
- use exec instead of execfile
- use list(dict) instead if dict.keys()
2016-08-25 18:34:36 +02:00
479432f01a
upload_date can be none
2016-08-25 18:32:28 +02:00
83c2e25aac
support editable as result in find
2016-08-25 18:32:28 +02:00
97a46dceb0
fix sort of static edits
2016-08-23 13:24:27 +02:00
9685c7e4a5
fix streams for static edits
2016-08-23 13:24:22 +02:00
b4074303ba
avoid error in error handler and render 500 page
2016-08-23 01:37:38 +02:00
d7b53aa322
limit cronjob rate if multiple cronjobs end up in queue
2016-08-18 13:41:24 +02:00
e1cacdb67a
add task queue api
2016-08-17 14:37:59 +02:00
0eb873d2cb
fix hue, saturation, lightness calculation for multi part items
2016-08-15 15:14:44 +02:00
3d6d1be2e6
include oshash in video url to avoid cache issues
2016-08-13 15:36:00 +02:00
843cea063d
update timeline if part is changed
2016-08-13 15:34:28 +02:00
3b8dd55273
don't fail if 2 paths get flipped in a folder
2016-08-13 15:32:51 +02:00
8c928860e1
import url celanup
...
- only import first url
- pass empty string instead of undefined
- page can contain multiple videos, import as parts
2016-08-10 10:49:58 +02:00
b59a9c3122
set canImportItems in config.*.jsonc
2016-08-09 15:58:48 +02:00
2157b719ec
use more info from sort table, fixes #2953
2016-08-09 15:06:44 +02:00
c08ce51db2
add padma importMetadata
2016-08-09 14:25:39 +02:00
384c643326
no tags == []
2016-08-09 14:25:39 +02:00
9991767d01
no summary in default importMetadata keys
2016-08-09 13:03:21 +01:00
7f8b5448e6
set default config importMetadata
2016-08-09 12:57:43 +01:00
0430a0f236
cache getMediaUrlInfo
2016-08-09 12:57:43 +01:00
90486ec774
update menu and config
2016-08-09 13:35:47 +02:00
5ef6062613
import media dialog
2016-08-09 13:17:48 +02:00
926d3f0f09
add video id
2016-08-09 11:50:24 +01:00
337cafcf76
don't add base keys to Item.data
2016-08-08 15:54:52 +02:00
9a86ddce01
include upload_date
2016-08-05 17:57:40 +02:00
dce51305ce
update poster after extracting stream
2016-08-05 15:24:54 +02:00
c4a95bc320
update_poster should always update poster
2016-08-05 14:46:27 +02:00
2aef460225
do not set -ac if audiochannels is None
2016-08-05 14:46:27 +02:00
ff8dd16456
fix profile selection
2016-08-03 11:41:46 +02:00
5447aab0a1
more current values
2016-07-30 12:04:35 +02:00
dcf3acbd44
store facets in NFKD
2016-07-30 12:01:34 +02:00
dffb25e0e8
poster might still point to old id, after rename, delete and make new one. fixes #2944
2016-07-30 10:02:53 +02:00
5c90ff79a0
cleanup poster cache
2016-07-30 09:39:31 +02:00
893f2e5423
add importMediaDialog
2016-07-30 02:49:43 +02:00
383ad8a535
fix findMedia by item id
2016-07-24 17:52:33 +02:00
6f4a0ba90a
support vtt subtitles
2016-07-01 21:13:13 +02:00
f8f951c966
remove outdated fixmes
2016-07-01 17:53:59 +02:00
d780045306
flake8
2016-07-01 17:48:43 +02:00
3166bf5beb
show timeline errors
2016-07-01 17:34:45 +02:00
5434ffbf53
make_poster no longer takes arguments
2016-07-01 12:44:07 +02:00
88c800a093
use data['positions']
2016-06-30 16:42:56 +02:00
c7157d5001
only decode ids for found positions
...
merge document.view.get_positions into item.utils.get_positions
add flag to decode id before looking up in ids
Followup to 09ebbc9cc6
2016-06-30 16:18:07 +02:00
3d95d7013a
Merge remote-tracking branch 'wjt/2935-findDocuments-performance'
2016-06-30 15:43:09 +02:00
e9863c238e
always use get_operator, avoid case-insensitive match if possible
2016-06-30 11:28:09 +02:00
5b545e6e43
layer first
2016-06-30 02:42:24 +02:00
b6e4d33a43
add Annotation.findvalue index (used by findClips)
2016-06-30 02:42:24 +02:00
b63024df02
show source info if encode fails
2016-06-30 00:23:56 +02:00
b5bc17f925
make layer itemKeys with filter=true show up in searching for *
2016-06-30 00:17:23 +02:00
09ebbc9cc6
findDocuments: improve performance of positions queries
...
References #2935
2016-06-28 16:36:55 +01:00
8d25e3be78
findDocuments: improve entity query performance
...
When I implemented this in 9a4c24c
, there were not many rows in
entity_documentproperties in the database here. Now that there are,
computing the document_document -> entity_documentproperties ->
entity_entity join and then filtering is really, really slow. Postgres
seems to materialize the whole join and then scan it.
If we get a set of matching document IDs for the entity query in a
subquery, and then just filter with IN on that, things are much faster:
scan entity_entity; in a nested loop, get the document_ids via
entity_documentproperties; hash this set; and then scan
document_document.
Searching for a single character, this brings the query from ~1.1s to
~400ms. Searching for a full word, ~800ms to 120ms
This condition is getting really ugly -- I am sorry!
References #2935
2016-06-28 16:33:01 +01:00
5aeffcfb6a
check first audio track
2016-06-27 16:51:18 +02:00
adfcc1cb27
never set display aspect ratio to 0:0
2016-06-27 16:08:30 +02:00
8ac78f3bd6
remove unused force flag from make_poster, update_timeline
2016-06-26 23:24:11 +02:00
0f9e80e1e6
avoid saving item twice
2016-06-26 23:22:27 +02:00
de9b062d63
make sure existing index is using gin
2016-06-26 16:55:58 +02:00
ab0dfddf31
set SECURE_PROXY_SSL_HEADER by default
2016-06-26 15:34:19 +02:00
0d89ad640b
ignore some broken audio codecs
2016-06-26 15:33:52 +02:00
92f642cbac
pcm sound can have no codec
2016-06-26 14:41:58 +02:00
2cec1b9ad5
s/import Image/from PIL import Image/g
2016-06-25 20:39:29 +02:00
4785f314cb
Add VP9/Opus support, use VP8 by default
...
- support vp9 and opus
- switch to 2 pass encoding
- use ffmpeg -movflags +faststart instead of qtfaststart
2016-06-23 17:36:41 +02:00
aaacc48259
only save if update_external fails
2016-06-20 18:28:05 +02:00
d83647c4a5
don't hide oxtimelines errors
2016-06-20 18:27:31 +02:00
6dcbcdd19c
dont update timeline in update_selected, remove unused async get_item case
2016-06-16 14:48:54 +02:00
0486d62ec9
use absolute path
2016-06-16 14:48:09 +02:00
f25218466b
formating
2016-06-16 14:48:01 +02:00
70f34bfde9
typo
2016-06-15 19:13:00 +02:00
e3c5ab18c7
only update itemsort if name is changed
2016-06-15 18:31:40 +02:00
22f83288c5
avoid looking up item twice
2016-06-15 18:29:09 +02:00
7c53dca65b
less async item creation
2016-06-15 18:12:59 +02:00
b2a9a5f711
space
2016-06-15 17:56:31 +02:00
3c1f4a8c95
dont call module
2016-06-15 17:55:57 +02:00
b010aca0a9
s/taskId/id/
2016-06-15 15:45:51 +02:00
a0fc6ffadc
typo
2016-06-15 14:55:45 +02:00
f4cbe6a114
return empty sequences if no data timeline exists
2016-06-15 14:48:02 +02:00
af0e0cffe8
person can be removed again, let async itemsort fail without exception
2016-06-15 14:34:46 +02:00
fd9d3bdabf
flake8 + map->[]
2016-06-15 14:34:46 +02:00
05c4cfcbc8
add space and other flake8 cleanups
2016-05-28 11:30:43 +02:00
5e149a5cb8
add space and other flake8 cleanups
2016-05-28 11:26:46 +02:00
225259e521
add space and other flake8 cleanups
2016-05-28 11:18:51 +02:00
f21e8413fb
use get_random_string
2016-05-28 11:18:51 +02:00
7fdaf6d1ce
include Access-Control-Allow-Origin in 404 not found response
2016-05-27 11:51:47 +02:00
05e6118a88
findAnnotations: include duration alongside result count
...
fixes #2921
2016-05-05 15:54:25 +01:00
41cc8e3573
expose encoding status via api
2016-05-05 10:49:34 +02:00
be163826ef
Merge remote-tracking branch 'wjt/fix-migrations'
2016-05-05 10:48:24 +02:00
39b9b48be2
archive: fix migrations for upload_to function renamings
...
9c75526
renamed these functions. The function doesn't affect the DB
schema so it should be safe to just modify the migraiton.
2016-05-04 17:01:44 +01:00
e29ea230fb
Add migration for Document.documentproperties ref
...
This should have been included with a8dcbbb
, which changed the
related_name to access DocumentProperties from Document. (There's no
actual change to the database.)
2016-05-04 16:55:11 +01:00
0f28a2b7d5
fix queue status
2016-04-30 14:15:13 +02:00
9c7552699f
fix upload_to callbacks
2016-04-29 13:46:55 +02:00
2812834ce3
findAnnotations: don't lowercase ids ( fixes #2916 )
...
Without this fix, a condition like:
{key: 'id', operator: '==', value: 'A/B'}
gets mapped to:
public_id__exact=('A/B'.lower())
which is wrong.
I introduced this bug in b3df5b8
. I didn't catch it because I was
mostly interested in the 'layer' key -- but layer names are
conventionally lowercase anyway so lowercasing them had no effect.
2016-04-29 11:03:45 +01:00
aa40a40595
Annotation.json: only include entity id & name
...
Fetching documents for each entity in turn is expensive. (I have tried
using ArrayAgg to fetch them in the same query as the Entity — no
improvement. It's possible that being able to join to entity_entity,
and then use ArrayAgg, would be better.)
Even once you've fetched them all, if the same entity appears many
times in an item, then get(..., keys=['layers']) duplicates the whole
JSON for the entity many times: expensive to serialize, expensive to
send over the wire.
Pandora's own web interface only depends on the 'id' key of 'entity' in
each annotation, and refetches the rest of the entity to show the pop-up
dialog when you press E. So by just not bothering to fetch and send any
other keys, get(..., keys=['layers']) on an item with many entity
annotations is substantially faster.
(I experimented with splitting the full entities off to one side, so,
you'd have:
{
"layers": {
somelayer: [...,
{..., "entity": {"id": ABC}},
], ...
},
"entities": {
ABC: {...},
...
}
}
This is quicker than the status quo, but obviously not as fast as not
fetching & sending the rest at all!)
2016-04-28 14:15:23 +01:00
aa0fbc9d4a
Entity.json: get document ids from join table
...
This is a bit quicker because it's just a lookup in a single table, not
a join.
2016-04-28 14:15:12 +01:00
400b6650a2
Annotation.json: document empty-subtitle special case
2016-04-19 13:52:52 +01:00
af0d87b569
Annotation.json: reduce repeated layer lookups
...
It's actually quite costly to look up keys in CONFIG, particularly
inside a loop: this trims ~5% off get(keys=['layers']) for
annotation-heavy items.
2016-04-19 13:52:47 +01:00
3f5be0bd27
findClips: look up entity names ( fixes #2804 )
2016-04-19 12:28:58 +01:00
d0129a4416
findClips: avoid O(n²) lookup of clip from annotation
...
This doesn't make much difference for small ranges, of course.
2016-04-19 11:25:12 +01:00
ba00bcbf7b
findClips: select_related('item') / ('item__sort')
...
Clip.public_id uses self.item.public_id.
Clip.json() uses self.item.sort, so we should select_related on that
rather than the clip's own sort field. (They are identical objects. Is
Clip.sort ever used directly?)
With this change, findClips() issues one query to fetch clips plus one
query per flavour of annotation; before, it issued two extra queries per
clip.
2016-04-19 11:25:06 +01:00
6dbb7f921a
findClips: only scan layers once
2016-04-19 11:14:25 +01:00
b3df5b8d56
findAnnotations: match some fields case-sensitively
...
Requiring layer to have the right case is consistent with
addAnnotation(), and means the _layer[_like] index can be used. In my
testing, if itemsQuery specifies a single item, then postgres doesn't
bother with the layer index anyway; but if not, it makes a pretty big
(~3×) difference.
Matching public_id and item__public_id case-sensitively also seems
reasonable (it's consistent with get() and getAnnotation()).
(Is lower() redundant for the case-insensitive comparisons? ie. is
UPPER(x.lower()) == UPPER(x)? I'm not sure, it's cheap, let's leave it.)
2016-04-05 12:19:32 +01:00
8d1b4de337
findAnnotations(): make 'findvalue' the default key
...
Annotations have no 'name' field, so
findAnnotations({query: {conditions: [{value: 'foo'}]}})
would previously raise an exception.
2016-04-05 12:19:31 +01:00
284caf03c3
get_by_key: short-circuit
...
This is about 30% faster, presumably because it avoids allocation and/or
closing over variables is slow(?). It's not hugely significant (I
misread a line_profile report) but why not.
2016-04-05 12:19:31 +01:00
7ac68697d4
update pdf.js
2016-04-04 15:50:07 +02:00
652df88342
return 404
2016-04-04 15:50:07 +02:00
1bff4aa0e9
avoid storing invalid poster frames, only show videos with video
2016-04-01 16:40:20 +02:00
b8beb51480
fix multipart audio only timelines
2016-03-31 14:54:38 +02:00
94b940436f
fix timelines for items with many parts
...
- use durations from streams not from timelines
- don't accumulate timeline drift
2016-03-19 18:58:48 +01:00
f0b8b2b81e
check that range is [int, int]
2016-03-17 16:06:08 +01:00
eeaeda3970
Support WebVTT subtitle export
2016-03-11 14:16:23 +01:00
697e501a4f
only update item timeline once all parts are done
2016-03-11 10:33:48 +01:00
f6cebcaec9
fix user/group api
2016-03-08 20:14:05 +05:30
29204b6fb5
move gunicorn configuration from init script to config file
2016-03-07 14:25:24 +05:30
4f28c2c548
fix annotation import, values are decoded in d1.9
2016-03-05 15:36:47 +05:30
a8dcbbbe89
Include DocumentProperties.data in Document.json()
2016-03-05 15:07:47 +05:30
a55cbcfb9f
DocumentProperties: add data field
2016-03-05 15:07:47 +05:30
0c98cd080e
Entity.alternativeNames: default to () not [] ( fixes #2896 )
...
Otherwise this:
self.name_find = '||' + '||'.join((self.name,) + self.alternativeNames) + '||'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
fails because () + [] is an error. I guess this must have been
introduced by the DictField/TupleField rewrite.
Without this fix, it is impossible to create a new entity.
Basically the same logic is used for Event and Place too so I've made
the same change to those, and, in passing, fix another copy of the bug
fixed for Entity.name_find in fe7f961
.
2016-03-04 17:11:36 +00:00
9a4c24cdb4
Support searching documents by entities
2016-03-04 12:41:41 +00:00
738a9282b4
Document: fix negating id queries
2016-03-04 12:41:41 +00:00
8c23bdff6d
Implement DocumentProperties.__unicode__
2016-03-04 12:41:41 +00:00
4613005b83
use geoip2 api to fix ipv6 lookups
2016-03-04 12:50:44 +05:30
c6f9f87c8e
Fix autocompleteSort with multiple keys ( fixes #2893 )
...
QuerySet.order_by() takes each key as a separate argument, not as a
single comma-separated string.
2016-03-03 18:15:37 +05:30
2a07e2a1ab
Remove redundant overrides of Model.delete
...
Both of these models have pre_delete handlers which do the same things,
so I think these are unnecessary.
2016-03-03 18:10:29 +05:30
d69a8efd97
Don't save other file-owning models on delete, either
2016-03-03 18:10:29 +05:30
6e0049a20c
Don't save Document in pre_delete handler ( fixes #2889 )
...
FileField.delete() will, by default, save() the model instance it is
attached to. This is pointless if we're in the process of deleting the
Document -- and since Document.save() calls Document.update_matches(),
this scans all annotations every time a document is deleted.
2016-03-03 18:10:29 +05:30
fd2c69a5b7
define BASE_DIR
2016-03-03 16:56:06 +05:30
11924fcb0d
Rename api.taskStatus to api.getTaskStatus
...
still register api.taskStatus since its used
in pandora_client and other scripts.
fixes #2600 and fixes #2859
2016-02-20 18:35:26 +05:30
0d5c968026
space
2016-02-20 10:41:23 +00:00
051a3578b4
inline django 1.9 version of ox.django
2016-02-20 10:41:23 +00:00
7620795862
add update_itemsfolder command
2016-02-20 10:41:22 +00:00
0367816257
only crop with 4 crop points
2016-02-20 10:41:22 +00:00
1ef547f885
update celery integration
2016-02-20 10:41:22 +00:00
f060601d40
django 1.9 returns parsed value not raw data
2016-02-20 15:15:02 +05:30
e9bcd19161
fix initdb
2016-02-20 15:15:02 +05:30
29c6dc866b
fix index
2016-02-20 15:15:02 +05:30
7a6515183a
add wsgi
2016-02-20 15:15:02 +05:30
cc84487193
commit_unless_managed->commit
2016-02-20 15:15:02 +05:30
62caf55fe6
stop using RequestContext
2016-02-20 15:15:02 +05:30
3f02f6086a
fix clip random
2016-02-20 15:15:01 +05:30
2fe857d4fd
remove optparse
2016-02-20 15:15:01 +05:30
4219246909
db migration
2016-02-20 15:15:01 +05:30
976860ec30
use django.conf.urls url instead of patterns
2016-02-20 06:00:13 +00:00
158c68fbc7
use object class for MetaClip
2016-02-20 05:58:53 +00:00
1cc795995d
user.get_profile()->user.profile
2016-02-19 22:06:11 +05:30
3e8f28ff47
update imports
2016-02-19 22:06:10 +05:30
5d63ad1760
default/upload_to=lambda breaks migrations, use functions
2016-02-19 21:59:26 +05:30
e22cc432b3
use transaction.atomic
2016-02-19 21:55:09 +05:30
e738503380
remove old migrations
2016-02-19 15:17:18 +00:00
35bdfba77c
fix default values
2016-02-19 19:01:38 +05:30
d241b90b63
check data is a dict
2016-02-19 18:46:53 +05:30
6b1ce30eb2
from __future__ import print_function
2016-02-18 16:19:26 +05:30
47d8d67c3d
Allow 'query' to be omitted from find*() ( fixes #2883 )
...
I hit this in findDocuments() so thought I'd fix them all.
2016-02-15 14:58:50 +00:00
b121b58a86
support caching local files, lookup by oshash
2016-02-14 00:32:14 +05:30
691b3fa934
Entity: only update annotations when name has changed ( fixes #2877 )
...
Just like ace0468
this doesn't exactly fix #2827 , but it does reduce the
unnecessary work.
2016-02-05 19:03:16 +05:30
6008f3b44e
findEntities: fix negated conditions, fixes #2876
2016-02-05 19:01:30 +05:30
cdaa50c4d3
addAnnotations: report which key is missing in error
2016-02-04 10:38:02 +00:00
729856eb30
Rename getTaskStatus -> taskStatus in API docs ( fixes #2859 )
2016-02-04 10:38:01 +00:00
c7515517da
remove persona support
2016-01-12 14:04:34 +05:30
face7da3da
avoid duplicate users for or queries, fixes #2871
2016-01-12 12:06:12 +05:30
f47febb09c
joined audio timelines
2015-12-09 18:29:18 +00:00
d23a6eb317
fix cuts for multipart videos
2015-12-01 20:11:08 +01:00
a919724821
typo
2015-11-29 14:13:44 +01:00
f6bfa26ae3
dont count empty annots
2015-11-26 09:21:52 +01:00
8f6f39caaf
dont include emtpy annotations in srt export
2015-11-20 18:19:55 +01:00
2b3853c7aa
remove debug
2015-11-18 14:45:31 +01:00
e216a7b307
make it easer to copy&paste default values
2015-11-18 14:28:40 +01:00
j
48e1435601
switch to git
2015-11-14 15:22:40 +01:00
j
b7cfcfa182
add some encoding options: crop, trim, aspect
2015-11-12 16:15:02 +00:00
j
310343c81c
improve output if config can not be parsed
2015-11-12 13:06:34 +01:00
j
9e88f29126
only loop over annotations without public_id once
2015-11-11 10:39:34 +01:00
j
9b1ed58ff2
only migrate AnnotationSequence if we have items
2015-11-11 09:48:16 +01:00
j
4bdce55364
fix joining audio only timelines
2015-11-02 09:34:41 +01:00
j
eb472b88ae
allow annotation import/export on 0x
2015-10-31 13:54:12 +01:00
j
54b7c4be9a
update dimensions replacing documents, add modified to image urls to get latest version
2015-10-26 16:10:12 +01:00
j
6f9fb06da3
Replace Document, still some cache issues, fixes #2855
2015-10-25 22:08:13 +01:00
j
21a6007f8c
only add video sitemap for films that can be played
2015-10-22 19:40:20 +02:00
j
90d8d46603
update sitemap video namespace
2015-10-22 00:11:44 +02:00