switch to base26 ids

This commit is contained in:
j 2011-10-01 00:28:35 +02:00
commit bc118c67ee
9 changed files with 36 additions and 23 deletions

View file

@ -21,6 +21,9 @@ def parseCondition(condition, user):
'user': 'user__username',
'place': 'places__id',
'event': 'events__id',
'in': 'start',
'out': 'end',
'id': 'public_id',
}.get(k, k)
if not k:
k = 'name'
@ -40,10 +43,8 @@ def parseCondition(condition, user):
return ~q
else:
return q
if k == 'id':
v = ox.from32(v.split('/')[-1])
elif k in ('places__id', 'events__id'):
v = ox.from32(v)
if k in ('places__id', 'events__id'):
v = ox.from26(v)
if isinstance(v, bool): #featured and public flag
key = k
elif k in ('lat', 'lng', 'area', 'south', 'west', 'north', 'east', 'matches',
@ -56,7 +57,12 @@ def parseCondition(condition, user):
}.get(op, ''))
else:
key = "%s%s" % (k, {
'>': '__gt',
'>=': '__gte',
'<': '__lt',
'<=': '__lte',
'==': '__iexact',
'=': '__icontains',
'^': '__istartswith',
'$': '__iendswith',
}.get(op, '__icontains'))

View file

@ -117,10 +117,14 @@ class Annotation(models.Model):
self.hue = self.saturation = self.lightness = 0
#FIXME: set volume here
def set_public_id(self):
public_id = Annotation.objects.filter(item=self.item, id__lt=self.id).count()
self.public_id = "%s/%s" % ( self.item.itemId, ox.to26(public_id))
def save(self, *args, **kwargs):
if not self.id:
super(Annotation, self).save(*args, **kwargs)
self.public_id = '%s/%s' % (self.item.itemId, ox.to32(self.id))
self.set_public_id()
if self.duration != self.end - self.start:
self.update_calculated_values()
super(Annotation, self).save(*args, **kwargs)

View file

@ -45,11 +45,15 @@ def order_query(qs, sort):
operator = e['operator']
if operator != '-':
operator = ''
if e['key'].startswith('clip:'):
key = {
'in': 'start',
'out': 'end',
}.get(e['key'], e['key'])
if key.startswith('clip:'):
key = annotation_sort_key(e['key'][len('clip:'):])
else:
elif key not in ('start', 'end', 'value'):
#key mgith need to be changed, see order_sort in item/views.py
key = "item__sort__%s" % e['key']
key = "item__sort__%s" % key
order = '%s%s' % (operator, key)
order_by.append(order)
if order_by:
@ -155,13 +159,12 @@ def removeAnnotations(request):
'''
response = json_response({})
data = json.loads(request.POST['data'])
ids = map(ox.from32, data['ids'])
failed = []
for a in models.Annotation.objects.filter(id__in=ids):
for a in models.Annotation.objects.filter(public_id__in=data['ids']):
if a.editable(request.user):
a.delete()
else:
failed.append(a.get_id)
failed.append(a.public_id)
if failed:
response = json_response(status=403, text='permission denied')
response['data']['ids'] = failed
@ -187,8 +190,7 @@ def editAnnotation(request):
'''
response = json_response({})
data = json.loads(request.POST['data'])
itemId, annotationId = data['id'].split('/')
a = get_object_or_404_json(models.Annotation, pk=ox.from32(annotationId))
a = get_object_or_404_json(models.Annotation, public_id=data['id'])
if a.editable(request.user):
a.value = data['value']
a.start = data['in']