Is there a reason you couldn't save yourself the duplicated data by
inheriting Product, but setting is_active=False until the time that all
requirements are met and it actually becomes a live downloadable product?

On Fri, Oct 9, 2009 at 4:09 AM, Godshall <[email protected]> wrote:

>
> I'm developing a store that will offer user contributed downloadable
> products.  I'm still very early in the process, but I have satchmo
> installed properly and  I'm working through the source code and
> documentation to figure out the best approach for this kind of service
> (without hacking the satchmo source hopefully).
>
> Here is a general overview of how I envision this working:
> 1.  User submits content for review (needs to support multiple file
> uploads).
> 2.  Admin reviews the submission and either approves, rejects, or
> instructs the user what steps need to be taken for approval.
> 3.  If approved, the submission will be added as a Custom Downloadable
> Product , and files will be automatically added to a zip file.
> 4.  User content now available for purchase.
>
> The two approaches I have seen for creating a custom product include
> (1) Inheriting the Product model (http://thisismedium.com/tech/satchmo-
> diaries-part-one/) and (2) Establishing a OneToOne relationship with
> the Product model (http://www.satchmoproject.com/docs/svn/custom-
> product.html).  For a traditional store I would probably just use
> model inheritance, but seeing that not all user submitted content will
> become products for this project, the OneToOne relationship seems to
> make the most sense.  Here's an example of how I think the models
> should look at this point:
>
> class UserContent(models.Model):
>        name = models.CharField(max_length=255)
>        user = models.ForeignKey(User, related_name='submitted_content')
>        short_description = models.TextField(max_length=200)
>        description = models.TextField()
>        #ill probably use a separate file attachment model
>        ...
> from product.models import Product
>
> #created when the UserContent object is approved
> class UserDownloadableProduct(models.Model):
>        product = models.OneToOneField(Product, verbose_name=_('Product'),
> primary_key=True)
>        content = models.ForeignKey(UserContent)
>        file = FileField(_("File"), upload_to=_protected_dir) #zip
> file
>        ...
>
> As you can see, even though not every UserContent object will become a
> UserDownloadableProduct, I have to collect some of the same data as
> the satchmo Product model (name, short_description, description, etc)
> so that I can eventually create a Product with that data for those
> that are approved.  This is where the model inheritance approach seems
> to have an advantage (so that I'm not duplicating data), but as I
> described earlier, it seems like a bad idea to create a Product for
> every user submitted content (since some of them will be rejected).
>
> Anyways, I would appreciate some feedback about the direction I'm
> heading with this project.  Am I taking the best approach for creating
> a custom downloadable product?  For UserDownloadableProduct, should I
> just reuse most of the DownloadableProduct model code that is packaged
> with satchmo?  Is there anything else I need to consider?  Any
> feedback or insight would be appreciated.
>
> Thanks!
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Satchmo users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/satchmo-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to