class AlignmentWidget(forms.Widget): class Media: css = { # 'all': ('css/alignment.css',) } js = ('js/jquery.js', 'js/jquery-draggable.js', 'player/js/alignment.js',) def __init__(self, *args, **kwargs): self.align = None super(AlignmentWidget, self).__init__(*args, **kwargs) def render(self, name, value, attrs=None): try: align = Alignment.objects.get(pk=value) except Alignment.DoesNotExist: align = Alignment() return render_to_string('alignment_widget.html', { 'align_text': Alignment.to_str(align.align_moral, align.align_order), 'align': align, }) def value_from_datadict(self, data, files, name): pk = data.get('alignment-id', None) moral = data.get('alignment-moral', None) order = data.get('alignment-order', None) if self.align is None: # See if this is an existing object, otherwise we're making it try: self.align = Alignment.objects.get(pk=pk) except Alignment.DoesNotExist: self.align = Alignment() # Update the object with the passed in values if not moral is None: self.align.align_moral = moral if not order is None: self.align.align_order = order # We need to return a pk .: we need a model... # But this also means on validation errors we create tons of new # Alignment objects... # WTF, there has got to be a better way of doing this self.align.save() return self.align.id
def render(self, name, value, attrs=None): try: align = Alignment.objects.get(pk=value) except Alignment.DoesNotExist: align = Alignment() return render_to_string('alignment_widget.html', { 'align_text': Alignment.to_str(align.align_moral, align.align_order), 'align': align, })
def value_from_datadict(self, data, files, name): pk = data.get('alignment-id', None) moral = data.get('alignment-moral', None) order = data.get('alignment-order', None) if self.align is None: # See if this is an existing object, otherwise we're making it try: self.align = Alignment.objects.get(pk=pk) except Alignment.DoesNotExist: self.align = Alignment() # Update the object with the passed in values if not moral is None: self.align.align_moral = moral if not order is None: self.align.align_order = order # We need to return a pk .: we need a model... # But this also means on validation errors we create tons of new # Alignment objects... # WTF, there has got to be a better way of doing this self.align.save() return self.align.id