def process_request(self, request): if Reload.required(): Reload.unschedule() metaman.build_classes() # NOTE: works with apache and wsgi in daemon mode only # http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode # TODO: find a workaround to reload django development server server = request.META.get('wsgi.file_wrapper', None) if server is not None and server.__module__ == 'django.core.servers.basehttp': print "\n" print "You must restart the development server for changes to take effect" print "\n" else : # Commented here. This approach will restart only current process # becouse other daemons will have Reload.required() = False # Touching the WSGI_FILE should restart all daemons instead. (At least I # hope :) Need testing) #import signal, os #os.kill(os.getpid(), signal.SIGINT) import os from settings import WSGI_FILE # simulating touch (should restart all daemons processes) os.utime(WSGI_FILE, None) return
def process_request(self, request): some_class_builded = metaman.build_classes() original_urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF) if some_class_builded or self.first_time: self.first_time = False metaurls = patterns('', # (r'^$', 'meta.views.index'), # # objects direct access. TODO: Disable in future? # NOTE: removing following line cause some urls to not # work properly (r'^', include(metaman.urls)), # (r'^meta/', include(metaman.urls)), ) meta.urls.urlpatterns = metaurls if 'django.contrib.admin' in settings.INSTALLED_APPS: # force admin app to rebuild its urls meta.urls.urlpatterns += patterns('', (r'^admin/', include(admin.site.urls)), ) # group urls meta.urls.urlpatterns += patterns('', ('', include(original_urlconf)), ) # set group home url # meta.urls.urlpatterns += set_home_url('meta.views.index', '$') meta.urls.urlpatterns += attach_urls(include(metaman.urls)) resolver = get_resolver('meta.urls') resolver._populate() request.urlconf = 'meta.urls' return
def __unicode__(self): return self.field.metaType.name + " > " + self.field.name + " > " + self.name class Meta: verbose_name_plural = "Properties" class Relation(models.Model): content_type_origin = models.ForeignKey(ContentType, related_name="rel_origin") object_id_origin = models.PositiveIntegerField() content_object_origin = generic.GenericForeignKey(ct_field='content_type_origin', fk_field='object_id_origin') # content_type_destination = models.ForeignKey(MetaType, related_name="rel_destination") content_type_destination = models.ForeignKey(ContentType, related_name="rel_destination") object_id_destination = models.PositiveIntegerField() content_object_destination = generic.GenericForeignKey(ct_field='content_type_destination', fk_field='object_id_detination') class BaseType(models.Model): class Meta: abstract = True app_label = "objects" try: metaman.build_classes() except DatabaseError: # this should only happen on first syncdb # when MetaMan table doesn't still exists pass