Browse Source

Adpatation of views and urls for django-polymorphic

Fabs 10 years ago
parent
commit
838dd3e9ef

+ 9 - 4
coin/configuration/models.py

@@ -5,14 +5,18 @@ from coin.offers.models import OfferSubscription
 
 class Configuration(PolymorphicModel):
 
-    offersubscription = models.OneToOneField(OfferSubscription, blank=True, null=True, related_name='configuration')
+    offersubscription = models.OneToOneField(OfferSubscription, blank=True, 
+                                             null=True,
+                                             related_name='configuration')
 
     @staticmethod
     def get_configurations_choices_list():
         """
-        Génère automatiquement la liste de choix possibles en fonction des classes enfants de Configuration
+        Génère automatiquement la liste de choix possibles en fonction
+        des classes enfants de Configuration
         """
-        return tuple((x().__class__.__name__,x()._meta.verbose_name) for x in Configuration.__subclasses__())
+        return tuple((x().__class__.__name__,x()._meta.verbose_name) 
+            for x in Configuration.__subclasses__())
     
     def model_name(self):
         return self.__class__.__name__
@@ -22,7 +26,8 @@ class Configuration(PolymorphicModel):
 
     def get_absolute_url(self):
         from django.core.urlresolvers import reverse
-        return reverse('%s:details' % self.get_url_namespace(), args=[str(self.id)])
+        return reverse('%s:details' % self.get_url_namespace(), 
+                       args=[str(self.id)])
 
     def get_url_namespace(self):
         if self.url_namespace:

+ 2 - 1
coin/members/templates/members/subscriptions.html

@@ -18,7 +18,8 @@
             <td>{{ subscription.offer.type }}</td>
             <td>{{ subscription.offer.name }}</td>
             <td>{{ subscription.subscription_date }}</td>
-            <td><a href="{% url 'subscription:configuration-redirect' subscription.pk %}">Show/edit configuration</a></td>
+            <td>{% if subscription.configuration %}<a href="{% url subscription.configuration.get_url_namespace|add:":details" id=subscription.configuration.id %}">Show/edit configuration</a>{% endif %}</td>
+            <!-- <td><a href="{% url 'subscription:configuration-redirect' subscription.pk %}">Show/edit configuration</a></td> -->
         </tr>
         {% endfor %}
     </tbody>

+ 2 - 2
coin/vpn/urls.py

@@ -5,6 +5,6 @@ urlpatterns = patterns(
     '',
     # This is part of the generic configuration interface (the "name" is
     # the same as the "backend_name" of the model).
-    url(r'^([0-9]+)$', VPNView.as_view(template_name="vpn/vpn.html"), name="openvpn_ldap"),
-    url(r'^password/(?P<vpn_id>.+)$', generate_password, name="generate_password"),
+    url(r'^(?P<id>\d+)$', VPNView.as_view(template_name="vpn/vpn.html"), name="details"),
+    url(r'^password/(?P<id>\d+)$', generate_password, name="generate_password"),
 )

+ 6 - 7
coin/vpn/views.py

@@ -6,17 +6,16 @@ from coin.vpn.models import VPNConfiguration
 
 
 class VPNView(DetailView):
- def get_object(self):
-        return get_object_or_404(VPNConfiguration, pk=self.args[0],
-                                 administrative_subscription__member__user=self.request.user)
+    def get_object(self):
+        return get_object_or_404(VPNConfiguration, pk=self.kwargs.get("id"),
+                                 offersubscription__member__user=self.request.user)
 
-
-def generate_password(request, vpn_id):
+def generate_password(request, id):
     """This generates a random password, saves it in hashed form, and returns
     it to the user in cleartext.
     """
-    vpn = get_object_or_404(VPNConfiguration, pk=vpn_id,
-                            administrative_subscription__member__user=request.user)
+    vpn = get_object_or_404(VPNConfiguration, pk=id,
+                            offersubscription__member__user=request.user)
     # This function has nothing to here, but it's convenient.
     password = User.objects.make_random_password()
     vpn.password = password