def get_topic_or_404(self, request=None): try: if request is not None: topic = utils.get_topic_from_request(request) if topic == None: raise Topic.DoesNotExist() return topic else: return Topic.objects.get( ontology_as_mod=self._meta.urlconf_namespace) except Topic.DoesNotExist: raise Http404()
def process_request(self, request): regex = re.compile(r'api/([a-zA-Z0-9_\-.]+)/([a-zA-Z0-9_\-]+)/') urlparts = regex.findall(request.path) if urlparts: # Get the topic that match to this url. topic = get_topic_from_request(request) if topic == None: raise Http404(Topic.DoesNotExist()) else: # This will automaticly create the API if needed # or failed if the topic is unknown try: getattr(topics, topic.ontology_as_mod) except AttributeError as e: raise Http404(e) return None