| author | rougeronj |
| Tue, 31 Mar 2015 12:21:22 +0200 | |
| changeset 45 | 19f3f0a7fbd7 |
| parent 38 | 96a7d3e4d073 |
| child 63 | bd7bcfc86232 |
| permissions | -rw-r--r-- |
|
45
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
1 |
import json |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
2 |
|
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
3 |
import requests |
| 13 | 4 |
from rest_framework import serializers |
|
22
609fa711b324
add URL_JAMESPOT in settings - add requirements.txt to build the virtual env
rougeronj
parents:
20
diff
changeset
|
5 |
|
| 38 | 6 |
from ammico.models import AmmicoUser, Book, Slide |
|
18
4d3f67ddbe72
return Stop information fetch from jamestop api in the Slide info - id to idBook and idSlide to avoid confusion
rougeronj
parents:
14
diff
changeset
|
7 |
from ammico.utils import fetchJson |
|
45
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
8 |
from config import URL_EXALEAD |
| 38 | 9 |
from config import URL_JAMESPOT |
|
22
609fa711b324
add URL_JAMESPOT in settings - add requirements.txt to build the virtual env
rougeronj
parents:
20
diff
changeset
|
10 |
|
| 13 | 11 |
|
12 |
class BookSerializer(serializers.ModelSerializer): |
|
|
45
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
13 |
|
| 13 | 14 |
class Meta: |
15 |
model = Book |
|
16 |
fields = ('id', 'idArticle', 'title', 'description', 'image', 'date') |
|
17 |
||
18 |
class SlideSerializer(serializers.ModelSerializer): |
|
|
18
4d3f67ddbe72
return Stop information fetch from jamestop api in the Slide info - id to idBook and idSlide to avoid confusion
rougeronj
parents:
14
diff
changeset
|
19 |
details = serializers.SerializerMethodField('getStopInfo') |
|
45
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
20 |
index = serializers.SerializerMethodField('getOrder') |
|
18
4d3f67ddbe72
return Stop information fetch from jamestop api in the Slide info - id to idBook and idSlide to avoid confusion
rougeronj
parents:
14
diff
changeset
|
21 |
|
|
4d3f67ddbe72
return Stop information fetch from jamestop api in the Slide info - id to idBook and idSlide to avoid confusion
rougeronj
parents:
14
diff
changeset
|
22 |
def getStopInfo(self, slide): |
|
45
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
23 |
if (slide.idInventory != ""): |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
24 |
return extractFromMIMO(slide) |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
25 |
else: |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
26 |
return extractFromJameSpot(slide) |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
27 |
|
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
28 |
def getOrder(self, slide): |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
29 |
return slide.book.get_slide_order().index(slide.id) |
| 13 | 30 |
|
31 |
class Meta: |
|
32 |
model = Slide |
|
|
45
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
33 |
fields = ('id', 'index', 'book', 'idStop', 'idInventory', 'title', 'description', 'comment', 'image', 'date', 'favorite', 'details') |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
34 |
|
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
35 |
|
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
36 |
def extractFromMIMO(slide): |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
37 |
details = {} |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
38 |
params = {'of': 'json', 'q': 'record_inventorynumber:' + slide.idInventory} |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
39 |
data = requests.get(URL_EXALEAD, params=params) |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
40 |
results = json.loads(data.content.decode('utf-8')) |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
41 |
if (len(results['hits']) == 1): |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
42 |
for i in results['hits'][0]['metas']: |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
43 |
if('images' not in i): |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
44 |
details[i['name']] = i['value'] |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
45 |
else: |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
46 |
details['images'] = i['images'][0]['value'] |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
47 |
details['title'] = details.pop('name') |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
48 |
return details |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
49 |
|
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
50 |
def extractFromJameSpot(slide): |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
51 |
details={} |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
52 |
stopList = fetchJson(URL_JAMESPOT + '&f=list&o=article&type=stop&itemFormat=article') |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
53 |
for stops in stopList: |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
54 |
if (slide.idStop == stops['idStop']): |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
55 |
details = stops |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
56 |
details['images'] = details.pop('firstImg') |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
57 |
details['description'] = details.pop('captionImg') |
|
19f3f0a7fbd7
add idInventory for slides saved from a research and not coming from Jamespot
rougeronj
parents:
38
diff
changeset
|
58 |
return details |