49 lines
1.3 KiB
Python
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)
|
|
|