Skip to content

Commit e2ba8d9

Browse files
author
Otajon
committed
The first commit
0 parents  commit e2ba8d9

File tree

136 files changed

+19416
-0
lines changed

Some content is hidden

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

136 files changed

+19416
-0
lines changed

.gitignore

+132
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
6+
# C extensions
7+
*.so
8+
9+
# Distribution / packaging
10+
.Python
11+
build/
12+
develop-eggs/
13+
dist/
14+
downloads/
15+
eggs/
16+
.eggs/
17+
lib/
18+
lib64/
19+
parts/
20+
sdist/
21+
var/
22+
wheels/
23+
pip-wheel-metadata/
24+
share/python-wheels/
25+
*.egg-info/
26+
.installed.cfg
27+
*.egg
28+
MANIFEST
29+
30+
# PyInstaller
31+
# Usually these files are written by a python script from a template
32+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
33+
*.manifest
34+
*.spec
35+
36+
# Installer logs
37+
pip-log.txt
38+
pip-delete-this-directory.txt
39+
40+
# Unit test / coverage reports
41+
htmlcov/
42+
.tox/
43+
.nox/
44+
.coverage
45+
.coverage.*
46+
.cache
47+
nosetests.xml
48+
coverage.xml
49+
*.cover
50+
*.py,cover
51+
.hypothesis/
52+
.pytest_cache/
53+
54+
# Translations
55+
*.mo
56+
*.pot
57+
58+
# Django stuff:
59+
*.log
60+
local_settings.py
61+
db.sqlite3
62+
db.sqlite3-journal
63+
64+
# Flask stuff:
65+
instance/
66+
.webassets-cache
67+
68+
# Scrapy stuff:
69+
.scrapy
70+
71+
# Sphinx documentation
72+
docs/_build/
73+
74+
# PyBuilder
75+
target/
76+
77+
# Jupyter Notebook
78+
.ipynb_checkpoints
79+
80+
# IPython
81+
profile_default/
82+
ipython_config.py
83+
84+
# pyenv
85+
.python-version
86+
87+
# pipenv
88+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
90+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
91+
# install all needed dependencies.
92+
#Pipfile.lock
93+
94+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
95+
__pypackages__/
96+
97+
# Celery stuff
98+
celerybeat-schedule
99+
celerybeat.pid
100+
101+
# SageMath parsed files
102+
*.sage.py
103+
104+
# Environments
105+
.env
106+
.venv
107+
env/
108+
venv/
109+
ENV/
110+
env.bak/
111+
venv.bak/
112+
113+
# Spyder project settings
114+
.spyderproject
115+
.spyproject
116+
117+
# Rope project settings
118+
.ropeproject
119+
120+
# mkdocs documentation
121+
/site
122+
123+
# mypy
124+
.mypy_cache/
125+
.dmypy.json
126+
dmypy.json
127+
128+
# Pyre type checker
129+
.pyre/
130+
../.idea/
131+
.idea/
132+
.DS_Store

blog/__init__.py

Whitespace-only changes.

blog/admin.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from django.contrib import admin
2+
from .models import About, Category, Tag, Blog, Comment,Skill, Contact, Subscribe
3+
4+
admin.site.register(About)
5+
admin.site.register(Category)
6+
admin.site.register(Tag)
7+
admin.site.register(Blog)
8+
admin.site.register(Comment)
9+
admin.site.register(Skill)
10+
admin.site.register(Contact)
11+
admin.site.register(Subscribe)
12+

blog/apps.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class BlogConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'blog'

blog/forms.py

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from django import forms
2+
from .models import Contact, Subscribe, Comment
3+
4+
5+
class ContactForm(forms.ModelForm):
6+
class Meta:
7+
model = Contact
8+
fields = '__all__'
9+
10+
def __init__(self, *args, **kwargs):
11+
super(ContactForm, self).__init__(*args, **kwargs)
12+
for field_name, field in self.fields.items():
13+
field.widget.attrs['class'] = 'form-control'
14+
field.widget.attrs['placeholder'] = field_name.title()
15+
16+
17+
class SubscribeForm(forms.ModelForm):
18+
class Meta:
19+
model = Subscribe
20+
fields = '__all__'
21+
22+
def __init__(self, *args, **kwargs):
23+
super(SubscribeForm, self).__init__(*args, **kwargs)
24+
for field_name, field in self.fields.items():
25+
field.widget.attrs['class'] = 'form-control'
26+
field.widget.attrs['placeholder'] = field_name.title()
27+
28+
29+
class CommentForm(forms.ModelForm):
30+
class Meta:
31+
model = Comment
32+
fields = '__all__'
33+
exclude = ['blog']
34+
35+
def __init__(self, *args, **kwargs):
36+
super(CommentForm, self).__init__(*args, **kwargs)
37+
for field_name, field in self.fields.items():
38+
field.widget.attrs['class'] = 'form-control'

