from patchwork.forms import MultiplePatchForm
-from patchwork.models import Bundle, Project, State
+from patchwork.models import Bundle, Project, BundlePatch, State, UserProfile
from django.conf import settings
from django.shortcuts import render_to_response, get_object_or_404
class Order(object):
order_map = {
- 'date': 'date',
- 'name': 'name',
- 'state': 'state__ordering',
- 'submitter': 'submitter__name'
+ 'date': 'date',
+ 'name': 'name',
+ 'state': 'state__ordering',
+ 'submitter': 'submitter__name',
+ 'delegate': 'delegate__username',
}
- default_order = 'date'
+ default_order = ('date', True)
- def __init__(self, str = None):
+ def __init__(self, str = None, editable = False):
self.reversed = False
+ self.editable = editable
+
+ if self.editable:
+ return
if str is None or str == '':
- self.order = self.default_order
+ (self.order, self.reversed) = self.default_order
return
reversed = False
reversed = True
if str not in self.order_map.keys():
- self.order = self.default_order
+ (self.order, self.reversed) = self.default_order
return
self.order = str
return q
bundle_actions = ['create', 'add', 'remove']
-def set_bundle(user, action, data, patches, context):
+def set_bundle(user, project, action, data, patches, context):
# set up the bundle
bundle = None
if action == 'create':
+ bundle_name = data['bundle_name'].strip()
+ if not bundle_name:
+ return ['No bundle name was specified']
+
bundle = Bundle(owner = user, project = project,
- name = data['bundle_name'])
+ name = bundle_name)
bundle.save()
- str = 'added to new bundle "%s"' % bundle.name
- auth_required = False
+ context.add_message("Bundle %s created" % bundle.name)
elif action =='add':
bundle = get_object_or_404(Bundle, id = data['bundle_id'])
- str = 'added to bundle "%s"' % bundle.name
- auth_required = False
elif action =='remove':
bundle = get_object_or_404(Bundle, id = data['removed_bundle_id'])
- str = 'removed from bundle "%s"' % bundle.name
- auth_required = False
if not bundle:
return ['no such bundle']
for patch in patches:
if action == 'create' or action == 'add':
- bundle.patches.add(patch)
+ bundlepatch_count = BundlePatch.objects.filter(bundle = bundle,
+ patch = patch).count()
+ if bundlepatch_count == 0:
+ bundle.append_patch(patch)
+ context.add_message("Patch '%s' added to bundle %s" % \
+ (patch.name, bundle.name))
+ else:
+ context.add_message("Patch '%s' already in bundle %s" % \
+ (patch.name, bundle.name))
elif action == 'remove':
- bundle.patches.remove(patch)
-
- if len(patches) > 0:
- if len(patches) == 1:
- str = 'patch ' + str
- else:
- str = 'patches ' + str
- context.add_message(str)
+ try:
+ bp = BundlePatch.objects.get(bundle = bundle, patch = patch)
+ bp.delete()
+ context.add_message("Patch '%s' removed from bundle %s\n" % \
+ (patch.name, bundle.name))
+ except Exception:
+ pass
bundle.save()
return []
-def set_patches(user, action, data, patches, context):
+def set_patches(user, project, action, data, patches, context):
errors = []
- form = MultiplePatchForm(data = data)
+ form = MultiplePatchForm(project = project, data = data)
try:
project = Project.objects.get(id = data['project'])
str = ''
- print "action: ", action
-
# this may be a bundle action, which doesn't modify a patch. in this
# case, don't require a valid form, or patch editing permissions
if action in bundle_actions:
- errors = set_bundle(user, action, data, patches, context)
+ errors = set_bundle(user, project, action, data, patches, context)
return (errors, form)
if not form.is_valid():
str = 'archived'
elif action == 'unarchive':
- patch.archived = True
+ patch.archived = False
patch.save()
str = 'un-archived'
context.add_message(str)
return (errors, form)
+
+def userprofile_register_callback(user):
+ profile = UserProfile(user = user)
+ profile.save()
+