- register based api registration
- move review whitelist into config
This commit is contained in:
parent
a6cf963b6e
commit
7ca86a952e
16 changed files with 245 additions and 177 deletions
|
|
@ -76,7 +76,6 @@ def parseCondition(condition):
|
|||
q = Q(**{k:v})
|
||||
return q
|
||||
else: #number or date
|
||||
#FIXME: this part needs to be moved to use key/value find db
|
||||
def parseDate(d):
|
||||
while len(d) < 3:
|
||||
d.append(1)
|
||||
|
|
|
|||
|
|
@ -267,12 +267,11 @@ class Item(models.Model):
|
|||
|
||||
def reviews(self):
|
||||
reviews = self.get('reviews', [])
|
||||
whitelist = [w for w in ReviewWhitelist.objects.all()]
|
||||
_reviews = {}
|
||||
for r in reviews:
|
||||
for w in whitelist:
|
||||
if w.url in r[0]:
|
||||
_reviews[w.title] = r[0]
|
||||
for url in settings.REVIEW_WHITELIST:
|
||||
if url in r[0]:
|
||||
_reviews[settings.REVIEW_WHITELIST[url]] = r[0]
|
||||
return _reviews
|
||||
|
||||
def update_imdb(self):
|
||||
|
|
@ -338,6 +337,7 @@ class Item(models.Model):
|
|||
'''
|
||||
JSON cache related functions
|
||||
'''
|
||||
#FIXME: this should not be used
|
||||
_public_fields = {
|
||||
'itemId': 'id',
|
||||
'title': 'title',
|
||||
|
|
@ -767,6 +767,7 @@ class ItemFind(models.Model):
|
|||
key = models.CharField(max_length=200, db_index=True)
|
||||
value = models.TextField(blank=True)
|
||||
|
||||
#FIXME: make sort based on site.json
|
||||
class ItemSort(models.Model):
|
||||
"""
|
||||
used to sort items, all sort values are in here
|
||||
|
|
@ -849,22 +850,6 @@ class Facet(models.Model):
|
|||
self.value_sort = self.value
|
||||
super(Facet, self).save(*args, **kwargs)
|
||||
|
||||
class ReviewWhitelist(models.Model):
|
||||
name = models.CharField(max_length=255, unique=True)
|
||||
url = models.CharField(max_length=255, unique=True)
|
||||
|
||||
|
||||
class Collection(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
users = models.ManyToManyField(User, related_name='collections')
|
||||
name = models.CharField(blank=True, max_length=2048)
|
||||
subdomain = models.CharField(unique=True, max_length=2048)
|
||||
items = models.ForeignKey(Item)
|
||||
|
||||
def editable(self, user):
|
||||
return self.users.filter(id=user.id).count() > 0
|
||||
|
||||
class Stream(models.Model):
|
||||
class Meta:
|
||||
unique_together = ("item", "profile")
|
||||
|
|
@ -876,8 +861,8 @@ class Stream(models.Model):
|
|||
available = models.BooleanField(default=False)
|
||||
info = fields.DictField(default={})
|
||||
|
||||
#def __unicode__(self):
|
||||
# return self.video
|
||||
def __unicode__(self):
|
||||
return u"%s/%s" % (self.item, self.profile)
|
||||
|
||||
def path(self):
|
||||
return self.item.path(self.profile)
|
||||
|
|
@ -922,9 +907,6 @@ class Stream(models.Model):
|
|||
self.available=True
|
||||
self.save()
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s (%s)" % (self.profile, self.item)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.video and not self.info:
|
||||
self.info = ox.avinfo(self.video.path)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ def find_item(fileId):
|
|||
f = models.File.objects.get(pk=fileId)
|
||||
f.find_item()
|
||||
|
||||
@task(ignore_resulsts=True, queue="encoding")
|
||||
@task(queue="encoding")
|
||||
def update_streams(itemId):
|
||||
'''
|
||||
create stream, extract timeline and create derivatives
|
||||
|
|
@ -35,5 +35,4 @@ def update_streams(itemId):
|
|||
item = models.Item.objects.get(itemId=itemId)
|
||||
if item.files.filter(is_main=True, is_video=True, available=False).count() == 0:
|
||||
item.update_streams()
|
||||
|
||||
|
||||
return True
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ from user.models import get_user_json
|
|||
from archive.models import File
|
||||
from archive import extract
|
||||
|
||||
from api.actions import actions
|
||||
|
||||
def _order_query(qs, sort, prefix='sort__'):
|
||||
order_by = []
|
||||
|
|
@ -74,7 +75,7 @@ def _get_positions(ids, get_ids):
|
|||
pass
|
||||
return positions
|
||||
|
||||
def api_find(request):
|
||||
def find(request):
|
||||
'''
|
||||
param data
|
||||
{'query': query, 'sort': array, 'range': array}
|
||||
|
|
@ -209,7 +210,10 @@ Positions
|
|||
response['data']['size'] = r['size__sum']
|
||||
return render_to_json_response(response)
|
||||
|
||||
def api_getItem(request):
|
||||
actions.register(find)
|
||||
|
||||
|
||||
def getItem(request):
|
||||
'''
|
||||
param data
|
||||
string id
|
||||
|
|
@ -225,9 +229,10 @@ def api_getItem(request):
|
|||
info['layers'] = item.get_layers()
|
||||
response['data'] = {'item': info}
|
||||
return render_to_json_response(response)
|
||||
actions.register(getItem)
|
||||
|
||||
@login_required_json
|
||||
def api_editItem(request):
|
||||
def editItem(request):
|
||||
'''
|
||||
param data
|
||||
{id: string, key: value,..}
|
||||
|
|
@ -242,9 +247,10 @@ def api_editItem(request):
|
|||
else:
|
||||
response = json_response(status=403, text='permissino denied')
|
||||
return render_to_json_response(response)
|
||||
actions.register(editItem)
|
||||
|
||||
@login_required_json
|
||||
def api_removeItem(request):
|
||||
def removeItem(request):
|
||||
'''
|
||||
param data
|
||||
string id
|
||||
|
|
@ -259,11 +265,12 @@ def api_removeItem(request):
|
|||
else:
|
||||
response = json_response(status=403, text='permission denied')
|
||||
return render_to_json_response(response)
|
||||
actions.register(removeItem)
|
||||
|
||||
'''
|
||||
Poster API
|
||||
'''
|
||||
def api_parse(request): #parse path and return info
|
||||
def parse(request): #parse path and return info
|
||||
'''
|
||||
param data
|
||||
{path: string}
|
||||
|
|
@ -273,9 +280,10 @@ def api_parse(request): #parse path and return info
|
|||
path = json.loads(request.POST['data'])['path']
|
||||
response = json_response(utils.parse_path(path))
|
||||
return render_to_json_response(response)
|
||||
actions.register(parse)
|
||||
|
||||
|
||||
def api_setPosterFrame(request): #parse path and return info
|
||||
def setPosterFrame(request): #parse path and return info
|
||||
'''
|
||||
param data
|
||||
{id: itemId, position: float}
|
||||
|
|
@ -292,8 +300,9 @@ def api_setPosterFrame(request): #parse path and return info
|
|||
else:
|
||||
response = json_response(status=403, text='permissino denied')
|
||||
return render_to_json_response(response)
|
||||
actions.register(setPosterFrame)
|
||||
|
||||
def api_setPoster(request): #parse path and return info
|
||||
def setPoster(request): #parse path and return info
|
||||
'''
|
||||
param data
|
||||
{id: itemId, url: string}
|
||||
|
|
@ -317,8 +326,9 @@ def api_setPoster(request): #parse path and return info
|
|||
else:
|
||||
response = json_response(status=403, text='permission denied')
|
||||
return render_to_json_response(response)
|
||||
actions.register(setPoster)
|
||||
|
||||
def api_getImdbId(request):
|
||||
def getImdbId(request):
|
||||
'''
|
||||
param data
|
||||
{title: string, director: string, year: string}
|
||||
|
|
@ -331,6 +341,7 @@ def api_getImdbId(request):
|
|||
else:
|
||||
response = json_response(status=404, text='not found')
|
||||
return render_to_json_response(response)
|
||||
actions.register(getImdbId)
|
||||
|
||||
'''
|
||||
media delivery
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue