from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.contrib.sites.models import Site
-from django.conf import settings
from patchwork.parser import hash_patch
import re
import datetime, time
-import string
import random
try:
def __unicode__(self):
return self.name
+ def is_editable(self, user):
+ if not user.is_authenticated():
+ return False
+ return self in user.get_profile().maintainer_projects.all()
+
class UserProfile(models.Model):
user = models.ForeignKey(User, unique = True)
primary_project = models.ForeignKey(Project, null = True, blank = True)
def __unicode__(self):
return self.name()
+def _user_created_callback(sender, created, instance, **kwargs):
+ if not created:
+ return
+ profile = UserProfile(user = instance)
+ profile.save()
+
+models.signals.post_save.connect(_user_created_callback, sender = User)
+
class State(models.Model):
name = models.CharField(max_length = 100)
ordering = models.IntegerField(unique = True)
if self.submitter.user == user or self.delegate == user:
return True
- profile = user.get_profile()
- return self.project in user.get_profile().maintainer_projects.all()
-
- def form(self):
- f = PatchForm(instance = self, prefix = self.id)
- return f
+ return self.project.is_editable(user)
def filename(self):
fname_re = re.compile('[^-_A-Za-z0-9\.]+')
else:
postscript = ''
- responses = False
for comment in Comment.objects.filter(patch = self) \
.exclude(msgid = self.msgid):
body += comment.patch_responses()
return self.patches.all().count()
def ordered_patches(self):
- return self.patches.order_by('bundlepatch__order');
+ return self.patches.order_by('bundlepatch__order')
def append_patch(self, patch):
# todo: use the aggregate queries in django 1.1