]> gitweb.fperrin.net Git - djsite.git/commitdiff
Try new multilinks approach multilinks
authorFrédéric Perrin <fred@fperrin.net>
Thu, 1 Dec 2016 09:11:50 +0000 (09:11 +0000)
committerFrédéric Perrin <fred@fperrin.net>
Thu, 1 Dec 2016 09:11:50 +0000 (09:11 +0000)
12 files changed:
djsite/settings_common.py
djsite/urls.py
quotes_beta/__init__.py [new file with mode: 0644]
quotes_beta/addquote.py [new file with mode: 0644]
quotes_beta/admin.py [new file with mode: 0644]
quotes_beta/adminviews.py [new file with mode: 0644]
quotes_beta/forms.py [new file with mode: 0644]
quotes_beta/migrations/0001_initial.py [new file with mode: 0644]
quotes_beta/migrations/__init__.py [new file with mode: 0644]
quotes_beta/models.py [new file with mode: 0644]
quotes_beta/urls.py [new file with mode: 0644]
quotes_beta/views.py [new file with mode: 0644]

index 1bc166c3bde9ef7327ce571cab0b5652283e915d..6474c2b24cf9a56bc2024830e46f03cf815b8a3a 100644 (file)
@@ -36,8 +36,10 @@ INSTALLED_APPS = (
     'ajax_select',
     'jquery',
 #    'jquery_ui',
+    'formtools',
     'tinymce',
     'quotes',
+    'quotes_beta',
 )
 
 MIDDLEWARE_CLASSES = (
index 48216942fc1514e4d9f0c8fdff053e7c197cc720..6aa2b59dbe83caa6adc4c750893e5f750438ab3d 100644 (file)
@@ -19,13 +19,14 @@ from django.views.generic.base import RedirectView
 
 import quotes.views
 
-admin.autodiscover()
+admin.autodiscover()
 
 urlpatterns = [
     url(r'^cntrl/', include(admin.site.urls)),
     url(r'^tinymce/', include('tinymce.urls')),
     url(r'^ajax_select/', include('ajax_select.urls')),
     url(r'^quotes/', include('quotes.urls', namespace='quotes')),
+    url(r'^quotes-beta/', include('quotes_beta.urls', namespace='quotes_beta')),
 
     url(r'^$', RedirectView.as_view(url='/quotes/', permanent=True)),
 ]
diff --git a/quotes_beta/__init__.py b/quotes_beta/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/quotes_beta/addquote.py b/quotes_beta/addquote.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/quotes_beta/admin.py b/quotes_beta/admin.py
new file mode 100644 (file)
index 0000000..94b1951
--- /dev/null
@@ -0,0 +1,12 @@
+from django.contrib import admin
+
+# Register your models here.
+from .models import *
+
+admin.site.register(Tag)
+admin.site.register(Context)
+admin.site.register(Person)
+admin.site.register(Book)
+admin.site.register(Film)
+admin.site.register(Quote)
+admin.site.register(Link)
diff --git a/quotes_beta/adminviews.py b/quotes_beta/adminviews.py
new file mode 100644 (file)
index 0000000..a162d85
--- /dev/null
@@ -0,0 +1,2 @@
+def add(request):
+    pass
diff --git a/quotes_beta/forms.py b/quotes_beta/forms.py
new file mode 100644 (file)
index 0000000..7a4f372
--- /dev/null
@@ -0,0 +1,6 @@
+from django import forms
+
+class QuoteForm(forms.Form):
+    text = form.TextField()
+
+    parent = form.CharField()
diff --git a/quotes_beta/migrations/0001_initial.py b/quotes_beta/migrations/0001_initial.py
new file mode 100644 (file)
index 0000000..4c61360
--- /dev/null
@@ -0,0 +1,94 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2016-11-19 13:55
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import quotes.localmodels
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Context',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('creation_date', models.DateTimeField(auto_now_add=True)),
+                ('last_modification', models.DateTimeField(auto_now=True)),
+                ('name', models.CharField(max_length=100, unique=True)),
+                ('date', models.DateField(blank=True, help_text=b'Date of the quote', null=True)),
+                ('notes', quotes.localmodels.HTMLField(blank=True, help_text=b'Notes about the entry; may be left blank. Displayed                       on the public pages')),
+                ('pvt_notes', quotes.localmodels.HTMLField(blank=True, help_text=b'Notes about the entry; not displayed on                           the public interface')),
+                ('nb_display', models.BigIntegerField(default=0)),
+            ],
+            options={
+                'ordering': ['name'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Link',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('relation_type', models.CharField(max_length=100)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Tag',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('tag', models.CharField(max_length=100, unique=True)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Book',
+            fields=[
+                ('context_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='quotes_beta.Context')),
+            ],
+            bases=('quotes_beta.context',),
+        ),
+        migrations.CreateModel(
+            name='Film',
+            fields=[
+                ('context_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='quotes_beta.Context')),
+            ],
+            bases=('quotes_beta.context',),
+        ),
+        migrations.CreateModel(
+            name='Person',
+            fields=[
+                ('context_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='quotes_beta.Context')),
+                ('birth_date', models.DateField(blank=True, help_text=b'Date of birth', null=True)),
+                ('death_date', models.DateField(blank=True, help_text=b'Date of death (leave blank                                   if still alive!)', null=True)),
+            ],
+            bases=('quotes_beta.context',),
+        ),
+        migrations.CreateModel(
+            name='Quote',
+            fields=[
+                ('context_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='quotes_beta.Context')),
+                ('text', quotes.localmodels.HTMLField()),
+            ],
+            bases=('quotes_beta.context',),
+        ),
+        migrations.AddField(
+            model_name='link',
+            name='child',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='parents', to='quotes_beta.Context'),
+        ),
+        migrations.AddField(
+            model_name='link',
+            name='parent',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='childs', to='quotes_beta.Context'),
+        ),
+        migrations.AddField(
+            model_name='context',
+            name='tags',
+            field=models.ManyToManyField(blank=True, help_text=b'Not implemented yet', to='quotes_beta.Tag'),
+        ),
+    ]
diff --git a/quotes_beta/migrations/__init__.py b/quotes_beta/migrations/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/quotes_beta/models.py b/quotes_beta/models.py
new file mode 100644 (file)
index 0000000..ba05a28
--- /dev/null
@@ -0,0 +1,89 @@
+from django.db import models
+from django.urls import reverse
+
+from quotes.localmodels import HTMLField
+
+# Create your models here.
+class Tag(models.Model):
+    tag = models.CharField(max_length=100, unique=True)
+
+    def __unicode__(self):
+        return self.tag
+
+    def get_absolute_url(self):
+        return reverse('quotes_beta:tags', args=[str(self.id)])
+
+class Context(models.Model):
+    creation_date = models.DateTimeField(auto_now_add=True)
+    last_modification = models.DateTimeField(auto_now=True)
+
+    name = models.CharField(max_length=100,
+                            unique=True)
+
+    date = models.DateField(blank=True, null=True,
+                            help_text="Date of the quote")
+
+    notes = HTMLField(blank=True, help_text= \
+                      "Notes about the entry; may be left blank. Displayed \
+                      on the public pages")
+    pvt_notes = HTMLField(blank=True, help_text= \
+                          "Notes about the entry; not displayed on \
+                          the public interface")
+
+    tags = models.ManyToManyField(Tag, blank=True,
+                                  help_text='Not implemented yet')
+
+    nb_display = models.BigIntegerField(default=0)
+    def incr_display(self):
+        self.nb_display = models.F('nb_display') + 1
+        self.save()
+
+    def add_parent(self, parent):
+        descendants = self.childs + self
+        ascendants = parent + parent.parents
+        for descendant in descendants:
+            for ascendant in ascendants:
+                Link.objects.create(child=descendant, parent=ascendant)
+
+    def __unicode__(self):
+        return self.name
+
+    class Meta:
+        ordering = ['name']
+
+class Person(Context):
+    birth_date = models.DateField(blank=True, null=True,
+                                  help_text="Date of birth")
+    death_date = models.DateField(blank=True, null=True,
+                                  help_text="Date of death (leave blank \
+                                  if still alive!)")
+
+    def get_absolute_url(self):
+        return reverse('quotes_beta:person', args=[str(self.id)])
+
+class Book(Context):
+    def get_absolute_url(self):
+        return reverse('quotes_beta:work', args=[str(self.id)])
+
+class Film(Context):
+    def get_absolute_url(self):
+        return reverse('quotes_beta:work', args=[str(self.id)])
+
+class Quote(Context):
+    text = HTMLField()
+
+    def __unicode__(self):
+        return self.work.author.name + ": " + self.text
+
+    def get_absolute_url(self):
+        return reverse('quotes_beta:onequote', args=[str(self.id)])
+
+    # class Meta(Context.Meta):
+    #     ordering = ['-pk']
+
+class Link(models.Model):
+    child = models.ForeignKey(Context, related_name='parents')
+    parent = models.ForeignKey(Context, related_name='childs')
+    relation_type = models.CharField(max_length=100)
+
+    
diff --git a/quotes_beta/urls.py b/quotes_beta/urls.py
new file mode 100644 (file)
index 0000000..e56d083
--- /dev/null
@@ -0,0 +1,14 @@
+from django.conf.urls import url
+from django.contrib.auth.views import login
+
+from . import views, adminviews
+
+urlpatterns = [
+    url(r'^$', views.index, name='index'),
+
+#    url(r'^admin/$', adminviews.listadmintools, name='listadmintools'),
+    url(r'^admin/login$', login, {'template_name': 'admin/login.html'}),
+    url(r'^admin/add/$', adminviews.add, name='add'),
+
+#    url(r'^all/$', views.all, name="all"),
+]
diff --git a/quotes_beta/views.py b/quotes_beta/views.py
new file mode 100644 (file)
index 0000000..3c9edf7
--- /dev/null
@@ -0,0 +1,2 @@
+def index(request):
+    pass