Machina preview.
[wolnelektury.git] / src / libraries / models.py
1 # -*- coding: utf-8 -*-\r
2 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.\r
3 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.\r
4 #\r
5 from django.db import models\r
6 from django.utils.translation import ugettext_lazy as _\r
7 \r
8 \r
9 class Catalog(models.Model):\r
10     """Represents a dictionary of libraries"""\r
11 \r
12     name = models.CharField(_('name'), max_length=120, null=False)\r
13     slug = models.SlugField(_('slug'), max_length=120, unique=True, db_index=True)\r
14 \r
15     class Meta:\r
16         verbose_name = _('catalog')\r
17         verbose_name_plural = _('catalogs')\r
18 \r
19     def __str__(self):\r
20         return self.name\r
21 \r
22     @models.permalink\r
23     def get_absolute_url(self):\r
24         return 'libraries_catalog_view', [self.slug]\r
25 \r
26 \r
27 class Library(models.Model):\r
28     """Represent a single library in the libraries dictionary"""\r
29 \r
30     name = models.CharField(_('name'), max_length=120, blank=True)\r
31     slug = models.SlugField(_('slug'), max_length=120, unique=True, db_index=True, null=True)\r
32     catalog = models.ForeignKey(Catalog, null=False, related_name='libraries', on_delete=models.PROTECT)\r
33     url = models.CharField(_('url'), max_length=120, blank=True)\r
34     description = models.TextField(_('description'), blank=True)\r
35 \r
36     class Meta:\r
37         verbose_name = _('library')\r
38         verbose_name_plural = _('libraries')\r
39 \r
40     def __str__(self):\r
41         return self.name\r
42 \r
43     @models.permalink\r
44     def get_absolute_url(self):\r
45         return ('libraries_library_view', [self.catalog.slug, self.slug])\r