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