Merge branch 'apigen'
authorSapan Bhatia <gwsapan@gmail.com>
Wed, 11 Jun 2014 20:58:58 +0000 (16:58 -0400)
committerSapan Bhatia <gwsapan@gmail.com>
Wed, 11 Jun 2014 20:58:58 +0000 (16:58 -0400)
1  2 
planetstack/apigen/api.template.py
planetstack/planetstack/urls.py

@@@ -2,6 -2,7 +2,7 @@@ from rest_framework.decorators import a
  from rest_framework.response import Response
  from rest_framework.reverse import reverse
  from rest_framework import serializers
+ from rest_framework import generics
  from core.models import *
  from django.forms import widgets
  
@@@ -38,12 -39,12 +39,12 @@@ class {{ object.camel }}Serializer(seri
        {% if ref.multi %}
        {{ ref.plural }} = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='{{ ref }}-detail')
        {% else %}
-       {{ ref }} = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='{{ ref }}-detail')
+       {{ ref }} = serializers.HyperlinkedRelatedField(read_only=True, view_name='{{ ref }}-detail')
        {% endif %}
        {% endfor %}
        class Meta:
-               model = {{ object }}
-               fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %})
+               model = {{ object.camel }}
+               fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %}{% for ref in object.refs %}{%if ref.multi %}'{{ ref.plural }}'{% else %}'{{ ref }}'{% endif %},{% endfor %})
  {% endfor %}
  
  serializerLookUp = { 
  {% for object in generator.all %}
  
  class {{ object.camel }}List(generics.ListCreateAPIView):
-     queryset = {{ object.camel }}.objects.select_related.all()
+     queryset = {{ object.camel }}.objects.select_related().all()
      serializer_class = {{ object.camel }}Serializer
 +    
 +    def get_queryset(self):
 +        return {{ object.camel }}.select_by_user(self.request.user)
 +
 +    def create(self, request, *args, **kwargs):
 +        #obj = {{ object.camel }}().update(request.DATA)
 +        obj = self.get_object()
 +        obj.caller = request.user
 +        if obj.can_update(request.user):
 +            return super({{ object.camel }}List, self).create(request, *args, **kwargs)
 +        else:
 +            return Response(status=status.HTTP_400_BAD_REQUEST)
  
  class {{ object.camel }}Detail(generics.RetrieveUpdateDestroyAPIView):
-     queryset = {{ object.camel }}.objects.select_related.all()
+     queryset = {{ object.camel }}.objects.select_related().all()
      serializer_class = {{ object.camel }}Serializer
 +    
 +    def get_queryset(self):
 +        return {{ object.camel }}.select_by_user(self.request.user)
 +
 +    def update(self, request, *args, **kwargs):
 +        obj = self.get_object()
 +        if obj.can_update(request.user):
 +            return super({{ object.camel }}Detail, self).update(request, *args, **kwargs)
 +        else:
 +            return Response(status=status.HTTP_400_BAD_REQUEST)
 +
 +    def destroy(self, request, *args, **kwargs):
 +        obj = self.get_object()
 +        if obj.can_update(request.user):
 +            return super({{ object.camel }}Detail, self).destroy(request, *args, **kwargs)
 +        else:
 +            return Response(status=status.HTTP_400_BAD_REQUEST)
 +     
  
  {% endfor %}
@@@ -16,23 -16,16 +16,23 @@@ from core.views.slices import SliceList
  from core.views.slice_privileges import SlicePrivilegeList, SlicePrivilegeDetail
  from core.views.slivers import SliverList, SliverDetail
  from core.views.tags import TagList, TagDetail
- from core.views.users import UserList, UserDetail
+ from genapi import UserList, UserDetail
  from core.views.legacyapi import LegacyXMLRPC
 +#from core.views.analytics import AnalyticsAjaxView
  from core.models import *
  from core.api_root import api_root
  from rest_framework import generics
 -from core.plus.sites import SitePlus
 +from core.dashboard.sites import SitePlus
 +from django.http import HttpResponseRedirect
  
  admin.site = SitePlus()
  admin.autodiscover()
  
 +def redirect_to_apache(request):
 +     """ bounce a request back to the apache server that is running on the machine """
 +     apache_url = "http://%s%s" % (request.META['HOSTNAME'], request.path)
 +     return HttpResponseRedirect(apache_url)
 +
  urlpatterns = patterns('',
      # Examples:
      # url(r'^$', 'planetstack.views.home', name='home'),
@@@ -47,7 -40,7 +47,7 @@@
      #url(r'^profile/home', 'core.views.home'),
  
      url(r'^plstackapi/$', api_root),
 -    
 +
      url(r'^plstackapi/deployments/$', DeploymentList.as_view(), name='deployment-list'),
      url(r'^plstackapi/deployments/(?P<pk>[a-zA-Z0-9\-]+)/$', DeploymentDetail.as_view(), name='deployment-detail'),
  
@@@ -96,9 -89,6 +96,9 @@@
  
      url(r'^legacyapi/$', 'core.views.legacyapi.LegacyXMLRPC', name='xmlrpc'),
  
 +#    url(r'^analytics/(?P<name>\w+)/$', AnalyticsAjaxView.as_view(), name="analytics"),
 +
 +    url(r'^files/', redirect_to_apache),
  
      #Adding in rest_framework urls
      url(r'^plstackapi/', include('rest_framework.urls', namespace='rest_framework')),