Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.64 KB | None | 0 0
  1. # models.py
  2. class HeaderIcon(CMSPlugin):
  3.     title = models.CharField(_("Tytuł"), max_length=50)
  4.     text = models.TextField(_("Opis"))
  5.     def copy_relations(self, oldinstance):
  6.         self.associated_item.all().delete()
  7.         self.header_item.all().delete()
  8.  
  9.         for associated_item in oldinstance.associated_item.all():
  10.             # instance.pk = None; instance.pk.save() is the slightly odd but
  11.             # standard Django way of copying a saved model instance
  12.             associated_item.pk = None
  13.             associated_item.plugin = self
  14.             associated_item.save()
  15.  
  16.         for associated_item in oldinstance.header_item.all():
  17.             # instance.pk = None; instance.pk.save() is the slightly odd but
  18.             # standard Django way of copying a saved model instance
  19.             associated_item.pk = None
  20.             associated_item.plugin = self
  21.             associated_item.save()
  22.  
  23. class HeaderIconImage(models.Model):
  24.     header = models.ForeignKey(HeaderIcon, related_name="associated_item")
  25.     title = models.CharField(_("Tytuł"), max_length=50)
  26.     url = models.CharField(_("URL"), max_length=50)
  27.     anchor = models.CharField(_("Anchor"), max_length=50)
  28.     image = models.ImageField(_("Grafika"), upload_to=None, height_field=None, width_field=None, max_length=None)
  29.     def __str__(self):
  30.         return self.title
  31.     class Meta:
  32.         verbose_name = "ikona"
  33.         verbose_name_plural = "ikony"
  34.  
  35. class TileImage(models.Model):
  36.     header = models.ForeignKey(HeaderIcon, related_name="header_item")
  37.     title = models.CharField(_("Tytuł"), max_length=50)
  38.     image = models.ImageField(_("Grafika"), upload_to=None, height_field=None, width_field=None, max_length=None)
  39.     def __str__(self):
  40.         return self.title
  41.     class Meta:
  42.         verbose_name = "kafelek"
  43.         verbose_name_plural = "kafelki"
  44.  
  45. # Plugins
  46. class HeadersImageAdmin(admin.StackedInline):
  47.     model = HeaderIconImage
  48.     extra = 0
  49. class TileImageAdmin(admin.StackedInline):
  50.     model = TileImage
  51.     extra = 0
  52.  
  53. @plugin_pool.register_plugin
  54. class HeaderIconPlugin(CMSPluginBase):
  55.     model = HeaderIcon
  56.     name = _("Ikony")
  57.     render_template = "plugins/headers_icon.html"
  58.     cache = False
  59.     inlines = (HeadersImageAdmin, TileImageAdmin)
  60.  
  61.     def render(self, context, instance, placeholder):
  62.         context = super(HeaderIconPlugin, self).render(context, instance, placeholder)
  63.         items = instance.associated_item.all()
  64.         header_items = instance.header_item.all()
  65.         context.update({
  66.             'items': items,
  67.             'header_items': header_items
  68.         })
  69.         return context
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement