Exemple #1
0
class Task(CachingMixin, models.Model):
    title = models.CharField(max_length=256)
    description = models.TextField(default='')
    deadline = models.DateTimeField(default=timezone.now)

    objects = CachingManager()
    teacher = CachingManager()

    def __str__(self):
        return self.title
Exemple #2
0
class ImageBannerVariation(CachingMixin, ImageVariation):
    banner = models.ForeignKey(ImageBanner, related_name='variation_set')

    objects = CachingManager()

    def get_media_subdirectory(self):
        return 'uploads/image_banners'
Exemple #3
0
class BannerInstance(BadgeInstance):
    image = models.ForeignKey(BannerImage)

    details_template = 'banners/details.html'
    objects = CachingManager()

    @property
    def preview(self):
        """Return the HTML to preview this banner."""
        return Markup('<img src="%s?from_affiliates" alt="%s">' %
                      (absolutify(self.image.image.url),
                       _locale(self.badge.name, self.image.locale)))

    @property
    def code(self):
        """Return the code to embed this banner.."""
        return jingo.env.from_string(BANNER_TEMPLATE).render({
            'url':
            self.affiliate_link(),
            'img':
            absolutify(self.image.image.url, protocol=''),
            'alt_text':
            _locale(self.badge.name, self.image.locale)
        })

    def affiliate_link(self):
        link = reverse('banners.link', kwargs={'banner_instance_id': self.pk})
        return absolutify(link, protocol='')
class SnippetTemplateVariable(CachingMixin, models.Model):
    """
    A variable for a template that an individual snippet can fill in with its
    own content.
    """
    TEXT = 0
    IMAGE = 1
    SMALLTEXT = 2
    CHECKBOX = 3
    BODY = 4
    TYPE_CHOICES = ((BODY, 'Main Text'), (TEXT, 'Text'),
                    (SMALLTEXT, 'Small Text'), (IMAGE, 'Image'), (CHECKBOX,
                                                                  'Checkbox'))

    template = models.ForeignKey(SnippetTemplate, related_name='variable_set')
    name = models.CharField(max_length=255)
    type = models.IntegerField(choices=TYPE_CHOICES, default=TEXT)
    description = models.TextField(blank=True, default='')

    objects = models.Manager()
    cached_objects = CachingManager()

    def __unicode__(self):
        return u'{0}: {1}'.format(self.template.name, self.name)

    class Meta:
        ordering = ('name', )
Exemple #5
0
class Results(CachingMixin, models.Model):
    id = models.AutoField(primary_key=True)
    query_id = models.ForeignKey('Query',
                                 db_column='query_id',
                                 related_name='results',
                                 db_index=True)
    result_id = models.PositiveIntegerField(db_index=True)
    rnacentral_id = models.CharField(max_length=13, null=True)
    description = models.TextField(null=True)
    bias = models.FloatField(null=True)
    target_length = models.PositiveIntegerField(null=True)
    query_length = models.PositiveIntegerField(null=True)
    alignment = models.TextField(null=True)
    score = models.FloatField(null=True)
    e_value = models.FloatField(null=True)
    alignment_length = models.PositiveIntegerField(null=True)
    match_count = models.PositiveIntegerField(null=True)
    gap_count = models.PositiveIntegerField(null=True)
    nts_count1 = models.PositiveIntegerField(null=True)
    nts_count2 = models.PositiveIntegerField(null=True)
    identity = models.FloatField(null=True)
    query_coverage = models.FloatField(null=True)
    target_coverage = models.FloatField(null=True)
    gaps = models.FloatField(null=True)

    objects = CachingManager()

    class Meta:
        db_table = 'nhmmer_results'
Exemple #6
0
class TextBanner(CachingMixin, Banner):
    """Banner displayed as a string of text with a link."""
    objects = CachingManager()

    def generate_banner_code(self, variation):
        return u'<a href="{{href}}">{text}</a>'.format(text=variation.text)

    def get_customize_url(self):
        return reverse('banners.generator.text_banner.customize', kwargs={'pk': self.pk})

    def preview_html(self, href, **kwargs):
        kwargs['href'] = href
        kwargs['banner'] = self

        # Fetch localized variation.
        locale = translation.get_language()
        try:
            kwargs['preview_text'] = self.variation_set.get(locale=locale).text
        except TextBannerVariation.DoesNotExist:
            pass

        # Fallback to en-US if necessary.
        if 'preview_text' not in kwargs and locale != 'en-us':
            try:
                kwargs['preview_text'] = self.variation_set.get(locale='en-us').text
            except TextBannerVariation.DoesNotExist:
                pass

        return Markup(render_to_string('banners/previews/text_banner.html', kwargs))

    @staticmethod
    def get_variation_class():
        return TextBannerVariation
