--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/api/__init__.py Mon Sep 09 12:40:47 2013 +0200
@@ -0,0 +1,1 @@
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/api/resources/__init__.py Mon Sep 09 12:40:47 2013 +0200
@@ -0,0 +1,4 @@
+from image import ImageResource
+from fragment import FragmentResource
+
+__all__ = ["ImageResource", "FragmentResource"]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/api/resources/fragment.py Mon Sep 09 12:40:47 2013 +0200
@@ -0,0 +1,27 @@
+from egonomy.models import Fragment
+from tastypie import fields
+from tastypie.resources import ModelResource
+
+
+
+class FragmentResource(ModelResource):
+ image = fields.ForeignKey("egonomy.api.resources.image.ImageResource", 'image')
+ class Meta:
+ allowed_methods = ['get']
+ resource_name = 'fragments'
+ queryset = Fragment.objects.all()
+# filtering = {
+# 'tags' : ALL_WITH_RELATIONS,
+# 'title' : ALL,
+# }
+
+# def get_object_list(self, request):
+# return Image.objects.select_related('info', 'metadata').all()
+
+# def prepend_urls(self):
+# return [
+# url(r"^(?P<resource_name>%s)/recommended/$" % self._meta.resource_name, self.wrap_view('get_recommended'), name="api_contents_recommended"),
+# url(r"^(?P<resource_name>%s)/(?P<iri_id>[\w\d_.-]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
+# ]
+
+
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/api/resources/image.py Mon Sep 09 12:40:47 2013 +0200
@@ -0,0 +1,61 @@
+from django.conf.urls import url
+from egonomy.models import Image, ImageMetadata, ImageInfo, Fragment
+from tastypie import fields
+from tastypie.constants import ALL, ALL_WITH_RELATIONS
+from tastypie.resources import ModelResource
+import logging
+from egonomy.api.resources.fragment import FragmentResource
+
+logger = logging.getLogger(__name__)
+
+
+class ImageMetadataResource(ModelResource):
+ class Meta:
+ allowed_methods = ['get']
+ resource_name = 'metadata'
+ queryset = ImageMetadata.objects.all()
+ filtering = {
+ 'titre' : ALL,
+ }
+
+
+class ImageInfoResource(ModelResource):
+ class Meta:
+ allowed_methods = ['get']
+ resource_name = 'info'
+ queryset = ImageInfo.objects.all()
+
+
+class ImageResource(ModelResource):
+
+ metadata = fields.ForeignKey(ImageMetadataResource, 'metadata', full=True)
+ info = fields.ForeignKey(ImageInfoResource, 'info', full=True)
+
+ class Meta:
+ allowed_methods = ['get']
+ resource_name = 'images'
+ queryset = Image.objects.select_related('info', 'metadata').all()
+ filtering = {
+ 'metadata' : ALL_WITH_RELATIONS,
+ }
+ ordering = ['id']
+
+ def prepend_urls(self):
+ return [
+ url(r"^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/fragments/$" % self._meta.resource_name, self.wrap_view('get_image_framents'), name="api_get_image_framents"),
+ ]
+
+ def get_image_framents(self, request, **kwargs):
+ self.method_check(request, allowed=['get'])
+
+ frag_res = FragmentResource()
+ fragments = [frag_res.full_dehydrate(frag_res.build_bundle(obj=f, request=request)) for f in Fragment.objects.filter(image=Image.objects.get(id=kwargs["pk"]))]
+ object_list = {
+ 'fragments': fragments,
+ }
+
+ self.log_throttled_access(request)
+
+ return self.create_response(request, object_list)
+
+
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/api/urls.py Mon Sep 09 12:40:47 2013 +0200
@@ -0,0 +1,12 @@
+from django.conf.urls import patterns, include
+from egonomy.api.resources import ImageResource, FragmentResource
+from tastypie.api import Api
+
+v1_api = Api(api_name='1.0')
+v1_api.register(ImageResource())
+v1_api.register(FragmentResource())
+
+
+urlpatterns = patterns('',
+ (r'', include(v1_api.urls)),
+)
--- a/src/egonomy/settings.py Mon Sep 02 14:41:44 2013 +0200
+++ b/src/egonomy/settings.py Mon Sep 09 12:40:47 2013 +0200
@@ -143,6 +143,7 @@
'registration',
'sorl.thumbnail',
'haystack',
+ 'tastypie',
)
ugettext = lambda s: s
@@ -183,6 +184,7 @@
HAYSTACK_SIGNAL_PROCESSOR = 'egonomy.search_indexes.EgonomySignalProcessor'
ACCOUNT_ACTIVATION_DAYS = 7
+TASTYPIE_DEFAULT_FORMATS = ['json']
from .config import * #@UnusedWildImport
--- a/src/egonomy/urls.py Mon Sep 02 14:41:44 2013 +0200
+++ b/src/egonomy/urls.py Mon Sep 09 12:40:47 2013 +0200
@@ -38,6 +38,7 @@
# login logout view
url(r'^login/', 'django.contrib.auth.views.login', name='login'),
url(r'^logout/', 'django.contrib.auth.views.logout', name='logout'),
+ (r'^api/', include('egonomy.api.urls')),
(r'^accounts/', include('registration.backends.default.urls')),
)
urlpatterns += staticfiles_urlpatterns()
--- a/virtualenv/res/lib/lib_create_env.py Mon Sep 02 14:41:44 2013 +0200
+++ b/virtualenv/res/lib/lib_create_env.py Mon Sep 09 12:40:47 2013 +0200
@@ -42,7 +42,7 @@
'PYTHON-DATEUTIL' : {'setup':'python-dateutil', 'url':'http://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.1.tar.gz', 'local': 'python-dateutil-2.1.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
'PYYAML' : {'setup':'pyyaml', 'url':'http://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.10.tar.gz', 'local': 'PyYAML-3.10.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
'PYTHON-DIGEST' : {'setup':'python-digest', 'url':'http://pypi.python.org/packages/source/p/python-digest/python-digest-1.7.tar.gz', 'local': 'python-digest-1.7.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
- 'DJANGO-TASTYPIE' : {'setup':'django-tastypie', 'url':'https://github.com/toastdriven/django-tastypie/archive/v0.9.12.tar.gz', 'local': 'django-tastypie-0.9.12.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
+ 'DJANGO-TASTYPIE' : {'setup':'django-tastypie', 'url':'https://github.com/toastdriven/django-tastypie/archive/v0.10.0.tar.gz', 'local': 'django-tastypie-0.10.0.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
'ISODATE' : {'setup': 'isodate', 'url': 'https://github.com/gweis/isodate/archive/0.4.9.tar.gz', 'local': 'isodate-0.4.9.tar.gz', 'install': {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
'HTML5LIB' : {'setup': 'html5lib', 'url': 'https://html5lib.googlecode.com/files/html5lib-0.95.tar.gz', 'local': 'html5lib-0.95.tar.gz', 'install': {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
'RDFLIB' : {'setup': 'rdflib', 'url': 'https://nodeload.github.com/RDFLib/rdflib/tar.gz/master', 'local': 'rdflib-2.4.0.tar.gz', 'install': {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
Binary file virtualenv/res/src/django-tastypie-0.10.0.tar.gz has changed
Binary file virtualenv/res/src/django-tastypie-0.9.12.tar.gz has changed