# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
from datetime import datetime, timedelta
+import json
from django.conf import settings
from django.contrib.sites.models import Site
from django.core.urlresolvers import reverse
-from piston.handler import BaseHandler
+from piston.handler import AnonymousBaseHandler, BaseHandler
from piston.utils import rc
from api.helpers import timestamp
from api.models import Deleted
+from catalogue.forms import BookImportForm
from catalogue.models import Book, Tag, BookMedia, Fragment
return rc.NOT_FOUND
-class BooksHandler(BaseHandler):
+class AnonymousBooksHandler(AnonymousBaseHandler):
""" Main handler for Book objects.
Responsible for lists of Book objects
else:
return rc.NOT_FOUND
+ def create(self, request, tags, top_level=False):
+ return 'aaa'
+
@classmethod
def media(self, book):
""" Returns all media for a book. """
return book.media.all()
+class BooksHandler(BaseHandler):
+ model = Book
+ fields = ('slug', 'title')
+ anonymous = AnonymousBooksHandler
+
+ def create(self, request, tags, top_level=False):
+ if not request.user.has_perm('catalogue.add_book'):
+ return rc.FORBIDDEN
+
+ data = json.loads(request.POST.get('data'))
+ form = BookImportForm(data)
+ if form.is_valid():
+ form.save()
+ return rc.CREATED
+ else:
+ return rc.NOT_FOUND
+
# add categorized tags fields for Book
def _tags_getter(category):
@classmethod
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
+from piston.authentication import OAuthAuthentication
from piston.resource import Resource
from api import handlers
+auth = OAuthAuthentication(realm="Wolne Lektury")
+
book_changes_resource = Resource(handler=handlers.BookChangesHandler)
tag_changes_resource = Resource(handler=handlers.TagChangesHandler)
changes_resource = Resource(handler=handlers.ChangesHandler)
-book_list_resource = Resource(handler=handlers.BooksHandler)
+book_list_resource = Resource(handler=handlers.BooksHandler, authentication=auth)
+#book_list_resource = Resource(handler=handlers.BooksHandler)
book_resource = Resource(handler=handlers.BookDetailHandler)
tag_list_resource = Resource(handler=handlers.TagsHandler)
fragment_list_resource = Resource(handler=handlers.FragmentsHandler)
-urlpatterns = patterns('',
+urlpatterns = patterns(
+ 'piston.authentication',
+ url(r'^oauth/request_token/$', 'oauth_request_token'),
+ url(r'^oauth/authorize/$', 'oauth_user_auth'),
+ url(r'^oauth/access_token/$', 'oauth_access_token'),
+
+) + patterns('',
url(r'^$', 'django.views.generic.simple.direct_to_template',
{'template': 'api/main.html'}),
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
from django import forms
+from django.core.files.base import ContentFile
from django.utils.translation import ugettext_lazy as _
from slughifi import slughifi
class BookImportForm(forms.Form):
- book_xml_file = forms.FileField()
+ book_xml_file = forms.FileField(required=False)
+ book_xml = forms.CharField(required=False)
+
+ def clean(self):
+ if not self.cleaned_data['book_xml_file']:
+ if self.cleaned_data['book_xml']:
+ self.cleaned_data['book_xml_file'] = \
+ ContentFile(self.cleaned_data['book_xml'].encode('utf-8'))
+ else:
+ raise forms.ValidationError(_("Please supply an XML."))
+ return super(BookImportForm, self).clean()
def save(self, commit=True, **kwargs):
return Book.from_xml_file(self.cleaned_data['book_xml_file'], overwrite=True, **kwargs)
path.join(PROJECT_DIR, 'templates'),
]
-LOGIN_URL = '/uzytkownicy/zaloguj/'
+LOGIN_URL = '/uzytkownicy/login/'
LOGIN_REDIRECT_URL = '/'
{% if extra_info.source_url %}
<li><a href="{{ extra_info.source_url }}">{% trans "Source of the book" %}</a></li>
{% endif %}
+ {% if extra_info.about %}
+ <li><a href="{{ extra_info.about }}">{% trans "Book on the Editor's Platform" %}</a></li>
+ {% endif %}
{% if book.gazeta_link %}
<li><a href="{{ book.gazeta_link }}">{% trans "Book description on Lektury.Gazeta.pl" %}</a></li>
{% endif %}
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head>
+ <title>Authorize Token</title>
+ </head>
+ <body>
+ <h1>Authorize Token</h1>
+
+ <form action="{% url piston.authentication.oauth_user_auth %}" method="POST">
+ {{ form.as_table }}
+ <button type="submit">Confirm</button>
+ </form>
+
+ </body>
+</html>
--- /dev/null
+<form method="POST" action="">
+ {% csrf_token %}
+ {{ form }}
+<input type="submit" />
+</form>
url(r'^uzytkownicy/zaloguj/$', 'catalogue.views.login', name='login'),
url(r'^uzytkownicy/wyloguj/$', 'catalogue.views.logout_then_redirect', name='logout'),
url(r'^uzytkownicy/utworz/$', 'catalogue.views.register', name='register'),
+ url(r'^uzytkownicy/login/$', 'django.contrib.auth.views.login', name='simple_login'),
# API
(r'^api/', include('api.urls')),