コード例 #1
0
 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)
コード例 #2
0
 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())
コード例 #3
0
 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
コード例 #4
0
 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())
コード例 #5
0
ファイル: music.py プロジェクト: anttihirvonen/demozoo
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,
	})
コード例 #6
0
ファイル: competitions.py プロジェクト: anttihirvonen/demozoo
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,
        })