Exemple #7
0
class GrandCompany(CachingMixin, models.Model):
    class Meta:
        verbose_name_plural = u"grand companies"

    RANKS = [
        u"Recruit",
        u"{0} Private Third Class",
        u"{0} Private Second Class",
        u"{0} Private First Class",
        u"{0} Corporal",
        u"{0} Sergeant Third Class",
        u"{0} Sergeant Second Class",
        u"{0} Sergeant First Class",
        u"Chief {0} Sergeant",
        u"Second {0} Lieutenant",
    ]

    name = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50, unique=True)
    short = models.CharField(max_length=10)

    objects = models.Manager()
    cached = CachingManager()

    def __unicode__(self):
        return self.name
class MagnateFund(CachingMixin, models.Model):
    name = models.CharField(_('name'), max_length=200)

    description = models.TextField(_('description'), default="")

    is_active = models.BooleanField(_('is active'), default=True)

    objects = CachingManager()

    def __unicode__(self):
        return 'Fund: %s' % (self.name)

    def is_visible(self, user):
        """
        Checks if the user can see the fund on his fund page.
        In the future can depend on the status of the user.
        """
        return self.is_active

    def statistics_as_html(self):
        if not self.is_active:
            return ""
        from forum_modules.magnate.settings import MAGNATE_FUND_TEMPLATES
        if self.pk in MAGNATE_FUND_TEMPLATES:
            return MAGNATE_FUND_TEMPLATES[self.pk].value
        else:
            return ""
	class BaseModel(CachingMixin, models.Model):
		""" Base class WITH Cache Machine caching """

		objects = CachingManager()

		class Meta:
			abstract = True
Exemple #10
0
class Module(CachingMixin, AutoSlugModel):
    objects = CachingManager()

    class Meta:
        verbose_name = _('module')
        verbose_name_plural = _('modules')
        ordering = ['workshopmodule__order']
Exemple #11
0
class Stop(CachingMixin, models.Model):
    """
    "null=True" for some fields is a temporary solution for this import
    error: "null value in column "what_searched" violates not-null constraint"
    """
    stop_id = models.IntegerField(primary_key=True, default=1)
    date = models.DateTimeField(null=True)
    purpose = models.PositiveSmallIntegerField(choices=PURPOSE_CHOICES, default=UNKNOWN_PURPOSE)
    stop_date_text = models.CharField(max_length=20, blank=True, default='')
    stop_time_text = models.CharField(max_length=20, blank=True, default='')
    stop_location = models.CharField(max_length=1024)
    duration_text = models.CharField(max_length=20, blank=True, null=True)
    stop_reason = models.CharField(max_length=64)
    search_conducted = models.CharField(max_length=1, choices=YN_CHOICES, blank=True)
    search_reason = models.CharField(max_length=64, blank=True)
    seized = models.CharField(max_length=1, choices=YN_CHOICES, blank=True)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES, blank=True)
    date_of_birth_text = models.CharField(max_length=20, blank=True, null=True)
    ethnicity = models.CharField(max_length=20, choices=ETHNICITY_CHOICES, blank=True)
    officer_id = models.CharField(max_length=15, blank=True, default=None)
    agency_description = models.CharField(max_length=100)
    agency = models.ForeignKey('Agency', null=True, related_name='stops')
    age = models.PositiveSmallIntegerField(default=0)

    objects = CachingManager()

    def __str__(self):
        return 'Stop %d at %s at %s' % (
            self.stop_id, self.date, self.stop_location
        )
Exemple #12
0
class UserProfile(models.Model, CachingMixin):
    """Additional fields required for a user."""
    user = models.OneToOneField(User, primary_key=True)
    locale = LocaleField(blank=False, default='en-us')

    # Profile info
    full_name = models.CharField(max_length=255, blank=False)
    nickname = models.CharField(max_length=255, blank=True)
    country = CountryField(blank=False)

    # Mailing address
    address1 = models.CharField(max_length=255, blank=True)
    address2 = models.CharField(max_length=255, blank=True)
    city = models.CharField(max_length=255, blank=True)
    mailing_country = CountryField(blank=True)
    state = models.CharField(max_length=255, blank=True)
    postal_code = models.CharField(max_length=255, blank=True)

    objects = CachingManager()

    @property
    def display_name(self):
        return self.nickname or self.full_name

    @property
    def region(self):
        return regions.get_region(self.country)
