Hi Kumar,<br> Thank you again for the response. <br><br><div class="gmail_quote">On Thu, Nov 19, 2009 at 12:18 AM, Kumar McMillan <span dir="ltr"><<a href="mailto:kumar.mcmillan@gmail.com">kumar.mcmillan@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">On Wed, Nov 18, 2009 at 12:34 PM, Madhusudan C.S <<a href="mailto:madhusudancs@gmail.com">madhusudancs@gmail.com</a>> wrote:<br>
> The data models for our app doesn't reside in a single Python module, but<br>
> spread across several Python modules in the package called models.<br>
><br>
> Can you please tell me what should I do in this case? How should my<br>
><br>
> datafixture = GoogleDatastoreFixture(env=models, style=NamedDataStyle()) #<br>
> Note models is a package containing models in each file, for example user<br>
> model is in the module user.py.<br>
> self.data = datafixture.data(datasets.UserData)<br>
<br>
</div>ok, I see. The env keyword can be a dictionary. So you can type out<br>
every model class, like:<br>
<br>
env={'User': models.User, 'Other': other_models.Other, ...}<br>
<br>
but if that's not feasible then you'll have to make a proxy that acts<br>
like a dictionary. Something like this should work:<br>
<br>
class MultiModuleEnv(object):<br>
<br>
def __init__(self, modules):<br>
self.modules = modules<br>
<br>
def __getitem__(self, name):<br>
for m in self.modules:<br>
if hasattr(m, name):<br>
return getattr(m, name)<br>
raise KeyError("%s not found in %r" % (name, self.modules))<br>
<br>
datafixture = GoogleDatastoreFixture(env=MultiModuleEnv([models,<br>
other_models, more_models]), ...)<br></blockquote><div><br>I have exactly the same <br>
thing I get the error, <br>
<br>
======================================================================<br>
ERROR: testCreateRedirect (tests.app.soc.modules.ghop.views.models.test_task.TaskTest)<br>
----------------------------------------------------------------------<br>
Traceback (most recent call last):<br>
File
"/media/python/workspace/melange-ghop-integration/tests/app/soc/modules/ghop/views/models/test_task.py",
line 146, in setUp<br>
self.data.setup()<br>
File "/media/python/workspace/melange-ghop-integration/eggs/fixture-1.3.1-py2.5.egg/fixture/base.py", line 70, in setup<br>
for ds in iter(self.datasets)])<br>
AttributeError: class HostData has no attribute 'shared_instance'<br>
<br>I am pasting my test class's setUp method here:<br><br>def setUp(self):<br> """Set up required for the view tests.<br> """<br><br> self.view = TestView()<br> self.stubout = stubout.StubOutForTesting()<br>
self.stubout.Set(responses, 'respond', respond_raw)<br> self.stubout.Set(responses, 'errorResponse', error_raw)<br><br> # using fixtures to setup data<br> models_dict = {<br> 'UserData': models.user.User,<br>
'SiteData': models.site.Site,<br> 'SponsorData': models.sponsor.Sponsor,<br> 'HostData': models.host.Host,<br> 'TimelineData': models.timeline.Timeline,<br> 'ProgramData': models.program.Program,<br>
'OrgData': models.organization.Organization,<br> 'OrgAdminData': models.org_admin.OrgAdmin,<br> 'MentorData': models.mentor.Mentor,<br> 'StudentData': models.student.Student,<br>
}<br><br> datafixture = GoogleDatastoreFixture(env=models_dict,<br> style=NamedDataStyle())<br><br> self.data = datafixture.data(datasets.UserData, datasets.SiteData,<br>
datasets.SponsorData, datasets.HostData,<br> datasets.TimelineData, datasets.ProgramData,<br> datasets.OrgData, datasets.OrgAdminData,<br>
datasets.MentorData, datasets.MentorData)<br> self.data.setup()<br><br>And my datasets file:<br><br>__all__ = ['UserData', 'SiteData', 'SponsorData', 'HostData', 'MentorData', 'OrgData', 'OrgAdminData',<br>
'ProgramData', 'StudentData', 'TimelineData']<br><br><br>class UserData(DataSet):<br> class site_admin:<br> key_name = 'site_admin'<br> link_id = 'site_admin'<br>
account = users.User(email='<a href="mailto:site_admin@example.com">site_admin@example.com</a>')<br>
name = 'Site Admin'<br><br> class melange_admin:<br> key_name = 'melange_admin'<br> link_id = 'melange_admin'<br> account = users.User(email='<a href="mailto:melange_admin@example.com">melange_admin@example.com</a>')<br>
name = 'Melange Admin'<br><br> class melange_mentor:<br> key_name = 'melange_mentor'<br> link_id = 'melange_mentor'<br> account = users.User(email='<a href="mailto:melange_mentor@example.com">melange_mentor@example.com</a>')<br>
name = 'Melange Mentor'<br><br> class melange_student_0001:<br> key_name = 'melange_student_0001'<br> link_id = 'melange_student_0001'<br> account = users.User(email='<a href="mailto:melange_student_0001@example.com">melange_student_0001@example.com</a>')<br>
name = 'Melange Student 0001'<br><br> class melange_student_0002:<br> key_name = 'melange_student_0002'<br> link_id = 'melange_student_0002'<br> account = users.User(email='<a href="mailto:melange_student_0002@example.com">melange_student_0002@example.com</a>')<br>
name = 'Melange Student 0002'<br><br><br>class SiteData(DataSet):<br> class site:<br> key_name = 'site'<br> link_id = 'site'<br><br><br>class SponsorData(DataSet):<br> class google:<br>
key_name = 'google'<br> link_id = 'google'<br> name = 'Google Inc.'<br> short_name = 'Google'<br> founder = UserData.site_admin<br> home_page = '<a href="http://www.google.com">http://www.google.com</a>'<br>
email = '<a href="mailto:ospo@google.com">ospo@google.com</a>'<br> description = 'This is the profile for Google.'<br> contact_street = 'Some Street'<br> contact_city = 'Some City'<br>
contact_country = 'United States'<br> contact_postalcode = '12345'<br> phone = '1-555-BANANA'<br> status = 'active'<br><br><br>class HostData:<br> class google:<br> key_name = 'google/test'<br>
link_id = 'test'<br> scope = SponsorData.google<br> scope_path = 'google'<br> user = UserData.site_admin<br> given_name = 'Test'<br> surname = 'Example'<br> name_on_documents = 'Test Example'<br>
email = '<a href="mailto:test@example.com">test@example.com</a>'<br> res_street = 'Some Street'<br> res_city = 'Some City'<br> res_state = 'Some State'<br> res_country = 'United States'<br>
res_postalcode = '12345'<br> phone = '1-555-BANANA'<br> birth_date = db.DateProperty.now()<br> agreed_to_tos = True<br><br>... and it continous. I guess, this happening because of the <br>ReferenceProperty there. But I am not able to find out why<br>
this error is happening and how it must be fixed. Can you <br>please help me?<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="h5"><br>
><br>
> be rewritten. Please help me.<br>
><br>
>><br>
>> ><br>
>> > Traceback (most recent call last):<br>
>> > File<br>
>> ><br>
>> > "/media/python/workspace/melange-ghop-integration/tests/app/soc/modules/ghop/views/models/test_task.py",<br>
>> > line 130, in setUp<br>
>> > self.data.setup()<br>
>> > File<br>
>> ><br>
>> > "/media/python/workspace/melange-ghop-integration/eggs/fixture-1.3.1-py2.5.egg/fixture/base.py",<br>
>> > line 71, in setup<br>
>> > self.loader.load(self.data)<br>
>> > File<br>
>> ><br>
>> > "/media/python/workspace/melange-ghop-integration/eggs/fixture-1.3.1-py2.5.egg/fixture/loadable/loadable.py",<br>
>> > line 193, in load<br>
>> > self.wrap_in_transaction(loader, unloading=False)<br>
>> > File<br>
>> ><br>
>> > "/media/python/workspace/melange-ghop-integration/eggs/fixture-1.3.1-py2.5.egg/fixture/loadable/loadable.py",<br>
>> > line 310, in wrap_in_transaction<br>
>> > routine()<br>
>> > File<br>
>> ><br>
>> > "/media/python/workspace/melange-ghop-integration/eggs/fixture-1.3.1-py2.5.egg/fixture/loadable/loadable.py",<br>
>> > line 192, in loader<br>
>> > self.load_dataset(ds)<br>
>> > File<br>
>> ><br>
>> > "/media/python/workspace/melange-ghop-integration/eggs/fixture-1.3.1-py2.5.egg/fixture/loadable/loadable.py",<br>
>> > line 217, in load_dataset<br>
>> > self.attach_storage_medium(ds)<br>
>> > File<br>
>> ><br>
>> > "/media/python/workspace/melange-ghop-integration/eggs/fixture-1.3.1-py2.5.egg/fixture/loadable/loadable.py",<br>
>> > line 375, in attach_storage_medium<br>
>> > self.Medium, ds.meta.storable_name, ds, repr_env))<br>
>> > StorageMediaNotFound: could not find <class<br>
>> > 'fixture.loadable.google_datastore_loadable.EntityMedium'> 'User' for<br>
>> > dataset <UserData at 0xa84decc with keys ['user_0001']> in self.env<br>
>> > (<type<br>
>> > 'module'>)<br>
>> ><br>
>> > Can some one please tell me why I get this error and what I should to do<br>
>> > to<br>
>> > fix this?<br>
>> ><br>
>> ><br>
>> > --<br>
>> > Thanks and regards,<br>
>> > Madhusudan.C.S<br>
>> ><br>
>> > Blogs at: <a href="http://www.madhusudancs.info" target="_blank">www.madhusudancs.info</a><br>
>> > My Online Identity: madhusudancs<br>
>> ><br>
>> > _______________________________________________<br>
>> > testing-in-python mailing list<br>
>> > <a href="mailto:testing-in-python@lists.idyll.org">testing-in-python@lists.idyll.org</a><br>
>> > <a href="http://lists.idyll.org/listinfo/testing-in-python" target="_blank">http://lists.idyll.org/listinfo/testing-in-python</a><br>
>> ><br>
>> ><br>
><br>
><br>
><br>
> --<br>
> Thanks and regards,<br>
> Madhusudan.C.S<br>
><br>
> Blogs at: <a href="http://www.madhusudancs.info" target="_blank">www.madhusudancs.info</a><br>
> My Online Identity: madhusudancs<br>
><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Thanks and regards,<br> Madhusudan.C.S<br><br>Blogs at: <a href="http://www.madhusudancs.info">www.madhusudancs.info</a><br>My Online Identity: madhusudancs<br>