# HG changeset patch # User rougeronj # Date 1427797282 -7200 # Node ID 19f3f0a7fbd7ffa3d953ffe6938e6b11c9066637 # Parent 5eab9718182b28f5fd23a150c294ea96935fc7aa add idInventory for slides saved from a research and not coming from Jamespot diff -r 5eab9718182b -r 19f3f0a7fbd7 server/ammico/models.py --- a/server/ammico/models.py Fri Mar 27 16:33:30 2015 +0100 +++ b/server/ammico/models.py Tue Mar 31 12:21:22 2015 +0200 @@ -1,3 +1,5 @@ +import datetime + from django.contrib.auth.models import User from django.db import models from taggit.managers import TaggableManager @@ -24,12 +26,13 @@ class Slide(models.Model): book = models.ForeignKey(Book, related_name = "slides") - idStop = models.CharField(max_length=512, blank=False) + idStop = models.CharField(max_length=512, blank=True) + idInventory = models.CharField(max_length=512, blank=True) title = models.CharField(max_length=512, blank=True) description = models.CharField(max_length=1024, blank=True) comment = models.CharField(max_length=2048, blank=True) image = models.URLField(max_length=2048, blank=True) - date = models.DateTimeField(blank=True) + date = models.DateTimeField(default=datetime.datetime.now) favorite = models.BooleanField(default=False, db_index=True) def __str__(self): diff -r 5eab9718182b -r 19f3f0a7fbd7 server/ammico/serializers.py --- a/server/ammico/serializers.py Fri Mar 27 16:33:30 2015 +0100 +++ b/server/ammico/serializers.py Tue Mar 31 12:21:22 2015 +0200 @@ -1,26 +1,58 @@ +import json + +import requests from rest_framework import serializers from ammico.models import AmmicoUser, Book, Slide from ammico.utils import fetchJson +from config import URL_EXALEAD from config import URL_JAMESPOT class BookSerializer(serializers.ModelSerializer): - + class Meta: model = Book fields = ('id', 'idArticle', 'title', 'description', 'image', 'date') class SlideSerializer(serializers.ModelSerializer): details = serializers.SerializerMethodField('getStopInfo') + index = serializers.SerializerMethodField('getOrder') def getStopInfo(self, slide): - stopList = fetchJson(URL_JAMESPOT + '&f=list&o=article&type=stop&itemFormat=article') - #print (stopList) - for stops in stopList: - if (slide.idStop == stops['idStop']): - return stops + if (slide.idInventory != ""): + return extractFromMIMO(slide) + else: + return extractFromJameSpot(slide) + + def getOrder(self, slide): + return slide.book.get_slide_order().index(slide.id) class Meta: model = Slide - fields = ('id', 'book', 'idStop', 'title', 'description', 'comment', 'image', 'date', 'favorite', 'details') \ No newline at end of file + fields = ('id', 'index', 'book', 'idStop', 'idInventory', 'title', 'description', 'comment', 'image', 'date', 'favorite', 'details') + + +def extractFromMIMO(slide): + details = {} + params = {'of': 'json', 'q': 'record_inventorynumber:' + slide.idInventory} + data = requests.get(URL_EXALEAD, params=params) + results = json.loads(data.content.decode('utf-8')) + if (len(results['hits']) == 1): + for i in results['hits'][0]['metas']: + if('images' not in i): + details[i['name']] = i['value'] + else: + details['images'] = i['images'][0]['value'] + details['title'] = details.pop('name') + return details + +def extractFromJameSpot(slide): + details={} + stopList = fetchJson(URL_JAMESPOT + '&f=list&o=article&type=stop&itemFormat=article') + for stops in stopList: + if (slide.idStop == stops['idStop']): + details = stops + details['images'] = details.pop('firstImg') + details['description'] = details.pop('captionImg') + return details \ No newline at end of file