class ChemicalComponent(CachingMixin, models.Model):
    """List of all possible nucleotide modifications."""
    id = models.CharField(max_length=8, primary_key=True)
    description = models.CharField(max_length=500)
    one_letter_code = models.CharField(max_length=1)
    ccd_id = models.CharField(max_length=3,
                              default='')  # Chemical Component Dictionary id
    source = models.CharField(max_length=10,
                              default='')  # Modomics, PDBe, others
    modomics_short_name = models.CharField(max_length=20,
                                           default='')  # m2A for 2A

    objects = CachingManager()

    class Meta:
        db_table = 'rnc_chemical_components'

    def get_pdb_url(self):
        """
        Get a link to PDB Chemical Component Dictionary from PDB entries and
        Modomics entries that are mapped to PDB.
        """
        pdb_url = 'http://www.ebi.ac.uk/pdbe-srv/pdbechem/chemicalCompound/show/{id}'
        if self.source == 'PDB':
            return pdb_url.format(id=self.id)
        elif self.source == 'Modomics' and self.ccd_id:
            return pdb_url.format(id=self.ccd_id)
        else:
            return None

    def get_modomics_url(self):
        """Get a link to Modomics modifications."""
        return 'http://modomics.genesilico.pl/modifications/%s' % self.modomics_short_name if self.source == 'Modomics' else None
Exemple #14
0
class SnippetTemplate(CachingMixin, models.Model):
    """
    A template for the body of a snippet. Can have multiple variables that the
    snippet will fill in.
    """
    name = models.CharField(max_length=255, unique=True)
    code = models.TextField()

    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    objects = models.Manager()
    cached_objects = CachingManager()

    def render(self, ctx):
        ctx.setdefault('snippet_id', 0)

        # Check if template is in cache, and cache it if it's not.
        cache_key = hashlib.sha1(self.code).hexdigest()
        template = template_cache.get(cache_key)
        if not template:
            template = jingo.env.from_string(self.code)
            template_cache[cache_key] = template
        return template.render(ctx)

    def __unicode__(self):
        return self.name
Exemple #15
0
class Solution(CachingMixin, models.Model):
    class SolutionStatus:
        Todo = 0
        Checking = 1
        Done = 2
        Expired = 3

    SolutionStatusChoices = ((SolutionStatus.Todo, 'Не выполнено'),
                             (SolutionStatus.Checking, 'На проверке'),
                             (SolutionStatus.Done, 'Проверенно'),
                             (SolutionStatus.Expired, 'Просрочено'))

    task = models.ForeignKey(Task,
                             related_name='solutions',
                             on_delete=models.CASCADE)
    student = models.ForeignKey(Student,
                                related_name='solutions',
                                on_delete=models.CASCADE)
    date_check = models.DateTimeField(blank=True, null=True)
    date_loading = models.DateTimeField(blank=True, null=True)
    mark = models.IntegerField(blank=True, null=True)
    mark_ai = models.IntegerField(blank=True, null=True)
    status = models.IntegerField(choices=SolutionStatusChoices,
                                 default=SolutionStatus.Todo)
    file_name = models.CharField(null=True, blank=True, max_length=256)
    percent = models.IntegerField(null=True, blank=True)
    img = models.ImageField(upload_to='solutions')

    objects = CachingManager()

    def __str__(self):
        return '%s: %s' % (self.student.name, self.task.title)
Exemple #16
0
class Banner(Badge):
    """Badge consisting of an image link."""
    customize_view = 'banners.views.customize_banner'

    objects = CachingManager()

    def customize_url(self):
        return reverse('banners.customize', kwargs={'banner_pk': self.pk})
Exemple #17
0
class Track(CachingMixin, AutoSlugModel):
    workshops = models.ManyToManyField(
        Workshop, through='TrackWorkshop', related_name='tracks', verbose_name=_('workshops'))
    objects = CachingManager()

    class Meta:
        verbose_name = _('track')
        verbose_name_plural = _('tracks')
