from django.contrib.auth.models import User from modelversions import version_model class ProjectAdmin(admin.ModelAdmin): search_fields = ( "title", "participants__last_name", ) list_display = ("title", "course", "modified", "submitted", "id") filter_horizontal = ('participants', ) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "author": kwargs["queryset"] = User.objects.all().order_by('username') return super(ProjectAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def formfield_for_manytomany(self, db_field, request, **kwargs): if db_field.name == "participants": kwargs["queryset"] = User.objects.all().order_by('username') return super(ProjectAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) admin.site.register(Project, ProjectAdmin) ProjectVersion = version_model(Project)
colgrp.user_set.remove(oldp) if request and request.method == "POST" and \ (col.policy != policy or col.title != self.title): col.title = self.title col.policy = policy col.save() return col def content_metrics(self): "Do some rough heuristics on how much each author contributed" last_content = '' author_contributions = {} for v in self.versions: change = len(v.body) - len(last_content) author_contributions.setdefault(v.author,[0,0]) if change > 0: #track adds author_contributions[v.author][0] += change elif change < 0: #track deletes author_contributions[v.author][1] -= change last_content = v.body return author_contributions @property def dir(self): return dir(self) ProjectVersion = version_model(Project)
from django.db import models from modelversions import version_model #from tagging.fields import TagField # Dummy models to test versioning class ModelOne(models.Model): name = models.CharField(maxlength=25) time = models.DateTimeField(auto_now_add=True) # tag = TagField() def __getattr__(self,name): if name == 'testattr': return "Called __getattr__" else: raise AttributeError, name ModelOneVersion = version_model(ModelOne) class ModelTwo(models.Model): name = models.CharField(maxlength=25) num = models.IntegerField() ModelTwoVersion = version_model(ModelTwo) class TestParent(models.Model): name = models.CharField(maxlength=25) TestParentVersion = version_model(TestParent) class TestChild(models.Model): name = models.CharField(maxlength=25) parent = models.ForeignKey(TestParent) TestChildVersion = version_model(TestChild)