def __init__(self, data=None, files=None, instance=None, prefix=None): self.model = SoundtrackLink if instance is None: self.instance = Production() else: self.instance = instance qs = self.instance.soundtrack_links.order_by('position') super(BaseProductionSoundtrackLinkFormSet, self).__init__(data, files, prefix=prefix, queryset=qs)
def __init__(self, *args, **kwargs): self.instance = kwargs.pop('instance', Production()) super(CreateProductionForm, self).__init__(*args, **kwargs) self.fields['title'] = forms.CharField() self.fields['byline'] = BylineField(required=False, label='By') self.fields['release_date'] = FuzzyDateField( required=False, help_text='(As accurately as you know it - e.g. "1996", "Mar 2010")' ) self.fields['types'] = ProductionTypeMultipleChoiceField( required=False, label='Type', queryset=ProductionType.featured_types()) self.fields['platforms'] = forms.ModelMultipleChoiceField( required=False, label='Platform', queryset=Platform.objects.all())
def commit(self): if not self.production: self.production = Production( title=self.title, updated_at=datetime.datetime.now(), ) # Ugh. We really ought to come up with a nice way of setting supertype # in advance of setting types, rather than having to save a second time # once the types are in place... self.production.save() self.production.types = self.types_to_set self.production.save() if self.byline: self.byline.commit(self.production) return self.production
def __init__(self, *args, **kwargs): self.instance = kwargs.pop('instance', Production()) super(BaseProductionEditCoreDetailsForm, self).__init__(*args, **kwargs) self.fields['title'] = forms.CharField(initial=self.instance.title) self.fields['byline'] = BylineField( required=False, initial=self.instance.byline_search(), label='By') self.fields['release_date'] = FuzzyDateField( required=False, initial=self.instance.release_date, help_text='(As accurately as you know it - e.g. "1996", "Mar 2010")' ) self.fields['platforms'] = forms.ModelMultipleChoiceField( required=False, label='Platform', initial=[ platform.id for platform in self.instance.platforms.all() ], queryset=Platform.objects.all())
def create(request): if request.method == 'POST': production = Production(updated_at=datetime.datetime.now()) form = CreateMusicForm(request.POST, instance=production) download_link_formset = ProductionDownloadLinkFormSet(request.POST, instance=production) if form.is_valid() and download_link_formset.is_valid(): form.save() download_link_formset.save() form.log_creation(request.user) return HttpResponseRedirect(production.get_absolute_url()) else: form = CreateMusicForm(initial={ 'byline': Byline.from_releaser_id(request.GET.get('releaser_id')) }) download_link_formset = ProductionDownloadLinkFormSet() return render(request, 'music/create.html', { 'form': form, 'download_link_formset': download_link_formset, })
def import_text(request, competition_id): if not request.user.is_staff: return redirect('competition_edit', args=[competition_id]) competition = get_object_or_404(Competition, id=competition_id) if request.POST: current_highest_position = CompetitionPlacing.objects.filter( competition=competition).aggregate( Max('position'))['position__max'] next_position = (current_highest_position or 0) + 1 format = request.POST['format'] if format == 'tsv': rows = result_parser.tsv(request.POST['results']) elif format == 'pm1': rows = result_parser.partymeister_v1(request.POST['results']) elif format == 'pm2': rows = result_parser.partymeister_v2(request.POST['results']) elif format == 'wuhu': rows = result_parser.wuhu(request.POST['results']) else: return redirect('competition_edit', args=[competition_id]) for placing, title, byline, score in rows: if not title: continue production = Production(release_date=competition.shown_date, updated_at=datetime.datetime.now(), has_bonafide_edits=False, title=title) production.save() # assign an ID so that associations work if competition.platform: production.platforms = [competition.platform] if competition.production_type: production.types = [competition.production_type] if byline: production.byline_string = byline production.supertype = production.inferred_supertype production.save() placing = CompetitionPlacing( production=production, competition=competition, ranking=placing, position=next_position, score=score, ) next_position += 1 placing.save() Edit.objects.create( action_type='add_competition_placing', focus=competition, focus2=production, description=( u"Added competition placing for %s in %s competition" % (production.title, competition)), user=request.user) return redirect('competition_edit', args=[competition_id]) else: return render(request, 'competitions/import_text.html', { 'competition': competition, })