Exemple #18
0
class SearchBasis(CachingMixin, models.Model):
    search_basis_id = models.IntegerField(primary_key=True)
    search = models.ForeignKey(Search)
    person = models.ForeignKey(Person)
    stop = models.ForeignKey(Stop)
    basis = models.CharField(max_length=4, choices=SEARCH_BASIS_CHOICES)

    objects = CachingManager()
Exemple #19
0
class Mount(CachingMixin, models.Model):
    name = models.CharField(max_length=100, unique=True)

    objects = models.Manager()
    cached = CachingManager()

    def __unicode__(self):
        return self.name
Exemple #20
0
class Category(CachingMixin, ModelBase):
    """Top-level category that contains sub-categories."""
    name = models.CharField(max_length=255)

    objects = CachingManager()

    def __unicode__(self):
        return self.name
Exemple #21
0
class Vote(models.Model, CachingMixin):
    """A vote from a user for a specific video."""
    user = models.ForeignKey(User)
    video = models.ForeignKey(Video2013)

    objects = CachingManager()

    class Meta:
        unique_together = ('user', 'video')
class EnsemblInsdcMapping(CachingMixin, models.Model):
    assembly_id = models.ForeignKey(EnsemblAssembly, related_name='assembly', db_column='assembly_id')
    insdc = models.CharField(max_length=255, db_index=True)
    ensembl_name = models.CharField(max_length=255, db_index=True)

    objects = CachingManager()

    class Meta:
        db_table = 'ensembl_insdc_mapping'
Exemple #23
0
class Job(CachingMixin, models.Model):
    name = models.CharField(max_length=50, unique=True)
    code = models.CharField(max_length=3, blank=True)

    objects = models.Manager()
    cached = CachingManager()

    def __unicode__(self):
        return self.name
Exemple #24
0
class Tool(CachingMixin, models.Model):
    """
    A tool, making edits with some ids in the edit summaries
    """
    objects = CachingManager()

    Match = namedtuple('Match', 'uid user summary')

    name = models.CharField(max_length=MAX_CHARFIELD_LENGTH)
    shortid = models.CharField(max_length=32)

    idregex = models.CharField(max_length=MAX_CHARFIELD_LENGTH)
    idgroupid = models.IntegerField()

    summaryregex = models.CharField(max_length=MAX_CHARFIELD_LENGTH)
    summarygroupid = models.IntegerField()

    userregex = models.CharField(max_length=MAX_CHARFIELD_LENGTH,
                                 null=True,
                                 blank=True)
    usergroupid = models.IntegerField(null=True, blank=True)

    url = models.URLField()

    def __str__(self):
        return self.name

    def match(self, user, comment):
        """
        Determines if an edit made with the supplied comment
        came from that tool, based on string matching with
        the supplied regular expressions.

        :returns: a Match named tuple if there
                is a match, None otherwise
        """
        idre = re.compile(self.idregex)
        idmatch = idre.match(comment)
        summaryre = re.compile(self.summaryregex)
        summarymatch = summaryre.match(comment)

        if not idmatch:
            return

        uid = idmatch.group(self.idgroupid)
        summary = ''
        if summarymatch:
            summary = summarymatch.group(self.summarygroupid)

        realuser = user
        if self.userregex:
            userre = re.compile(self.userregex)
            usermatch = userre.match(comment)
            if usermatch:
                realuser = usermatch.group(self.usergroupid)

        return self.Match(uid=uid, user=realuser, summary=summary)
Exemple #25
0
class Server(CachingMixin, models.Model):
    name = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50, unique=True)

    objects = models.Manager()
    cached = CachingManager()

    def __unicode__(self):
        return self.name
