fork download
  1. def add_edit_music(request,user_id,music_id=None,from_album='0',album_id=None):
  2. if music_id:
  3. # For update this view is called
  4. music = get_object_or_404(UserSong, pk=music_id)
  5. print("for update")
  6. else:
  7. # For adding this view is called
  8. music = UserSong()
  9. print("here")
  10.  
  11.  
  12. if music.pk is not None:
  13. # If music_id already exists in db
  14.  
  15. # genre = music.genre.all().values_list('name',flat=True)
  16. genre = music.genre.all()
  17. # language = music.language.all().values_list('name',flat=True)
  18. language = music.language.all()
  19.  
  20. pass
  21. else:
  22. genre = []
  23. language = []
  24.  
  25. form = MusicForm(request.POST or None,request.FILES or None,initial={'genre': genre,
  26. 'language':language},instance=music)
  27.  
  28.  
  29. # check whether it's valid:
  30. if request.POST and form.is_valid():
  31. print("vlaid ")
  32. print("form.cleaned_data['genre']",type(form.cleaned_data['genre'][0]))
  33. model_instance = form.save(user_id,commit=True)
  34.  
  35. sound = AudioSegment.from_file(model_instance.song_file, format="mp3")
  36. model_instance.duration = (len(sound)/1000)
  37. model_instance.slug_usersong = slugify("{0}{1}".format(model_instance.title,model_instance.id))
  38. model_instance.save() # This is overrided, see MusicForm class
  39.  
  40.  
  41. if model_instance.is_paid and model_instance.is_public:
  42. product_item = Product.objects.create(inventory=form.cleaned_data['inventory'], sub_inventorys=form.cleaned_data['inventory'],
  43. user_id = user_id, sku="blah", song_file = model_instance.song_file.url,
  44. title=model_instance.title, genre=model_instance.genre.all(),
  45. language=model_instance.language.all(), price = model_instance.price,
  46. description=model_instance.description, composer=model_instance.composer,
  47. release_date=model_instance.release_date, record_label= model_instance.record_label,
  48. buylink=model_instance.buylink, image=model_instance.image.url,
  49. status=model_instance.status)
  50. product_item.save()
  51.  
  52.  
  53. if from_album == '0':
  54. # add_edit_music view triggered not from add_album form
  55. return redirect(reverse('show_music',args=(user_id,)))
  56. else:
  57. #add_edit_music view triggered from add_album_form
  58.  
  59. if album_id == '0':
  60. # album_id == '0' means album is not yet saved in database
  61. return redirect(reverse('album_add_step_2',args=(user_id,album_id,)))
  62. else:
  63. # album_id != '0' means album is already saved
  64. return redirect(reverse('album_add_step_2',args=(user_id,)))
  65.  
  66.  
  67. return render(request, 'songdewUser/music_new.html', {'form': form})
  68.  
  69.  
  70.  
  71.  
  72.  
  73. class MusicForm(forms.ModelForm):
  74.  
  75. # queryset = Genre.objects.all()
  76. # GENRE_OPTIONS =( (i.name,i.name) for i in queryset)
  77.  
  78. # queryset = Language.objects.all()
  79. # LANGUAGE_OPTIONS =( (i.name,i.name) for i in queryset)
  80.  
  81. # queryset = UserProfile.objects.filter(user__is_type='art')
  82. # ARTIST_OPTIONS = ( ( '{0}{1}'.format(i.first_name,i.last_name),'{0}{1}'.format(i.first_name,i.last_name)) for i in queryset)
  83.  
  84.  
  85. image = forms.ImageField()
  86. title = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'title'}))
  87. description = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control','placeholder':'description'}))
  88. genre = forms.ModelMultipleChoiceField(queryset=Genre.objects.all())
  89. language = forms.ModelMultipleChoiceField(queryset=Language.objects.all())
  90.  
  91. composer = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'composer'}))
  92. tags = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'tags'}))
  93. is_public = forms.BooleanField(required=False,widget=forms.CheckboxInput())
  94. is_downloadable = forms.BooleanField(required=False,widget=forms.CheckboxInput())
  95. release_date = forms.DateField(widget=forms.SelectDateWidget(years=[y for y in range(1930,2050)]))
  96. record_label = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'record label'}))
  97. buylink = forms.CharField(required=False,widget=forms.TextInput(attrs={'class':'form-control','placeholder':'buy link'}))
  98. is_paid = forms.BooleanField(required=False,widget=forms.CheckboxInput())
  99. price = forms.IntegerField(required=False)
  100. is_album = forms.BooleanField(required=False,widget=forms.CheckboxInput())
  101. youtube_url = forms.CharField(required=False,widget=forms.TextInput(attrs={'class':'form-control','placeholder':'youtube url'}))
  102. song_file = forms.FileInput()
  103. artist = forms.ModelMultipleChoiceField(queryset=UserProfile.objects.filter(user__is_type='art'))
  104. inventory = forms.IntegerField(required=False)
  105. status = forms.BooleanField(required=False,widget=forms.CheckboxInput())
  106.  
  107.  
  108. class Meta:
  109. model = UserSong
  110. fields = ('song_file','title','description','genre','language','composer','tags','is_public','youtube_url',
  111. 'is_downloadable','release_date','buylink','is_paid','price','is_album','image','status','artist','record_label',)
  112.  
  113.  
  114. def save(self,*args, commit=True):
  115. instance = super(MusicForm, self).save(commit=False)
  116. if not isinstance(instance.created_date,datetime):
  117. instance.created_date = datetime.now()
  118. instance.user = User.objects.get(pk=args[0])
  119.  
  120. instance.updated_date = datetime.now()
  121.  
  122.  
  123. if commit:
  124. instance.save()
  125.  
  126. print("artist received is ",self.cleaned_data['artist'])
  127. # instance.genre.clear()
  128. genre_name_list = Genre.objects.filter(name__in=self.cleaned_data['genre'].values_list('name',flat=True))
  129. # instance.genre.add(*genre_name_list)
  130. instance.genre.set(genre_name_list)
  131.  
  132. # instance.language.clear()
  133. language_name_list = Language.objects.filter(name__in=self.cleaned_data['language'].values_list('name',flat=True))
  134. # instance.language.add(*language_name_list)
  135. instance.language.set(language_name_list)
  136.  
  137. # instance.artist.clear()
  138. artist_name_list = UserProfile.objects.filter(user__username__in=self.cleaned_data['artist'].values_list('first_name',flat=True))
  139. instance.artist.set(artist_name_list)
  140. self.save_m2m()
  141.  
  142.  
  143. return instance
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
Runtime error #stdin #stdout #stderr 0.02s 27968KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 73, in <module>
    class MusicForm(forms.ModelForm):
NameError: name 'forms' is not defined