Hi Kumar,<br><br><div class="gmail_quote">On Thu, Nov 19, 2009 at 2:04 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;">
Every one of your dataset classes must descend from DataSet. Your<br>
class HostData does not which is why you got the error.<br>
<div><div></div><div class="h5"><br></div></div></blockquote><div>Yeah understood now. My tests are running well along with fixture. Fixture<br>is awesome. Thanks for the wonderful tool. Thanks for all the help too. <br>
Worth investing time to get it up and running. I am reaping the benefits now.<br> <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 class="h5">
On Wed, Nov 18, 2009 at 2:04 PM, Madhusudan C.S <<a href="mailto:madhusudancs@gmail.com">madhusudancs@gmail.com</a>> wrote:<br>
> Hi Kumar,<br>
> Thank you again for the response.<br>
><br>
> On Thu, Nov 19, 2009 at 12:18 AM, Kumar McMillan <<a href="mailto:kumar.mcmillan@gmail.com">kumar.mcmillan@gmail.com</a>><br>
> wrote:<br>
>><br>
>> On Wed, Nov 18, 2009 at 12:34 PM, Madhusudan C.S <<a href="mailto:madhusudancs@gmail.com">madhusudancs@gmail.com</a>><br>
>> wrote:<br>
>> > The data models for our app doesn't reside in a single Python module,<br>
>> > 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,<br>
>> > style=NamedDataStyle()) #<br>
>> > Note models is a package containing models in each file, for example<br>
>> > user<br>
>> > model is in the module user.py.<br>
>> > self.data = datafixture.data(datasets.UserData)<br>
>><br>
>> 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>
><br>
> I have exactly the same<br>
> thing I get the error,<br>
><br>
> ======================================================================<br>
> ERROR: testCreateRedirect<br>
> (tests.app.soc.modules.ghop.views.models.test_task.TaskTest)<br>
> ----------------------------------------------------------------------<br>
> Traceback (most recent call last):<br>
> File<br>
> "/media/python/workspace/melange-ghop-integration/tests/app/soc/modules/ghop/views/models/test_task.py",<br>
> line 146, in setUp<br>
> self.data.setup()<br>
> File<br>
> "/media/python/workspace/melange-ghop-integration/eggs/fixture-1.3.1-py2.5.egg/fixture/base.py",<br>
> 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,<br>
> 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',<br>
> '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" target="_blank">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>
>><br>
>> ><br>
>> > be rewritten. Please help me.<br>
>> ><br>
>> >><br>
>> >> ><br>
>> >> > Traceback (most recent call last):<br>
>> >> > File<br>
>> >> ><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>
>> >> ><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>
>> >> ><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>
>> >> ><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>
>> >> ><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>
>> >> ><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>
>> >> ><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<br>
>> >> > 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>
><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>