Re: Object data change approvals.

2010-02-16 Thread esatterwh...@wi.rr.com
You could use contrib.contenttypes framework to do this pretty easily
provided the models you will be working with have a similar structure;
they all have a field called 'content' for example that would be
editable.

You can have a model that is the intermediate which has a generic
foreign key which points to the object which was edited. So when
someone edits an item , the data in request.POST is used to make a new
intermediate item rather than update the item that was actually
edited.

Then a moderator can decide to apply the update or not

This would also create a history of edits on each object and make
revision control and reverting rather easy.

This means the intermediate model is really the 'Heavy Lifter' of the
setup.


On Feb 14, 10:36 pm, iliveinapark 
wrote:
> Thanks very much, Bruno, this is a pretty simple way of doing what I
> want.
>
> Now I just have to figure out to apply it generically over multiple
> levels of inheritance =/
>
> Cheers mate.
>
> On Feb 12, 10:00 pm, bruno desthuilliers
>
>  wrote:
> > On Feb 12, 11:24 am, bruno desthuilliers 
> > wrote:
>
> > (snip)
>
> > oops, forgot to actually use the custom manager:
>
> > > class MyModelRevision(models.Model):
>
> > (snip)
> >       objects =  MyModelRevisionManager()
>
> > >    class Meta:
> > >        unique_together = (('MyModel', 'published'),)

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.



Re: Object data change approvals.

2010-02-15 Thread bruno desthuilliers
On Feb 15, 5:36 am, iliveinapark 
wrote:
> Thanks very much, Bruno, this is a pretty simple way of doing what I
> want.

Q example, really. A robust working solution will probably be a bit
more involved.

> Now I just have to figure out to apply it generically over multiple
> levels of inheritance =/
>

Mmm ORMs and deep inheritance trees often don't work that well
together :-/

If it's still time, and if of course the context allow it, you might
be better refactoring as much as possible as "mixin" abstract classes.

My 2 cents.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.



Re: Object data change approvals.

2010-02-14 Thread iliveinapark
Thanks very much, Bruno, this is a pretty simple way of doing what I
want.

Now I just have to figure out to apply it generically over multiple
levels of inheritance =/

Cheers mate.

On Feb 12, 10:00 pm, bruno desthuilliers
 wrote:
> On Feb 12, 11:24 am, bruno desthuilliers wrote:
>
> (snip)
>
> oops, forgot to actually use the custom manager:
>
> > class MyModelRevision(models.Model):
>
> (snip)
>       objects =  MyModelRevisionManager()
>
>
>
> >    class Meta:
> >        unique_together = (('MyModel', 'published'),)

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.



Re: Object data change approvals.

2010-02-12 Thread bruno desthuilliers
On Feb 12, 11:24 am, bruno desthuilliers
 wrote:
(snip)

oops, forgot to actually use the custom manager:

> class MyModelRevision(models.Model):
(snip)
  objects =  MyModelRevisionManager()

>    class Meta:
>        unique_together = (('MyModel', 'published'),)

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.



Re: Object data change approvals.

2010-02-12 Thread bruno desthuilliers
On Feb 11, 11:23 pm, iliveinapark 
wrote:
> Gday all,
>
> I'm trying to find a way to have changes made to a model object
> require approval before becoming the live data on my site. I had
> thought about cloning the object, and having the clone stored as a
> draft, but making it live would require either swapping all the data
> from the draft to the original object, or changing all references to
> the original to reference the draft instead.
>
> Does anyone have any ideas on a nice way to do this

class MyModel(models.Model):
# unversionned fields lives here

   def published_revision(self):
   try:
   return self.revisions.published()[0]
   except IndexError:
   return None

class MyModelRevisionManager(models.Manager):
   use_for_related_fields = True
   def published(self):
return self.filter(published=True)

class MyModelRevision(models.Model):
mymodel = models.ForeignKey(MyModel, related_name="revisions")
published = models.BooleanField(...)

# all versionned fields here

   class Meta:
   unique_together = (('MyModel', 'published'),)


HTH

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.



Object data change approvals.

2010-02-11 Thread iliveinapark
Gday all,

I'm trying to find a way to have changes made to a model object
require approval before becoming the live data on my site. I had
thought about cloning the object, and having the clone stored as a
draft, but making it live would require either swapping all the data
from the draft to the original object, or changing all references to
the original to reference the draft instead.

Does anyone have any ideas on a nice way to do this?

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.