--- 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):
--- 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