Source code for demo.models

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models
import swapper
from waves.wcore.models.base import Ordered, Described
from waves.wcore.models.services import BaseService, BaseSubmission

__all__ = ['ServiceMeta', 'ServiceCategory', 'DemoWavesService', 'DemoWavesSubmission']


class ServiceCategory(Ordered, Described):
    """ Service category """

    class Meta:
        ordering = ['name']
        verbose_name_plural = "Categories"
        verbose_name = "Category"

    name = models.CharField('Category Name', null=False, blank=False, max_length=255, help_text='Category name')
    ref = models.URLField('Reference', null=True, blank=True, help_text='Category online reference')
    parent = models.ForeignKey('self', null=True, blank=True, help_text='Parent category',
                               related_name='children_category', db_index=True)

    def __str__(self):
        return self.name

    def __unicode__(self):
        return self.name


[docs]class DemoWavesService(BaseService): class Meta: permissions = ( ("read_service", "Can read Service"), ) category = models.ForeignKey(ServiceCategory, on_delete=models.SET_NULL, null=True, related_name='category_tools') to_delete = models.BooleanField("Automatic deletion", default=True)
[docs]class DemoWavesSubmission(BaseSubmission): class Meta: ordering = ('order',) to_delete = models.BooleanField("Automatic deletion", default=True)
# Create your models here. class ServiceMeta(Ordered, Described): """ Represents all meta information associated with a ATGC service service. Ex : website, documentation, download, related paper etc... """ #: META for external website link META_WEBSITE = 'website' #: META for external documentation link META_DOC = 'doc' #: META for any download link META_DOWNLOAD = 'download' #: META for related paper view META_PAPER = 'paper' #: META for miscellaneous stuff META_MISC = 'misc' #: META to display 'cite our work' META_CITE = 'cite' #: META Service command line META_CMD_LINE = 'cmd' #: META link to user guide META_USER_GUIDE = 'rtfm' #: META features included in service META_FEATURES = 'feat' SERVICE_META = ( (META_CITE, 'Citation'), (META_CMD_LINE, 'Command line'), (META_DOC, 'Documentation'), (META_DOWNLOAD, 'Downloads'), (META_FEATURES, 'Features'), (META_MISC, 'Miscellaneous'), (META_WEBSITE, 'Online resources'), (META_PAPER, 'Related Paper'), (META_USER_GUIDE, 'User Guide'), ) class Meta: verbose_name = 'Service links' verbose_name_plural = "Service links" app_label = "demo" type = models.CharField('Meta type', max_length=100, choices=SERVICE_META) title = models.CharField('Title', max_length=255, blank=True, null=True) value = models.CharField('Link', max_length=500, blank=True, null=True) is_url = models.BooleanField('Is a url', editable=False, default=False) service = models.ForeignKey(swapper.get_model_name('wcore', 'Service'), on_delete=models.CASCADE, related_name='metas') def duplicate(self, service): """ Duplicate a Service Meta""" self.pk = None self.service = service self.save() return self def __str__(self): return '%s [%s]' % (self.title, self.type) def __unicode__(self): return '%s [%s]' % (self.title, self.type)