def model_view(self, request, model_databrowse, url): # If the object ID wasn't provided, redirect to the model page, # Which is one level up. if url is None: return http.HttpResponseRedirect(urlparse.urljoin(request.path, "../")) easy_model = EasyModel(model_databrowse.site, model_databrowse.model) obj = easy_model.object_by_pk(url) return render_to_response("object_detail.html", {"object": obj, "root_url": model_databrowse.site.root_url})
def field_view(self, request, field, value=None): easy_model = EasyModel(self.site, self.model) easy_field = easy_model.field(field.name) if value is not None: obj_list = easy_model.objects(**{field.name: value}) else: obj_list = [v[field.name] for v in \ self.model._default_manager.distinct().order_by(field.name).\ values(field.name)] # add paging numitems = request.GET.get('items') items_per_page = [25,50,100] if numitems and numitems.isdigit() and int(numitems)>0: paginator = Paginator(obj_list, numitems) else: # fall back to default paginator = Paginator(obj_list, items_per_page[0]) page = request.GET.get('page') try: obj_list_page = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. obj_list_page = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page. obj_list_page = paginator.page(paginator.num_pages) if value is not None: return render_to_response( 'databrowse/fieldchoice_detail.html', { 'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'value': value, 'object_list': obj_list_page, 'items_per_page': items_per_page, } ) return render_to_response( 'databrowse/fieldchoice_list.html', { 'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'object_list': obj_list_page, 'items_per_page': items_per_page, } )
def model_view(self, request, model_databrowse, url): # If the object ID wasn't provided, redirect to the model page, # Which is one level up. if url is None: return http.HttpResponseRedirect( urlparse.urljoin(request.path, '../') ) easy_model = EasyModel( model_databrowse.site, model_databrowse.model ) try: obj = easy_model.object_by_pk(url) except ObjectDoesNotExist, e: raise http.Http404('Id not found')
def calendar_view(self, request, field, year=None, month=None, day=None): easy_model = EasyModel(self.site, self.model) root_url = self.site.root_url if day is not None: return DayView.as_view( year=year, month=month, day=day, date_field=field.name, queryset=easy_model.get_query_set(), root_url=root_url, model=easy_model, field=field )(request) elif month is not None: return MonthView.as_view( year=year, month=month, date_field=field.name, queryset=easy_model.get_query_set(), root_url=root_url, model=easy_model, field=field )(request) elif year is not None: return YearView.as_view( year=year, date_field=field.name, queryset=easy_model.get_query_set(), root_url=root_url, model=easy_model, field=field )(request) else: return IndexView.as_view( date_field=field.name, queryset=easy_model.get_query_set(), root_url=root_url, model=easy_model, field=field )(request) assert False, ('%s, %s, %s, %s' % (field, year, month, day))
def main_view(self, request): easy_model = EasyModel(self.site, self.model) html_snippets = mark_safe( u'\n'.join([p.model_index_html( request, self.model, self.site ) for p in self.plugins.values()]) ) obj_list = easy_model.objects() numitems = request.GET.get('items') items_per_page = [25, 50, 100] if numitems and numitems.isdigit() and int(numitems) > 0: paginator = Paginator(obj_list, numitems) else: # fall back to default paginator = Paginator(obj_list, items_per_page[0]) page = request.GET.get('page') try: obj_list_page = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. obj_list_page = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page. obj_list_page = paginator.page(paginator.num_pages) return render_to_response( 'databrowse/model_detail.html', { 'model': easy_model, 'root_url': self.site.root_url, 'plugin_html': html_snippets, 'object_list': obj_list_page, 'items_per_page': items_per_page, } )
def model_view(self, request, model_databrowse, url): # If the object ID wasn't provided, redirect to the model page, # Which is one level up. if url is None: return http.HttpResponseRedirect( urlparse.urljoin(request.path, '../') ) easy_model = EasyModel( model_databrowse.site, model_databrowse.model ) try: obj = easy_model.object_by_pk(url) except ObjectDoesNotExist: raise http.Http404('Id not found') except ValueError: raise http.Http404('Invalid format key provided') return render(request, 'databrowse/object_detail.html', { 'object': obj, 'root_url': model_databrowse.site.root_url } )
def test_url(self): em = EasyModel(django_databrowse.site, SomeModel) em.site.root_url = "root/" self.assertEqual(em.url(), u'root/django_databrowse/somemodel/')
def test_model_databrowse(self): em = EasyModel(django_databrowse.site, SomeModel) self.assertEqual(em.model_databrowse(), DefaultModelDatabrowse)
def test_field(self): em = EasyModel(django_databrowse.site, SomeModel) self.assertIsInstance(em.field("some_field"), EasyField) self.assertEqual(em.field("hello"), None)
def test_fields(self): em = EasyModel(django_databrowse.site, SomeModel) self.assertIsInstance(em.fields(), list)
def test_manager(self): em = EasyModel(django_databrowse.site, SomeModel) self.assertIsInstance(em.objects(), EasyQuerySet)
def test_repr(self): em = EasyModel(django_databrowse.site, SomeModel) self.assertEqual(em.__repr__(), "<EasyModel for SomeModel>")
def test_repr(self): instance = SomeModel.objects.create() ei = EasyInstance(EasyModel(django_databrowse.site, SomeModel), instance) self.assertEqual(ei.__repr__(), "<EasyInstance for SomeModel (1)>")
def test_repr(self): em = EasyModel(django_databrowse.site, SomeModel) field = models.CharField(max_length=2, name="Hello") value, label = "a", "azerty" ec = EasyChoice(em, field, value, label) self.assertEqual(ec.__repr__(), "<EasyChoice for SomeModel.Hello>")
def test_repr(self): em = EasyModel(django_databrowse.site, SomeModel) field = EasyField(em, models.CharField(max_length=50, name="hello")) self.assertEqual(field.__repr__(), '<EasyField for SomeModel.hello>')
def test_model_inheritance_no_child(self): instance = SomeModel.objects.create(some_field='hello') ei = EasyInstance(EasyModel(django_databrowse.site, SomeModel), instance) self.assertEqual(list(ei.related_objects()), [])
def index(self, request): m_list = [EasyModel(self, m) for m in self.registry.keys()] return render_to_response('databrowse/homepage.html', { 'model_list': m_list, 'root_url': self.root_url })