class BankReceivingEntry(BaseJournalEntry):
    """
    Holds information about receiving money for a Bank
    :class:`~accounts.models.Account`. The :attr:`main_transaction` is linked
    to the Bank :class:`~accounts.models.Account`.

    Bank Receiving Entries debit the Bank :class:`~accounts.models.Account`
    (via the :attr:`main_transaction`) while crediting all related
    :class:`Transactions<Transaction>`.

    .. attribute:: payor

        The Person or Company making the payment.

    .. attribute:: main_transaction

        The :class:`Transaction` that links this :class:`BankSpendingEntry`
        with it's Bank :class:`~accounts.models.Account`.
    """
    payor = models.CharField(max_length=50)
    main_transaction = models.OneToOneField('Transaction')

    objects = CachingManager()

    class Meta:
        verbose_name_plural = "bank receiving entries"

    def __unicode__(self):
        return self.memo

    def get_absolute_url(self):
        """Return the Entry's detail page."""
        return reverse('entries.views.show_bank_entry',
                       kwargs={
                           'entry_id': str(self.id),
                           'journal_type': 'CR'
                       })

    def get_edit_url(self):
        """Return the Entry's edit page."""
        return reverse('entries.views.add_bank_entry',
                       args=['CR', str(self.id)])

    def save(self, *args, **kwargs):
        """Set the date's of all related :class:`Transactions<Transaction>`."""
        self.full_clean()
        self.main_transaction.date = self.date
        self.main_transaction.save(pull_date=False)
        super(BankReceivingEntry, self).save(*args, **kwargs)
        for transaction in self.transaction_set.all():
            transaction.date = self.date
            transaction.save()

    @cached_method
    def get_number(self):
        """Return the Entry's formatted number."""
        return "CR#{0:06d}".format(self.id)
Exemple #27
0
class Format(CachingMixin, models.Model):
    id = models.BigAutoField(primary_key=True)
    source_id = models.BigIntegerField()
    root_server = models.ForeignKey(RootServer, on_delete=models.CASCADE)
    type = models.CharField(max_length=7, null=True)
    world_id = models.CharField(max_length=255, null=True)

    if settings.CACHE_FORMATS:
        objects = CachingManager()

    @staticmethod
    def import_from_bmlt_objects(root_server, bmlt_formats):
        logger = logging.getLogger('django')

        try:
            format_ids = [int(fid) for fid in bmlt_formats.keys()]
            Format.objects.filter(root_server=root_server).exclude(source_id__in=format_ids).delete()
        except Exception as e:
            message = 'Error deleting old formats: {}'.format(str(e))
            logger.error(message)
            ImportProblem.objects.create(root_server=root_server, message=message)

        for bmlt_format in bmlt_formats.values():
            bmlt_translated_formats = list(bmlt_format.values())

            try:
                bmlt_format = Format.validate_bmlt_object(root_server, bmlt_translated_formats[0])
            except ImportException as e:
                logger.warning('Error parsing format: {}'.format(str(e)))
                ImportProblem.objects.create(root_server=root_server, message=str(e), data=str(e.bmlt_object))
                continue

            format = Format.objects.get_or_create(root_server=root_server, source_id=bmlt_format['source_id'])[0]
            dirty = False
            field_names = ('type', 'world_id')
            changed_fields = []
            for field_name in field_names:
                if set_if_changed(format, field_name, bmlt_format[field_name]):
                    changed_fields.append(field_name)
                    dirty = True

            if dirty:
                format.save()

            TranslatedFormat.import_from_bmlt_objects(root_server, bmlt_translated_formats)

    @staticmethod
    def validate_bmlt_object(root_server, bmlt):
        return {
            'source_id': get_int(bmlt, 'id'),
            'type': bmlt.get('format_type_enum', None),
            'world_id': bmlt.get('world_id', None),
        }

    def __str__(self):
        return '({}:{})'.format(self.id, self.root_server)
class JournalEntry(BaseJournalEntry):
    """A concrete class of the :class:`BaseJournalEntry` model."""
    objects = CachingManager()

    def save(self, *args, **kwargs):
        """Save all related :class:`Transactions<Transaction>` after saving."""
        self.full_clean()
        super(JournalEntry, self).save(*args, **kwargs)
        for transaction in self.transaction_set.all():
            transaction.save()
Exemple #29
0
class User(CachingMixin, models.Model):
    name = models.CharField(max_length=30)

    objects = CachingManager()

    if django.VERSION[0] >= 2:

        class Meta:
            # Tell Django to use this manager when resolving foreign keys. (Django >= 2.0)
            base_manager_name = 'objects'
Exemple #30
0
class Person(CachingMixin, models.Model):
    person_id = models.IntegerField(primary_key=True)
    stop = models.ForeignKey(Stop)
    type = models.CharField(max_length=2, choices=PERSON_TYPE_CHOICES)
    age = models.PositiveSmallIntegerField()
    gender = models.CharField(max_length=2, choices=GENDER_CHOICES)
    ethnicity = models.CharField(max_length=2, choices=ETHNICITY_CHOICES)
    race = models.CharField(max_length=2, choices=RACE_CHOICES)

    objects = CachingManager()