def forward(apps, schema_editor): manager = mptt.managers.TreeManager() WordSet = apps.get_model('content', 'WordSet') manager.model = WordSet mptt.register(WordSet, order_insertion_by=['name']) manager.contribute_to_class(WordSet, 'objects') manager.rebuild()
def rebuild_mptt(apps, schema_editor): manager = mptt.managers.TreeManager() InventoryItem = apps.get_model('dcim', 'InventoryItem') manager.model = InventoryItem mptt.register(InventoryItem) manager.contribute_to_class(InventoryItem, 'objects') manager.rebuild()
def render_organization_missions(apps, schema_editor): Organization = apps.get_model("facts", "Organization") mptt.register(Organization) db_alias = schema_editor.connection.alias for obj in Organization.objects.using(db_alias).exclude(mission=''): obj.mission_rendered = render_markdown(obj.mission) obj.save()
def rebuild_flag_mptt_tree(apps, schema_editor): manager = mptt.managers.TreeManager() Flag = apps.get_model('shopit', 'Flag') manager.model = Flag mptt.register(Flag, order_insertion_by=['created_at']) manager.contribute_to_class(Flag, 'objects') manager.rebuild()
def rebuild_step_mptt(apps, schema_editor): manager = mptt.managers.TreeManager() ProcessStep = apps.get_model("WorkflowEngine", "ProcessStep") manager.model = ProcessStep mptt.register(ProcessStep, parent_attr='parent_step') manager.contribute_to_class(ProcessStep, 'objects') manager.rebuild()
def rebuild_pages(apps, schema_editor): manager = mptt.managers.TreeManager() page_model = apps.get_model("shoop_simple_cms", "Page") manager.model = page_model mptt.register(page_model, order_insertion_by=["-available_from"]) manager.contribute_to_class(page_model, 'objects') manager.rebuild()
def rebuild_area_tree(apps, schema_editor): manager = mptt.managers.TreeManager() Area = apps.get_model("NEMO", "Area") manager.model = Area mptt.register(Area, parent_attr='parent_area') manager.contribute_to_class(Area, 'objects') manager.rebuild()
def rebuild_tm_mptt(apps, schema_editor): manager = mptt.managers.TreeManager() Teammate = apps.get_model("people", "Teammate") manager.model = Teammate mptt.register(Teammate, order_insertion_by=["name"], parent_attr="manager") manager.contribute_to_class(Teammate, "objects") manager.rebuild()
def rebuild_tree(apps, schema_editor): Service = apps.get_model('metadata', 'Service') manager = mptt.managers.TreeManager() manager.model = Service mptt.register(Service, order_insertion_by=['segment']) manager.contribute_to_class(Service, 'objects') manager.rebuild()
def rebuild_province_mptt(apps, schema_editor): manager = mptt.managers.TreeManager() Province = apps.get_model("promrep", "Province") manager.model = Province mptt.register(Province, order_insertion_by=['name']) manager.contribute_to_class(Province, 'objects') manager.rebuild()
def forward(apps, schema_editor): # the zero mptt fields won't do, we need a treemanager to build the mptt tree manager = mptt.managers.TreeManager() Organization = apps.get_model("events", "Organization") manager.model = Organization mptt.register(Organization) manager.contribute_to_class(Organization, 'objects') manager.rebuild()
def rebuild_trees(apps, schema_editor): for tree in ['Location', 'ItemType']: manager = mptt.managers.TreeManager() Object = apps.get_model('inventory', tree) manager.model = Object mptt.register(Object, order_insertion_by=['display_order', 'id']) manager.contribute_to_class(Object, 'objects') manager.rebuild()
def rebuild_tree(apps, schema_editor): Category = apps.get_model("booking", "Category") manager = managers.TreeManager() manager.model = Category register(Category) manager.contribute_to_class(Category, "objects") with transaction.atomic(): manager.rebuild()
def rebuild_tree(apps, schema_editor): Project = apps.get_model('projects', 'Project') manager = managers.TreeManager() manager.model = Project register(Project) manager.contribute_to_class(Project, 'objects') manager.rebuild()
def forwards(self, orm): # Note: Don't use "from appname.models import ModelName". # Use orm.ModelName to refer to models in this application, # and orm['appname.ModelName'] for models in other applications. # Take PartList and "extend" it with mtpp stuff # http://django-mptt.github.io/django-mptt/models.html#registration-of-existing-models mptt.register(orm.PartList) for email in orm.Email.objects.all(): self.flag_setter(email) try: if email.body is not None: body = email.body.encode("utf8") else: body = "" except UnicodeError: body = email.body body = self.make_body(orm, data=body) first_part = orm.PartList(email=email, body=body, parent=None) first_part.save() ordinal = 0 for header in email.headers.all(): self.make_header(orm, name=header.name, data=header.data, part=first_part, ordinal=ordinal) ordinal = ordinal + 1 old_attachments = email.attachments.all() if len(old_attachments) > 0: self.make_header(orm, name="Content-Type", data="multipart/mixed", part=first_part, ordinal=ordinal) for attachment in old_attachments: try: if attachment._data is not None: data = attachment._data.encode("utf8") else: data = "" except UnicodeError: data = attachment._data try: data = base64.decodestring(data) except binascii.Error: pass body = self.make_body(orm, data=data, path=attachment.path) part = orm.PartList(email=email, body=body, parent=first_part) part.save() self.make_header(orm, name="Content-Type", data=attachment.content_type, part=part, ordinal=0) self.make_header(orm, name="Content-Disposition", data=attachment.content_disposition, part=part, ordinal=1)
def rebuild_mptt_model(model): """ Rebuild an mptt model. This is used in migrations that work with data from mptt models. """ manager = mptt.managers.TreeManager() manager.model = model mptt.register(model) manager.contribute_to_class(model, "objects") manager.rebuild()
def copy_preambles(apps, schema_editor): Preamble = apps.get_model('regcore', 'Preamble') Document = apps.get_model('regcore', 'Document') # Bind manager manager = mptt.managers.TreeManager() manager.model = Document mptt.register(Document) manager.contribute_to_class(Document, 'objects') for pre in Preamble.objects.all(): write_node(Document, pre.data, 'preamble', pre.data['label'])
def uncopy_preambles(apps, schema_editor): Preamble = apps.get_model('regcore', 'Preamble') Document = apps.get_model('regcore', 'Document') # Bind manager manager = mptt.managers.TreeManager() manager.model = Document mptt.register(Document) manager.contribute_to_class(Document, 'objects') for doc in Document.objects.filter(doc_type='preamble', root=True): nodes = doc.get_descendants(include_self=True) data = serialize(nodes[0], build_adjacency_map(nodes)) pre = Preamble(document_number=doc.label_string, data=data) pre.save()
def copy_preambles(apps, schema_editor): Preamble = apps.get_model('regcore', 'Preamble') Document = apps.get_model('regcore', 'Document') # Bind manager manager = mptt.managers.TreeManager() manager.model = Document # Convert to tuple to resolve django-mptt migration # errors: https://github.com/django-mptt/django-mptt/issues/803 Document._meta.index_together = convert_to_tuple( Document._meta.index_together) mptt.register(Document) manager.contribute_to_class(Document, 'objects') for pre in Preamble.objects.all(): write_node(Document, pre.data, 'preamble', pre.data['label'])
def uncopy_preambles(apps, schema_editor): Preamble = apps.get_model('regcore', 'Preamble') Document = apps.get_model('regcore', 'Document') # Bind manager manager = mptt.managers.TreeManager() manager.model = Document # Convert to tuple to resolve django-mptt migration # errors: https://github.com/django-mptt/django-mptt/issues/803 Document._meta.index_together = convert_to_tuple( Document._meta.index_together) mptt.register(Document) manager.contribute_to_class(Document, 'objects') for doc in Document.objects.filter(doc_type='preamble', root=True): nodes = doc.get_descendants(include_self=True) data = serialize(nodes[0], build_adjacency_map(nodes)) pre = Preamble(document_number=doc.label_string, data=data) pre.save()
def rebuild(apps, schema_editor): Regulation = apps.get_model('regcore', 'Regulation') Regulation.objects.filter(root=False).delete() # Bind manager manager = mptt.managers.TreeManager() manager.model = Regulation mptt.register(Regulation) manager.contribute_to_class(Regulation, 'objects') for root in Regulation.objects.all(): serialized = { 'text': root.text, 'title': root.title, 'label': root.label_string.split('-'), 'node_type': root.node_type, 'children': root.children, } root.delete() write_node(Regulation, serialized, root.version, root.label_string)
def rebuild(apps, schema_editor): Regulation = apps.get_model('regcore', 'Regulation') Regulation.objects.filter(root=False).delete() # Bind manager manager = mptt.managers.TreeManager() manager.model = Regulation # Convert to tuple to resolve django-mptt migration # errors: https://github.com/django-mptt/django-mptt/issues/803 Regulation._meta.index_together = convert_to_tuple( Regulation._meta.index_together) mptt.register(Regulation) manager.contribute_to_class(Regulation, 'objects') for root in Regulation.objects.all(): serialized = { 'text': root.text, 'title': root.title, 'label': root.label_string.split('-'), 'node_type': root.node_type, 'children': root.children, } root.delete() write_node(Regulation, serialized, root.version, root.label_string)
class Meta: unique_together = ('column', 'row') class Clade(models.Model): alignment = models.ForeignKey(Alignment, related_name='clades', db_index=True) num = models.IntegerField(editable=False) cumulative_branch_length = models.FloatField(default=0.0, editable=False) local_branch_length = models.FloatField(editable=False) row = models.OneToOneField(Row, null=True) # leaf nodes only parent = models.ForeignKey('self', null=True, related_name='children') # use django-mptt to manage tree structure of Clades. Possibly this should be in __init__.py? try: mptt.register(Clade, order_insertion_by=["num"]) except mptt.AlreadyRegistered: pass class ThresholdGrouping(models.Model): alignment = models.ForeignKey(Alignment, related_name='threshold_groupings') root_clades = models.ManyToManyField(Clade, related_name='threshold_groupings') threshold = models.FloatField() class RowGroup(models.Model): # issue. Would like to have a 'Group' table against which to score relatedness. # ThresholdGroupings are currently
def get_root_menu(self): return self.parent def get_children(self): return CMSMenu.objects.get_children(self) name = property(get_name) status = property(get_page_status) def get_controller(self): if hasattr(self.content_object, 'get_controller'): return self.content_object.get_controller() return None mptt.register(CMSMenu, order_insertion_by=['object_id']) class MenuLocalLink(models.Model): """ MenuLocalLink is to link static page dynamicaly into the menu """ name = models.CharField(max_length=100, unique=False, help_text=_('Max 100 characters.')) local_link = models.CharField(max_length=200, null=True, blank=True, help_text="Link on this web site. ex. /www/page/") class Meta: app_label = "www" verbose_name = 'Menu - Local Link' verbose_name_plural = 'Menu - Local Link' def __unicode__(self): return self.name
from mptt.models import MPTTModel, TreeForeignKey import mptt class Genre(MPTTModel): name = models.CharField(max_length=50) parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True) user = models.ForeignKey(User) class MPTTMeta: level_attr = 'mptt_level' order_insertion_by = ['name'] def __str__(self): return self.name mptt.register(Genre, order_insertion_by=['name']) class Icon(models.Model): icon_name = models.CharField(max_length=50) def __str__(self): return self.icon_name class Note(models.Model): note_name = models.CharField(max_length=50) note_text = models.TextField() icon_name = models.ManyToManyField(Icon) user = models.ForeignKey(User) parent = models.ForeignKey(Genre)
class SubsidiaryCompany(MPTTModel): name = models.CharField(u"Subsidiary company", max_length=30, default='') annual_earning = models.PositiveIntegerField(u"Annual earning", blank=True, null=True, default=0) main_company = models.ForeignKey(MainCompany, blank=True, null=True, related_name=u"child_from_main", default='') parent = TreeForeignKey('self', related_name=u"child_from_sub", blank=True, null=True, default='') class Meta: verbose_name = u"SubsidiaryCompany" ordering = ('tree_id', 'level') def __unicode__(self): return '{}'.format(self.name) class MPTTMeta: order_insertion_py = ['name'] mptt.register(SubsidiaryCompany, order_insertion_py=['name'])
class MultiOrder(models.Model): name = models.CharField(max_length=50) size = models.PositiveIntegerField() date = models.DateField() parent = models.ForeignKey('self', null=True, blank=True, related_name='children') def __unicode__(self): return self.name class Node(models.Model): parent = models.ForeignKey('self', null=True, blank=True, related_name='children') class OrderedInsertion(models.Model): name = models.CharField(max_length=50) parent = models.ForeignKey('self', null=True, blank=True, related_name='children') def __unicode__(self): return self.name class Tree(models.Model): parent = models.ForeignKey('self', null=True, blank=True, related_name='children') mptt.register(Category) mptt.register(Genre) mptt.register(Insert) mptt.register(MultiOrder, order_insertion_by=['name', 'size', 'date']) mptt.register(Node, left_attr='does', right_attr='zis', level_attr='madness', tree_id_attr='work') mptt.register(OrderedInsertion, order_insertion_by=['name']) mptt.register(Tree)
return self.get_caption_formatted(escape=False) get_caption_formatted_unescaped.allow_tags = True get_caption_formatted_unescaped.short_description = _('displayed metadata') @property def alt(self): """Returns object metadata suitable for use as the HTML ``alt`` attribute. You can use this method in templates:: <img src="{{ node.file.url }}" alt="{{ node.alt }}" /> """ if self.override_alt != '' and self.override_alt is not None: return self.override_alt elif self.override_caption != '' and self.override_caption is not None: return self.override_caption else: return self.get_metadata_display() # Legacy mptt support if ModelBase == models.Model: FileNode._mptt_meta = FileNode._meta try: mptt.register(FileNode, order_insertion_by=FileNode.MPTTMeta.order_insertion_by) except mptt.AlreadyRegistered: pass from media_tree.utils import autodiscover_media_extensions autodiscover_media_extensions()
try: _class = getattr(import_module(module_name), class_name) return _class except (ImportError, AttributeError): warnings.warn('%s cannot be imported' % ENTRY_BASE_MODEL, RuntimeWarning) return EntryAbstractClass class Entry(get_base_model()): """Final Entry model""" class Meta: """Entry's Meta""" ordering = ['-creation_date'] verbose_name = _('entry') verbose_name_plural = _('entries') permissions = ( ('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) moderator.register(Entry, EntryCommentModerator) mptt.register(Category, order_insertion_by=['title']) post_save.connect(ping_directories_handler, sender=Entry, dispatch_uid='zinnia.entry.post_save.ping_directories') post_save.connect(ping_external_urls_handler, sender=Entry, dispatch_uid='zinnia.entry.post_save.ping_external_urls')
def rebuild_site_tree(apps, schema_editor): manager = managers.TreeManager() manager.model = apps.get_model('outdoor', 'Site') register(manager.model) manager.contribute_to_class(manager.model, 'objects') manager.rebuild()
def _add_mptt_manager(cls): manager = mptt.managers.TreeManager() manager.model = cls mptt.register(cls, parent_attr='super_event') manager.contribute_to_class(cls, 'objects')
class NsSortedNode(NS_Node): node_order_by = ['numval', 'strval'] numval = models.IntegerField() strval = models.CharField(max_length=255) if mptt: class MpttNode(models.Model): numval = models.IntegerField() strval = models.CharField(max_length=255) parent = models.ForeignKey('self', null=True, blank=True, related_name='children') mptt.register(MpttNode) class MpttSortedNode(models.Model): numval = models.IntegerField() strval = models.CharField(max_length=255) parent = models.ForeignKey('self', null=True, blank=True, related_name='children') mptt.register(MpttSortedNode, order_insertion_by=['numval', 'strval']) else: MpttNode, MpttSortedNode = None, None
return True except Folder.DoesNotExist: return False class Meta: unique_together = (('parent', 'name'),) ordering = ('name',) permissions = (("can_use_directory_listing", "Can use directory listing"),) app_label = 'filer' verbose_name = _("Folder") verbose_name_plural = _("Folders") # MPTT registration try: mptt.register(Folder) except mptt.AlreadyRegistered: pass @python_2_unicode_compatible class FolderPermission(models.Model): ALL = 0 THIS = 1 CHILDREN = 2 ALLOW = 1 DENY = 0 TYPES = ( (ALL, _('all items')),
from django.db import models from django.core.urlresolvers import reverse import mptt class Category(models.Model): parent = models.ForeignKey('self', blank=True, null=True) name = models.CharField(max_length=20) def __unicode__(self): return self.name def get_absolute_url(self): return reverse('category_view', args=[self.pk]) class Meta: verbose_name_plural = 'categories' try: mptt.register(Category) except mptt.AlreadyRegistered: pass class Picture(models.Model): image = models.ImageField(upload_to="pictures") category = models.ForeignKey(Category)
def margin_level(self): """Used in the admin menu to create the left margin.""" return self.level * 2 def __unicode__(self): """Representation of the page, saved or not.""" if self.id: slug = self.slug() if slug: return slug return "Page %d" % self.id return "Page without id" # Don't register the Page model twice. try: mptt.register(Page) except mptt.AlreadyRegistered: pass class Content(models.Model): """A block of content, tied to a :class:`Page <pages.models.Page>`, for a particular language""" # languages could have five characters : Brazilian Portuguese is pt-br language = models.CharField(_('language'), max_length=5, blank=False) body = models.TextField(_('body')) type = models.CharField(_('type'), max_length=100, blank=False, db_index=True) page = models.ForeignKey(Page, verbose_name=_('page'))
on_delete=models.CASCADE) now = models.DateTimeField(auto_now_add=True) class MPTTMeta: order_insertion_by = ('now',) # test registering of remote model class Group(models.Model): name = models.CharField(max_length=100) TreeForeignKey( Group, blank=True, null=True, on_delete=models.CASCADE ).contribute_to_class(Group, 'parent') mptt.register(Group, order_insertion_by=('name',)) class Book(MPTTModel): parent = TreeForeignKey( 'self', null=True, blank=True, related_name='children', on_delete=models.CASCADE) name = models.CharField(max_length=50) fk = TreeForeignKey( Category, null=True, blank=True, related_name='books_fk', on_delete=models.CASCADE) m2m = TreeManyToManyField(Category, blank=True, related_name='books_m2m') class UniqueTogetherModel(MPTTModel):
# Hierarchy parent = models.ForeignKey('self', null=True, blank=True, related_name='children') def __unicode__(self): return u"%s" % (self.title) @models.permalink def get_absolute_url(self): return ('price_shop_category', (self.slug,)) class Meta: ordering = ["title"] mptt.register(ShopCategory, order_insertion_by=['title']) class ShopNet(models.Model): # Named title = models.CharField(max_length=50) slug = models.SlugField(unique=True, max_length=50) # Content description = models.TextField(blank=True) # Orderable position = models.PositiveIntegerField(default=0) def __unicode__(self):
# no such parent? better create it parent = ExternalSite(domain = parent_domain, site = parent_domain) # check that it will have a domain attribute if parent.domain: # save it, then assign a FK to it parent.save() self.parent = parent super(ExternalSite, self).save() else: # we won't create a nameless domain! pass try: mptt.register(ExternalSite) except mptt.AlreadyRegistered: pass class GenericLinkListPlugin(CMSPlugin): INSERTION_MODES = ( (0, u"Inline in text"), (1, u"Unordered List - <ul>"), (2, u"Paragraphs - <p>"), ) insert_as = models.PositiveSmallIntegerField(choices = INSERTION_MODES, default = 1) use_link_icons = models.BooleanField(help_text = "Place an icon on each link below (links in lists only)") separator = models.CharField(help_text = "Applies to Inline links only; default is ', '", max_length=20, null = True, blank = True, default = ", ") final_separator = models.CharField(help_text = "Applies to Inline links only; default is ' and '", max_length=20, null = True, blank = True, default = " and ")
super(Page, self).save(force_insert, force_update) if self.url!=old_url: # Обновляем urlpatterns если поменялся путь interprocess.clear_key(IP_KEY_URLPATTERNS) # Обновляем menu interprocess.clear_key(IP_KEY_MENU) super(Page, self).save(force_insert, force_update) def get_absolute_url(self): if self.url: return '/%s/' % self.url else: return '/' class Meta(): ordering = ['tree_id', 'lft'] verbose_name = u'страницу' verbose_name_plural = u'страницы' def __unicode__(self): return u'%s %s' % ('--'*self.level,self.name) try: mptt.register(Page, order_insertion_by=['sort', 'name'] ) except mptt.AlreadyRegistered: pass
dot = ENTRY_BASE_MODEL.rindex('.') module_name = ENTRY_BASE_MODEL[:dot] class_name = ENTRY_BASE_MODEL[dot + 1:] try: _class = getattr(import_module(module_name), class_name) return _class except (ImportError, AttributeError): warnings.warn('%s cannot be imported' % ENTRY_BASE_MODEL, RuntimeWarning) return EntryAbstractClass class Entry(get_base_model()): """Final Entry model""" class Meta: """Entry's Meta""" ordering = ['-creation_date'] verbose_name = _('entry') verbose_name_plural = _('entries') permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) moderator.register(Entry, EntryCommentModerator) mptt.register(Category, order_insertion_by=['title']) post_save.connect(ping_directories_handler, sender=Entry, dispatch_uid='zinnia.entry.post_save.ping_directories') post_save.connect(ping_external_urls_handler, sender=Entry, dispatch_uid='zinnia.entry.post_save.ping_external_urls')
null=True, blank=True) display_descriptions_to_level = models.PositiveSmallIntegerField(default=0, help_text=u'Blank for all levels, 0 for none, 1 for first', null=True, blank=True) link_icons = models.BooleanField(help_text=u"Display link icons (first level only)", default=True) use_short_names = models.BooleanField(default=True) class EntityMembersPluginEditor(CMSPlugin): entity = models.ForeignKey(Entity, null=True, blank=True, help_text="Leave blank for autoselect", related_name="entity_members_plugin", on_delete=models.SET_NULL) try: mptt.register(Entity) except mptt.AlreadyRegistered: pass # contacts_and_people.models.default_entity and default_entity_id is a key value, and used throughout the system # default_entity_id is used to autofill the default entity where required, when MULTIPLE_ENTITY_MODE = False default_entity_id = default_entity = None try: if not MULTIPLE_ENTITY_MODE and Entity.objects.all(): # default_entity_id is used to fill in admin fields automatically when not in MULTIPLE_ENTITY_MODE default_entity_id = base_entity_id if base_entity_id: # set the default entity using the id default_entity = Entity.objects.get(id = base_entity_id) except:
except Folder.DoesNotExist: return False class Meta: unique_together = (('parent', 'name'), ) ordering = ('name', ) permissions = (("can_use_directory_listing", "Can use directory listing"), ) app_label = 'filer' verbose_name = _("Folder") verbose_name_plural = _("Folders") # MPTT registration try: mptt.register(Folder) except mptt.AlreadyRegistered: pass class FolderPermission(models.Model): ALL = 0 THIS = 1 CHILDREN = 2 ALLOW = 1 DENY = 0 TYPES = ( (ALL, _('all items')), (THIS, _('this item only')),
exit = "" if self.parent: return "%s (%s)" % (blank_or_string( self.name), blank_or_string(self.parent.name)) else: return blank_or_string(self.name) def show_ancestors_tree(self): exit = ", ".join([ blank_or_string(el.name) for el in self.get_ancestors().reverse() ]) if exit: exit = "%s (%s)" % (blank_or_string(self.name), exit) else: exit = blank_or_string(self.name) return exit class Meta: verbose_name_plural = "Religion" ordering = [ 'tree_id', 'lft', 'name', ] def __unicode__(self): return self.show_ancestors_tree() mptt.register(Religion, )
def __unicode__(self): return '%s: %s' % (self.title, self.get_status_display()) @models.permalink def get_absolute_url(self): """Return objecttype's URL""" return ('gstudio_objecttype_detail', (), { 'year': self.creation_date.strftime('%Y'), 'month': self.creation_date.strftime('%m'), 'day': self.creation_date.strftime('%d'), 'slug': self.slug}) class Meta: """Objecttype's Meta""" ordering = ['-creation_date'] verbose_name = _('object type') verbose_name_plural = _('object types') permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) moderator.register(Objecttype, ObjecttypeCommentModerator) mptt.register(Metatype, order_insertion_by=['title']) mptt.register(Objecttype, order_insertion_by=['title']) post_save.connect(ping_directories_handler, sender=Objecttype, dispatch_uid='gstudio.objecttype.post_save.ping_directories') post_save.connect(ping_external_urls_handler, sender=Objecttype, dispatch_uid='gstudio.objecttype.post_save.ping_external_urls')
#coding: utf-8 from django.db import models from mptt.fields import TreeForeignKey import mptt from apps.site_user.models import Staff class Law(models.Model): staff = models.ManyToManyField(Staff, blank=True, null=True) fed = models.CharField(max_length=255, blank=True, null=True) class Item(models.Model): parent = TreeForeignKey('self', blank=True, null=True) name = models.CharField(max_length=255) url = models.CharField(max_length=255) law = models.ForeignKey(Law, blank=True, null=True) mptt.register(Item)
# 4. proxy models class SingleProxyModel(ConcreteModel): objects = CustomTreeManager() class Meta: proxy = True class DoubleProxyModel(SingleProxyModel): class Meta: proxy = True class AutoNowDateFieldModel(MPTTModel): parent = TreeForeignKey('self', null=True, blank=True, related_name='children') now = models.DateTimeField(auto_now_add=True) class MPTTMeta: order_insertion_by = ('now',) # test registering of remote model class Group(models.Model): name = models.CharField(max_length=100) TreeForeignKey(Group, blank=True, null=True).contribute_to_class(Group, 'parent') mptt.register(Group, order_insertion_by=('name',))
conflicts[obj.name] = obj for child in children: if child.name in conflicts: squash.append((child.id, conflicts[child.name].id)) examine.append((child, conflicts[child.name])) else: to_move.append((child, merge_node)) if squash: signals.pre_merge.send(sender=self, merge_pairs=squash) if to_move: signals.pre_move.send(sender=self, moving=to_move) for child, new_parent in to_move: # Need to refresh the instance, as previous moves might have # changed the "lft" and "rght" attributes. new_parent = manager.get(id=new_parent.id) child.move_to(new_parent) self.delete() class Topic(AbstractTopic): """ The basic concrete class for a topic node. API details are defined by the AbstractTopic base class. """ pass mptt.register(Topic, order_insertion_by=["name"])
def content_splitted(self): return self.content_highlighted.splitlines() def save(self, *args, **kwargs): if not self.pk: self.published = datetime.datetime.now() self.secret_id = generate_secret_id() self.content_highlighted = self.content super(Snippet, self).save(*args, **kwargs) def get_absolute_url(self): return reverse('snippet_details', kwargs={'snippet_id': self.secret_id}) def __unicode__(self): return '%s' % self.secret_id mptt.register(Snippet, order_insertion_by=['content']) class SpamwordManager(models.Manager): def get_regex(self): return re.compile(r'|'.join((i[1] for i in self.values_list())), re.MULTILINE) class Spamword(models.Model): word = models.CharField(max_length=100) objects = SpamwordManager() def __unicode__(self): return self.word
event = kwargs['instance'] event.get_root().check_date() post_save.connect(receiver_function, sender = Event) class NewsAndEventsPlugin(CMSPlugin, UniversalPluginOptions): DISPLAY = ( ("news & events", u"News and events"), ("news", u"News only"), ("events", u"Events only"), ) display = models.CharField("Show", max_length=25,choices = DISPLAY, default = "news_and_events") entity = models.ForeignKey(Entity, null=True, blank=True, help_text="Leave blank for autoselect", related_name="news_events_plugin") show_previous_events = models.BooleanField() news_heading_text = models.CharField(max_length=25, default="News") events_heading_text = models.CharField(max_length=25, default="Events") try: mptt.register(Event) except mptt.AlreadyRegistered: pass ''' entity: ('name',) building: ('name', 'number', 'street', 'postcode', 'site__site_name',) website: ('title_set__title',) '''
parent = TreeForeignKey('self', null=True, blank=True, related_name='child', on_delete=models.CASCADE) def __str__(self): return self.name class MPTTMeta: order_insertion_by = ['name'] ordering = ('tree_id', 'level') level_attr = 'mptt_level' mptt.register(Region, order_insertion_by=['name']) mptt.register(Category, order_insertion_by=['name']) class File(models.Model): file = models.FileField(blank=False, null=False) remark = models.CharField(max_length=20) timestamp = models.DateTimeField(auto_now_add=True) class Ad(models.Model): title = models.CharField(max_length=30, help_text='Title ads', db_column='data') date_create = models.DateTimeField(auto_now=True, help_text='Date Create') description = models.TextField(max_length=300)
self.save() def __unicode__(self): return self.content @property def clean_content(self): return truncate_words(html2text(self.content), 70) class Meta: app_label = 'periodics' verbose_name = _('Comment') verbose_name_plural = _('Comments') if Comment not in mptt.registry: mptt.register(Comment, ) def comment_created_notification(sender, **kwargs): if kwargs['created']: send_email( to = '*****@*****.**', tpl = 'comment_posted', context = {'comment': kwargs['instance'], 'text': html2text(kwargs['instance'].content) }, ) models.signals.post_save.connect(comment_created_notification, sender=Comment) class Post(Publisher, PeriodicsBase, TaggedModel):