blog/migrations/0001_initial.py

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Generated by Django 4.2.7 on 2023-11-14 07:52
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='About',
17+
fields=[
18+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19+
('name', models.CharField(max_length=202)),
20+
('image', models.ImageField(upload_to='')),
21+
('body', models.TextField()),
22+
('linkedin', models.URLField(blank=True, null=True)),
23+
('instagram', models.URLField(blank=True, null=True)),
24+
('GitHub', models.URLField(blank=True, null=True)),
25+
('telegram', models.URLField(blank=True, null=True)),
26+
],
27+
),
28+
migrations.CreateModel(
29+
name='Blog',
30+
fields=[
31+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
32+
('title', models.CharField(max_length=202)),
33+
('image', models.ImageField(upload_to='blog/')),
34+
('body', models.TextField()),
35+
('upload_date', models.DateField(auto_now=True)),
36+
('create_date', models.DateField(auto_now_add=True)),
37+
],
38+
),
39+
migrations.CreateModel(
40+
name='Category',
41+
fields=[
42+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
43+
('title', models.CharField(max_length=202)),
44+
],
45+
),
46+
migrations.CreateModel(
47+
name='Contact',
48+
fields=[
49+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
50+
('full_name', models.CharField(max_length=202)),
51+
('email', models.EmailField(max_length=254)),
52+
('phone', models.CharField(max_length=202)),
53+
('message', models.TextField()),
54+
('upload_date', models.DateField(auto_now=True)),
55+
('create_date', models.DateField(auto_now_add=True)),
56+
],
57+
),
58+
migrations.CreateModel(
59+
name='Skill',
60+
fields=[
61+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
62+
('title', models.CharField(max_length=202)),
63+
('degree', models.IntegerField()),
64+
],
65+
),
66+
migrations.CreateModel(
67+
name='Subscribe',
68+
fields=[
69+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
70+
('email', models.EmailField(max_length=254)),
71+
],
72+
),
73+
migrations.CreateModel(
74+
name='Tag',
75+
fields=[
76+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
77+
('title', models.CharField(max_length=202)),
78+
],
79+
),
80+
migrations.CreateModel(
81+
name='Comment',
82+
fields=[
83+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
84+
('full_name', models.CharField(max_length=202)),
85+
('email', models.EmailField(max_length=254)),
86+
('phone', models.CharField(max_length=202)),
87+
('message', models.TextField()),
88+
('upload_date', models.DateField(auto_now=True)),
89+
('create_date', models.DateField(auto_now_add=True)),
90+
('blog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='blog.blog')),
91+
],
92+
),
93+
migrations.AddField(
94+
model_name='blog',
95+
name='category',
96+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='category', to='blog.category'),
97+
),
98+
migrations.AddField(
99+
model_name='blog',
100+
name='tag',
101+
field=models.ManyToManyField(to='blog.tag'),
102+
),
103+
]

blog/migrations/__init__.py

Whitespace-only changes.

blog/models.py

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
from django.db import models
2+
3+
# Create your models here.
4+
5+
class About(models.Model):
6+
name = models.CharField(max_length=202)
7+
image = models.ImageField()
8+
body = models.TextField()
9+
10+
linkedin = models.URLField(blank=True, null=True)
11+
instagram = models.URLField(blank=True, null=True)
12+
GitHub = models.URLField(blank=True, null=True)
13+
telegram = models.URLField(blank=True, null=True)
14+
15+
16+
17+
def __str__(self):
18+
return self.name
19+
20+
21+
class Category(models.Model):
22+
title = models.CharField(max_length=202)
23+
24+
def __str__(self):
25+
return self.title
26+
27+
28+
class Tag(models.Model):
29+
title = models.CharField(max_length=202)
30+
31+
def __str__(self):
32+
return self.title
33+
34+
35+
class Blog(models.Model):
36+
title = models.CharField(max_length=202)
37+
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='category')
38+
image = models.ImageField(upload_to='blog/')
39+
body = models.TextField()
40+
tag = models.ManyToManyField(Tag, )
41+
42+
upload_date = models.DateField(auto_now=True)
43+
create_date = models.DateField(auto_now_add=True)
44+
45+
def __str__(self):
46+
return self.title
47+
48+
class Comment(models.Model):
49+
blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='comments')
50+
full_name = models.CharField(max_length=202)
51+
email = models.EmailField()
52+
phone = models.CharField(max_length=202)
53+
message = models.TextField()
54+
55+
upload_date = models.DateField(auto_now=True)
56+
create_date = models.DateField(auto_now_add=True)
57+
58+
def __str__(self):
59+
return self.full_name
60+
61+
62+
class Skill(models.Model):
63+
title = models.CharField(max_length=202)
64+
degree = models.IntegerField()
65+
66+
def __str__(self):
67+
return self.title
68+
69+
70+
class Contact(models.Model):
71+
full_name = models.CharField(max_length=202)
72+
email = models.EmailField()
73+
phone = models.CharField(max_length=202)
74+
message = models.TextField()
75+
76+
77+
upload_date = models.DateField(auto_now=True)
78+
create_date = models.DateField(auto_now_add=True)
79+
80+
def __str__(self):
81+
return self.full_name
82+
83+
84+
85+
class Subscribe(models.Model):
86+
email = models.EmailField()
87+
88+
89+
def __init__(self):
90+
return self.email

blog/tests.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.test import TestCase
2+
3+
# Create your tests here.

0 commit comments

Comments
 (0)