Skip to content

Commit ea7da3c

Browse files
committed
Initial Commit
0 parents  commit ea7da3c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+14760
-0
lines changed

Project/__init__.py

Whitespace-only changes.

Project/actions.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import json
2+
3+
from django.views.decorators.csrf import ensure_csrf_cookie
4+
from django.http import JsonResponse
5+
6+
from .forms import MODEL_FORMS
7+
8+
9+
@ensure_csrf_cookie
10+
def create_object(request):
11+
form_data = json.loads(request.body)
12+
model_class = form_data.pop('model')
13+
model_form = MODEL_FORMS[model_class](form_data)
14+
15+
result = {'success': False}
16+
if model_form.is_valid():
17+
model_form.save()
18+
result["success"] = True
19+
else:
20+
result["errors"] = model_form.errors.as_json()
21+
22+
return JsonResponse(result)

Project/admin.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.contrib import admin
2+
3+
from .models import Project, Resource, Article, Author
4+
5+
admin.site.register(Project)
6+
admin.site.register(Resource)

Project/apps.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from django.apps import AppConfig
2+
3+
4+
class ProjectConfig(AppConfig):
5+
name = 'Project'

Project/forms.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from django.forms import ModelForm
2+
3+
from .models import Project, Resource, Binder
4+
5+
6+
class ProjectForm(ModelForm):
7+
8+
class Meta:
9+
model = Project
10+
fields = ['name',]
11+
12+
13+
class BinderForm(ModelForm):
14+
15+
class Meta:
16+
model = Binder
17+
fields = ['name',]
18+
19+
20+
class ResourceForm(ModelForm):
21+
22+
class Meta:
23+
model = Resource
24+
fields = ['url',]
25+
26+
27+
MODEL_FORMS = {
28+
"project": ProjectForm,
29+
"binder": BinderForm,
30+
"resource": ResourceForm
31+
}

Project/migrations/0001_initial.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 3.1.3 on 2020-11-24 01:40
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
initial = True
10+
11+
dependencies = [
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='Project',
17+
fields=[
18+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19+
('name', models.CharField(max_length=24)),
20+
],
21+
),
22+
migrations.CreateModel(
23+
name='Resource',
24+
fields=[
25+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
26+
('url', models.URLField()),
27+
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Project.project')),
28+
],
29+
),
30+
]
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Generated by Django 3.1.3 on 2020-11-24 01:53
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('Project', '0001_initial'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='Author',
16+
fields=[
17+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('name', models.CharField(max_length=64)),
19+
('slug', models.CharField(default='', max_length=64)),
20+
],
21+
),
22+
migrations.AddField(
23+
model_name='project',
24+
name='slug',
25+
field=models.SlugField(default=1),
26+
preserve_default=False,
27+
),
28+
migrations.CreateModel(
29+
name='Article',
30+
fields=[
31+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
32+
('name', models.CharField(max_length=64)),
33+
('content', models.TextField()),
34+
('slug', models.CharField(default='', max_length=64)),
35+
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Project.author')),
36+
],
37+
),
38+
]

Project/migrations/0003_binder.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 3.1.3 on 2020-11-24 19:46
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('Project', '0002_auto_20201123_1753'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='Binder',
16+
fields=[
17+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('name', models.CharField(max_length=36)),
19+
('project', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='Project.project')),
20+
],
21+
),
22+
]

Project/migrations/__init__.py

Whitespace-only changes.

Project/models.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from django.db import models
2+
3+
4+
class Project(models.Model):
5+
name = models.CharField(max_length=24)
6+
slug = models.SlugField()
7+
8+
def __str__(self):
9+
return self.name
10+
11+
12+
class Binder(models.Model):
13+
name = models.CharField(max_length=36)
14+
project = models.ForeignKey(Project, blank=True, null=True, on_delete=models.SET_NULL)
15+
16+
17+
class Resource(models.Model):
18+
url = models.URLField()
19+
project = models.ForeignKey(Project, on_delete=models.CASCADE)
20+
21+
22+
class Article(models.Model):
23+
"""Table schema to store articles."""
24+
name = models.CharField(max_length=64)
25+
author = models.ForeignKey('Author', on_delete=models.CASCADE)
26+
content = models.TextField()
27+
slug = models.CharField(default='', max_length=64)
28+
29+
def __str__(self):
30+
return '%s' % self.name
31+
32+
33+
class Author(models.Model):
34+
"""Table schema to store auhtors."""
35+
name = models.CharField(max_length=64)
36+
slug = models.CharField(default='', max_length=64)
37+
38+
def __str__(self):
39+
return '%s' % self.name

0 commit comments

Comments
 (0)