X-Git-Url: https://git.mdrn.pl/turniej.git/blobdiff_plain/479cb324a4cbc258f3f6de8de1025e7dccb1da2d..80b74642b6a6a375462d6eae7efb203981a412d6:/apps/poetry/models.py diff --git a/apps/poetry/models.py b/apps/poetry/models.py deleted file mode 100644 index 58b8caf..0000000 --- a/apps/poetry/models.py +++ /dev/null @@ -1,85 +0,0 @@ -import os -import subprocess -from django.db import models -from django.urls import reverse -from django.conf import settings -from poetry.utils import get_hash - - -class Poet(models.Model): - name = models.CharField(max_length=50) - path = models.CharField(max_length=255) - slug = models.SlugField(max_length=50, unique=True, db_index=True) - author = models.CharField(max_length=128, blank=True) - url = models.CharField(max_length=255, blank=True) - description = models.TextField(blank=True) - first_line_title = models.BooleanField(default=False) - skip_first_lines = models.IntegerField(default=0) - - def __str__(self): - return self.name - - def get_absolute_url(self): - return reverse('poetry_poet', kwargs={'slug': self.slug}) - - def write(self): - curdir = os.getcwd() - os.chdir(os.path.dirname(self.path)) - proc = subprocess.Popen(self.path, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - os.chdir(curdir) - stdout, stderr = proc.communicate() - text = str(stdout, "utf-8", errors="ignore")[:1000] - slug = get_hash(text) - title = '' - if self.first_line_title: - title, text = text.split('\n', 1) - if self.skip_first_lines: - text = text.split('\n', self.skip_first_lines)[-1] - text = text.strip('\n') - poem = self.poem_set.create( - slug=slug, - text=text, - title=title - ) - return poem - - def make_for_contest(self): - assert not self.poem_set.filter(for_contest=True).exists() - for i in range(settings.POETRY_POEMS_FOR_CONTEST): - p = self.write() - p.for_contest = True - p.save() - return self.poem_set.filter(for_contest=True) - - def contest_poems(self): - return self.poem_set.filter(in_contest=True) - - -class Poem(models.Model): - slug = models.SlugField(max_length=50, db_index=True) - title = models.CharField(max_length=255, null=True, blank=True) - text = models.TextField() - poet = models.ForeignKey(Poet, on_delete=models.CASCADE) - created_at = models.DateTimeField(auto_now_add=True, editable=False, db_index=True) - seen_at = models.DateTimeField(auto_now_add=True, editable=False) - view_count = models.IntegerField(default=1) - - for_contest = models.BooleanField(default=False) - in_contest = models.BooleanField(default=False) - - def __str__(self): - oneliner = "%s, %s" % (self.poet.name, self.pretty_title()) - oneliner += " [%s…]" % (" ".join(self.text.split()[:5])) - return oneliner - - def get_absolute_url(self): - return reverse('poetry_poem', kwargs={'slug': self.slug}) - - def pretty_title(self): - return self.title or "***" - - def visit(self): - self.view_count += 1 - self.seen_at = datetime.now() - self.save()