oxbrowser/oxbrowser/item/models.py

49 lines
1.3 KiB
Python

from django.db import models
from django.conf import settings
from pymongo import Connection, ASCENDING, DESCENDING
try:
from bson import ObjectId
except:
from pymongo.bson import ObjectId
from app.models import site_config
connection = Connection()
db = connection[settings.MONGO_DB]
items = db.cables
facets = db.facets
#FIXME: ./manage.py update_indexes
'''
for key in site_config()['itemKeys']:
#items.ensure_index(key['id'], ASCENDING)
#items.ensure_index(key['id'], ASCENDING)
items.ensure_index(key['id'])
'''
def save(item):
#update facets
for f in self.facets:
new = filter(lambda i: i not in self.old_document.get(key, []), self.document.get(key, []))
removed = filter(lambda i: i not in self.document.get(key, []), self.old_document.get(key, []))
for k in new:
facet = facets.find_one({'facet': f, 'value': k})
if not facet:
facet = facets.insert({'facet': f, 'value': k, 'count': 0})
facet['count'] += 1
facets.save(facet)
for k in removed:
facet = facets.find_one({'facet': f, 'value': k})
if facet:
facet['count'] -= 1
if facet['count'] <= 0:
facets.remove(facet)
else:
facets.save(facet)
items.save(self.document)