linked_objects = OrderedDict({
'benefit': BackendSponsorshipLevelBenefitManager(),
})
+ allow_copy_previous = True
class Meta:
model = SponsorshipLevel
fields = ['levelname', 'urlname', 'levelcost', 'available', 'instantbuy',
self.fields['paymentmethods'].label_from_instance = lambda x: x.internaldescription
+ @classmethod
+ def copy_from_conference(self, targetconf, sourceconf, idlist):
+ for id in idlist:
+ level = SponsorshipLevel.objects.get(pk=id, conference=sourceconf)
+ if SponsorshipLevel.objects.filter(conference=targetconf, urlname=level.urlname).exists():
+ yield 'A sponsorship level with urlname {0} already exists.'.format(level.urlname)
+ continue
+
+ # Get a separate instance that we will modify
+ newlevel = SponsorshipLevel.objects.get(pk=id, conference=sourceconf)
+ # Set pk to None to make a copy
+ newlevel.pk = None
+ newlevel.conference = targetconf
+ newlevel.contract = None
+ newlevel.save()
+ for pm in level.paymentmethods.all():
+ newlevel.paymentmethods.add(pm)
+ newlevel.save()
+ for b in level.sponsorshipbenefit_set.all():
+ b.pk = None
+ b.level = newlevel
+ b.save()
+
class BackendSponsorshipContractForm(BackendForm):
list_fields = ['contractname', ]
file_fields = ['contractpdf', ]
resp.write(f.read())
return resp
-@login_required
-@transaction.atomic
-def admin_copy_level(request, levelid):
- if not request.user.is_superuser:
- raise Exception("Sorry, at this point only superusers can do this")
-
- level = get_object_or_404(SponsorshipLevel, id=levelid)
-
- if request.method == 'POST':
- form = AdminCopySponsorshipLevelForm(data=request.POST)
- if form.is_valid():
- targetconf = Conference.objects.get(pk=form.data['targetconference'])
- newlevel = get_object_or_404(SponsorshipLevel, id=levelid)
- # Set pk to none to copy object
- newlevel.pk = None
- if targetconf == level.conference:
- newlevel.levelname = 'Copy of {0}'.format(level.levelname)
- newlevel.urlname = 'copy_of_{0}'.format(level.urlname)
- else:
- newlevel.conference = targetconf
- newlevel.save()
- for pm in level.paymentmethods.all():
- newlevel.paymentmethods.add(pm)
- newlevel.save()
- for b in level.sponsorshipbenefit_set.all():
- b.pk = None
- b.level = newlevel
- b.save()
- return HttpResponseRedirect("/admin/confsponsor/sponsorshiplevel/{0}/".format(newlevel.id))
- else:
- form = AdminCopySponsorshipLevelForm()
-
- return render(request, 'confsponsor/admin_copy_level.html', {
- 'form': form,
- 'sourcelevel': level,
- })
-
@login_required
@user_passes_test_or_error(lambda u: u.is_superuser)
def sponsor_admin_test_vat(request, confurlname):
# Conference admin
url(r'^admin/confreg/_email/$', postgresqleu.confreg.views.admin_email),
url(r'^admin/confreg/_email_session_speaker/([,\d]+)/$', postgresqleu.confreg.views.admin_email_session),
- url(r'^admin/confsponsor/sponsorshiplevel/(\d+)/copy/$', postgresqleu.confsponsor.views.admin_copy_level),
# Legacy event URLs
url(r'^events/(register|bulkpay|feedback|schedule|sessions|talkvote|speakerprofile|callforpapers|reports)/([^/]+)/(.*)?$', postgresqleu.confreg.views.legacy_redirect),
+++ /dev/null
-{% extends "admin/base_site.html" %}
-{% block title %}Copy sponsorship level{% endblock %}
-{% block content%}
-<h1>Copy sponsorship level</h1>
-
-<form method="post" action=".">{% csrf_token %}
-<table>
-<tr>
- <td><b>Source conference</b></td>
- <td>{{sourcelevel.conference}}</td>
-</tr>
-<tr>
- <td><b>Source level</b></td>
- <td>{{sourcelevel}}</td>
-</tr>
-{{form.as_table}}
-<tr>
- <td colspan="2">
- <input type="submit" value="Copy level">
- </td>
-</tr>
-</table>
-</form>
-{%endblock%}