diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..d8f8339 --- /dev/null +++ b/README.rst @@ -0,0 +1,13 @@ +========== +django-tos +========== + +This project gives the admin the ability to reset terms of agreement with the end users. It tracks when TOS are changed and when users agree to the new TOS. + +Summary +======= + + - based flatpage + - keep track of when TOS is changed + - Users need to be informed and reagree when they relogin (custom login) + - 2 models likely (TOS table and user re-agree) \ No newline at end of file diff --git a/README.txt b/README.txt deleted file mode 100644 index e69de29..0000000 diff --git a/tos/admin.py b/tos/admin.py new file mode 100644 index 0000000..3c71a0d --- /dev/null +++ b/tos/admin.py @@ -0,0 +1,13 @@ +from django.contrib import admin + +from tos.models import TermsOfService, UserAgreement + +class TermsOfServiceAdmin(admin.ModelAdmin): + model = TermsOfService + +admin.site.register(TermsOfService, TermsOfServiceAdmin) + +class UserAgreementAdmin(admin.ModelAdmin): + model = UserAgreement + +admin.site.register(UserAgreement, UserAgreementAdmin) diff --git a/tos/models.py b/tos/models.py index e69de29..7396a79 100644 --- a/tos/models.py +++ b/tos/models.py @@ -0,0 +1,44 @@ +from django.contrib.auth.models import User +from django.contrib.flatpages import FlatPage +from django.core.exceptions import ValidationError +from django.db import models +from django.utils.translation import ugettext_lazy as _ + +class BaseModel(models.Model): + + created = models.DateTimeField(label=_('created'), auto_now_add=False, editable=False) + modified = models.DateTimeField(label=_('modified'), auto_now=False, editable=False) + + class Meta: + abstract = True + +class TermsOfService(BaseModel): + + flat_page = models.ForeignKey(FlatPage, label=_('terms of service'), related_name='flatpage') + active = models.BooleanField(_('active'), _('Only one terms of service is allowed to be active')) + + class Meta: + ordering = ('created') + verbose_name=_('Terms of Service') + verbose_name_plural=_('Terms of Service') + + def __unicode__(self): + active = 'inactive' + if self.active: + active = 'active' + return '%s: %s' % (self.created, active) + + def save(self, *args, **kwargs): + """ Ensure we're being saved properly """ + + self.objects.exclude(id=self.id).update(active=False) + + super(TermsOfService,self).save(*args, **kwargs) + +class UserAgreement(BaseModel): + + terms_of_service = models.ForeignKey(FlatPage, label=_('terms of service'), related_name='terms') + user = models.ForeignKey(User related_name='user') + + def __unicode__(self): + return self.terms_of_service \ No newline at end of file