server/ammico/views.py
author rougeronj
Tue, 17 Mar 2015 16:34:23 +0100
changeset 14 4d27fbc3f9df
parent 13 08f34bbc70ee
child 17 cf07ed692810
permissions -rw-r--r--
Succed to get the books from our api server and print them dynamically
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
     1
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
     2
from django.http import HttpResponse
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
     3
import requests
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
     4
import json
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
     5
from datetime import datetime
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
     6
from django.utils.dateparse import parse_datetime
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
     7
from django.contrib.auth.models import User
14
4d27fbc3f9df Succed to get the books from our api server and print them dynamically
rougeronj
parents: 13
diff changeset
     8
from .models import Book, AmmicoUser, Slide
4d27fbc3f9df Succed to get the books from our api server and print them dynamically
rougeronj
parents: 13
diff changeset
     9
from .serializers import BookSerializer, SlideSerializer
13
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    10
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    11
from rest_framework.views import APIView
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    12
from rest_framework.response import Response
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    13
from rest_framework import authentication, permissions
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    14
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    15
def populateUser(request):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    16
    usermail = request.GET["usermail"]
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    17
    user = AmmicoUser.objects.get(user=User.objects.get(email=usermail))
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    18
    data = {"user": usermail, "idUser": user.idUser}
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    19
    populateVisite(user)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    20
    return HttpResponse(content=json.dumps(data), content_type='application/json')
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    21
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    22
def populateVisite(user):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    23
    # send request with usermail to get the visites of this user and add it to the database 
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    24
    #r = requests.get('http://fui-ammico.jamespot.pro/api/api.php?&k=6c8bfcea247e8a5841288269887d88f0&d=2016-01-31&m=EXT-IRI&v=2.0&f=get&o=article&idArticle=169')
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    25
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    26
    #simulate the request
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    27
    r = requests.get('http://fui-ammico.jamespot.pro/api/api.php?&k=6c8bfcea247e8a5841288269887d88f0&d=2016-01-31&m=EXT-IRI&v=2.0&o=article&f=list&idUser='+user.idUser)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    28
    visites = json.loads(r.content)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    29
    
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    30
    for visite in visites['VAL']:
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    31
        r = requests.get('http://fui-ammico.jamespot.pro/api/api.php?&k=6c8bfcea247e8a5841288269887d88f0&d=2016-01-31&m=EXT-IRI&v=2.0&o=article&f=get&idArticle='+visite['idArticle'])
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    32
        visiteInfo = json.loads(r.content)['VAL']
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    33
        book, _ = Book.objects.get_or_create(
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    34
            user=user, 
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    35
            idArticle=visiteInfo['idArticle'],
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    36
            title=visiteInfo['title'],
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    37
            description=visiteInfo['description'],
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    38
            image=visiteInfo['image'],
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    39
            date=parse_datetime(visiteInfo['dateCreation'])
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    40
        )
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    41
        populateSlide(json.loads(visiteInfo['steps']), book)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    42
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    43
def populateSlide(steps, book):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    44
    for step in steps:
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    45
        if (step['stop'] != None and step['stop'] != ''):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    46
            
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    47
            if 'comment' in step:
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    48
                comment = step['comment']
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    49
            else:
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    50
                comment = ""
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    51
            
14
4d27fbc3f9df Succed to get the books from our api server and print them dynamically
rougeronj
parents: 13
diff changeset
    52
            print (datetime.strptime(step['DATE'] + " " + step['TIME'], "%d/%m/%Y %H:%M:%S"))
13
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    53
            
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    54
            Slide.objects.get_or_create(
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    55
                book=book,
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    56
                idStop=step['stop'],
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    57
                comment=comment,
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    58
                date=parse_datetime(str(datetime.strptime(step['DATE'] + " " + step['TIME'], "%d/%m/%Y %H:%M:%S")))
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    59
            )
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    60
            
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    61
class ListBooks(APIView):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    62
    """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    63
    Views to list all books.
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    64
    """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    65
    #authentication_classes = (authentication.TokenAuthentication,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    66
    #permission_classes = (permissions.IsAdminUser,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    67
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    68
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    69
    def get(self, request, format=None):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    70
        """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    71
        Return a list of all Books.
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    72
        """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    73
        books = Book.objects.all()
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    74
        serializer = BookSerializer(books, many=True)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    75
        return Response(serializer.data)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    76
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    77
class InfoBook(APIView):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    78
    """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    79
    View to get book informations.
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    80
    """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    81
    #authentication_classes = (authentication.TokenAuthentication,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    82
    #permission_classes = (permissions.IsAdminUser,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    83
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    84
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    85
    def get(self, request, id):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    86
        try:
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    87
            book = Book.objects.get(id=id)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    88
        except Book.DoesNotExist:
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    89
            return HttpResponse(status=404)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    90
        
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    91
        serializer = BookSerializer(book)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    92
        return Response(serializer.data)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    93
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    94
class ListSlides(APIView):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    95
    """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    96
    Views to list all books.
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    97
    """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    98
    #authentication_classes = (authentication.TokenAuthentication,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
    99
    #permission_classes = (permissions.IsAdminUser,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   100
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   101
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   102
    def get(self, request, format=None):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   103
        """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   104
        Return a list of all Books.
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   105
        """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   106
        slides = Slide.objects.all()
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   107
        serializer = SlideSerializer(slides, many=True)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   108
        return Response(serializer.data)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   109
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   110
class InfoSlide(APIView):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   111
    """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   112
    View to get book informations.
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   113
    """
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   114
    #authentication_classes = (authentication.TokenAuthentication,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   115
    #permission_classes = (permissions.IsAdminUser,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   116
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   117
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   118
    def get(self, request, id):
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   119
        try:
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   120
            slide = Slide.objects.get(id=id)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   121
        except Slide.DoesNotExist:
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   122
            return HttpResponse(status=404)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   123
        
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   124
        serializer = SlideSerializer(slide)
08f34bbc70ee set up django rest framework
rougeronj
parents:
diff changeset
   125
        return Response(serializer.data)