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