[TIP] Please help for StorageMediaNotFound

Madhusudan C.S madhusudancs at gmail.com
Wed Nov 18 12:04:34 PST 2009


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/testing-in-python/attachments/20091119/e7100e40/attachment.htm>


More information about the testing-in-python mailing list