def project_hub_join_approve(request, project_slug, outsourced_project_slug): hub_request = get_object_or_404(HubRequest, project__slug=outsourced_project_slug, project_hub__slug=project_slug) outsourced_project = hub_request.project if request.POST: try: outsourced_project.outsource = hub_request.project_hub outsourced_project.anyone_submit = False outsourced_project.save() _hub_request = copy.copy(hub_request) hub_request.delete() messages.success( request, _("You added '%(project)s' to the " "'%(project_hub)s' project hub") % { 'project': outsourced_project, 'project_hub': hub_request.project_hub }) # ActionLog & Notification nt = 'project_hub_join_approved' context = {'hub_request': hub_request, 'sender': request.user} # Logging action action_logging(request.user, [outsourced_project, hub_request.project_hub], nt, context=context) if settings.ENABLE_NOTICES: # Send notification for maintainers, coordinators and the user notification.send(outsourced_project.maintainers.all(), nt, context) except IntegrityError, e: transaction.rollback() logger.error("Something weird happened: %s" % str(e)) project_outsourced_changed.send(sender=hub_request.project_hub)
def project_hub_join_deny(request, project_slug, outsourced_project_slug): hub_request = get_object_or_404(HubRequest, project__slug=outsourced_project_slug, project_hub__slug=project_slug) outsourced_project = hub_request.project if request.POST: try: _hub_request = copy.copy(hub_request) hub_request.delete() messages.info( request, _("You rejected the request of " "'%(project)s' to join the '%(project_hub)s' project hub") % { 'project': outsourced_project, 'project_hub': _hub_request.project_hub }) # ActionLog & Notification # TODO: Use signals nt = 'project_hub_join_denied' context = {'hub_request': hub_request, 'sender': request.user} # Logging action action_logging(request.user, [outsourced_project, _hub_request.project_hub], nt, context=context) if settings.ENABLE_NOTICES: # Send notification for maintainers, coordinators and the user notification.send(outsourced_project.maintainers.all(), nt, context) except IntegrityError, e: transaction.rollback() logger.error("Something weird happened: %s" % e.message) project_outsourced_changed.send(sender=hub_request.project_hub)
def project_hub_join_approve(request, project_slug, outsourced_project_slug): hub_request = get_object_or_404(HubRequest, project__slug=outsourced_project_slug, project_hub__slug=project_slug) outsourced_project = hub_request.project if request.POST: try: outsourced_project.outsource = hub_request.project_hub outsourced_project.anyone_submit = False outsourced_project.save() _hub_request = copy.copy(hub_request) hub_request.delete() messages.success(request, _("You added '%(project)s' to the " "'%(project_hub)s' project hub")% { 'project':outsourced_project, 'project_hub':hub_request.project_hub}) # ActionLog & Notification nt = 'project_hub_join_approved' context = {'hub_request': hub_request, 'sender': request.user} # Logging action action_logging(request.user, [outsourced_project, hub_request.project_hub], nt, context=context) if settings.ENABLE_NOTICES: # Send notification for maintainers, coordinators and the user notification.send(outsourced_project.maintainers.all(), nt, context) except IntegrityError, e: transaction.rollback() logger.error("Something weird happened: %s" % str(e)) project_outsourced_changed.send(sender=hub_request.project_hub)
def project_hub_join_deny(request, project_slug, outsourced_project_slug): hub_request = get_object_or_404(HubRequest, project__slug=outsourced_project_slug, project_hub__slug=project_slug) outsourced_project = hub_request.project if request.POST: try: _hub_request = copy.copy(hub_request) hub_request.delete() messages.info(request, _("You rejected the request of " "'%(project)s' to join the '%(project_hub)s' project hub")% { 'project': outsourced_project, 'project_hub':_hub_request.project_hub}) # ActionLog & Notification # TODO: Use signals nt = 'project_hub_join_denied' context = {'hub_request': hub_request, 'sender': request.user} # Logging action action_logging(request.user, [outsourced_project, _hub_request.project_hub], nt, context=context) if settings.ENABLE_NOTICES: # Send notification for maintainers, coordinators and the user notification.send(outsourced_project.maintainers.all(), nt, context) except IntegrityError, e: transaction.rollback() logger.error("Something weird happened: %s" % e.message) project_outsourced_changed.send(sender=hub_request.project_hub)
def project_access_control_edit(request, project_slug): project = get_object_or_404(Project, slug=project_slug) outsourced = project.outsource if request.method == 'POST': form = ProjectAccessControlForm(request.POST, instance=project, user=request.user) if form.is_valid(): access_control = form.cleaned_data['access_control'] project_type = form.cleaned_data['project_type'] project = form.save(commit=False) project_hub = project.outsource hub_request = None # TODO call signal project_outsourced_changed if 'outsourced' != project_type: project.outsource = None else: check = ProjectPermission(request.user) if not (check.maintain(project) and check.maintain(project_hub)): # If the user is not maintainer of both projects it does # not associate the outsource project directly. # It does a request instead. try: hub_request = HubRequest.objects.get(project=project) except ObjectDoesNotExist: hub_request = HubRequest(project=project) hub_request.project_hub = project_hub hub_request.user = request.user hub_request.save() messages.success( request, _("Requested to join the '%s' project hub.") % project_hub) # ActionLog & Notification # TODO: Use signals nt = 'project_hub_join_requested' context = { 'hub_request': hub_request, 'sender': request.user } # Logging action action_logging(request.user, [project, project_hub], nt, context=context) if settings.ENABLE_NOTICES: # Send notification for project hub maintainers notification.send(project_hub.maintainers.all(), nt, context) return HttpResponseRedirect( reverse('project_detail', args=[project.slug]), ) if 'hub' == project_type: project.is_hub = True else: project.is_hub = False if ('free_for_all' == access_control and project_type != "outsourced"): project.anyone_submit = True else: project.anyone_submit = False # Check if cla form exists before sending the signal if 'limited_access' == access_control and \ form.cleaned_data.has_key('cla_license_text'): # send signal to save CLA signals.cla_create.send( sender='project_access_control_edit_view', project=project, license_text=form.cleaned_data['cla_license_text'], request=request) project.save() form.save_m2m() handle_stats_on_access_control_edit(project) project_outsourced_changed.send(sender=project_hub) if outsourced and not project.outsource: # Drop resources from all-resources release of the hub project update_all_release(outsourced) # Logging action nt = 'project_hub_left' context = { 'project': project, 'project_hub': outsourced, 'sender': request.user } action_logging(request.user, [project, outsourced], nt, context=context) return HttpResponseRedirect( reverse('project_detail', args=[project.slug]), ) else: form = ProjectAccessControlForm(instance=project, user=request.user) return render_to_response('projects/project_form_access_control.html', { 'project_permission': True, 'project': project, 'form': form, }, context_instance=RequestContext(request))
#team.coordinators.all())), nt, context) result = { 'style': 'undo', 'title': _('Undo'), 'outsourced_project_slug': outsourced_project_slug, 'url': url, 'error': None, } except Project.DoesNotExist: outsourced_project = get_object_or_404(Project, slug=outsourced_project_slug) outsourced_project.outsource = project outsourced_project.save() result = { 'style': 'connect', 'title': _('Disassociate'), 'outsourced_project_slug': outsourced_project_slug, 'url': url, 'error': None, } except Exception, e: return json_error(e.message, result) project_outsourced_changed.send(sender=project) return json_result(result)
#team.coordinators.all())), nt, context) result = { 'style': 'undo', 'title': _('Undo'), 'outsourced_project_slug': outsourced_project_slug, 'url': url, 'error': None, } except Project.DoesNotExist: outsourced_project = get_object_or_404(Project, slug=outsourced_project_slug) outsourced_project.outsource = project outsourced_project.save() result = { 'style': 'connect', 'title': _('Disassociate'), 'outsourced_project_slug': outsourced_project_slug, 'url': url, 'error': None, } except Exception, e: return json_error(e.message, result) project_outsourced_changed.send(sender=project) return json_result(result)