Skip to content
Snippets Groups Projects
Commit c544526d authored by BinBin's avatar BinBin
Browse files

Merge branch 'main' of https://git.ajou.ac.kr/pubin2564/_

parents 59e2e590 e2defaf8
No related branches found
No related tags found
No related merge requests found
Showing
with 126 additions and 435 deletions
# Generated by Django 3.2.6 on 2021-10-03 06:33 # Generated by Django 4.0.4 on 2022-05-31 14:31
from django.db import migrations, models from django.db import migrations, models
...@@ -18,8 +18,41 @@ class Migration(migrations.Migration): ...@@ -18,8 +18,41 @@ class Migration(migrations.Migration):
('content', models.TextField()), ('content', models.TextField()),
('image', models.TextField()), ('image', models.TextField()),
('profile_image', models.TextField()), ('profile_image', models.TextField()),
('user_id', models.TextField()), ('email', models.EmailField(blank=True, max_length=100, null=True, verbose_name='email')),
('user_id', models.CharField(blank=True, max_length=30, null=True)),
('like_count', models.IntegerField()), ('like_count', models.IntegerField()),
('views', models.IntegerField()),
('type', models.BooleanField(default=False)),
('univ', models.CharField(max_length=30)),
], ],
), ),
migrations.CreateModel(
name='FeedLike',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('feed_id', models.IntegerField()),
('email', models.CharField(blank=True, max_length=30, null=True)),
('is_like', models.BooleanField(default=False)),
],
),
migrations.CreateModel(
name='FeedView',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('email', models.EmailField(max_length=100, verbose_name='email')),
('feed_id', models.IntegerField()),
],
),
migrations.AddIndex(
model_name='feedview',
index=models.Index(fields=['email'], name='content_fee_email_a02fc8_idx'),
),
migrations.AddIndex(
model_name='feedlike',
index=models.Index(fields=['feed_id'], name='content_fee_feed_id_1c82cf_idx'),
),
migrations.AddIndex(
model_name='feedlike',
index=models.Index(fields=['email'], name='content_fee_email_3901d6_idx'),
),
] ]
# Generated by Django 3.2.6 on 2021-10-11 12:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('content', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='feed',
name='user_id',
field=models.CharField(blank=True, max_length=30, null=True),
),
]
# Generated by Django 3.2.6 on 2021-10-11 12:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('content', '0002_alter_feed_user_id'),
]
operations = [
migrations.AddField(
model_name='feed',
name='email',
field=models.EmailField(blank=True, max_length=100, null=True, verbose_name='email'),
),
]
# Generated by Django 3.2.6 on 2021-10-11 12:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('content', '0003_feed_email'),
]
operations = [
migrations.CreateModel(
name='FeedLike',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('feed_id', models.IntegerField()),
('email', models.CharField(blank=True, max_length=30, null=True)),
('is_like', models.BooleanField(default=False)),
('content', models.TextField()),
],
),
migrations.CreateModel(
name='Reply',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('feed_id', models.IntegerField()),
('created_at', models.DateTimeField(auto_now_add=True)),
('user_id', models.CharField(blank=True, max_length=30, null=True)),
('content', models.TextField()),
],
),
migrations.AddIndex(
model_name='reply',
index=models.Index(fields=['feed_id'], name='content_rep_feed_id_49ae3d_idx'),
),
migrations.AddIndex(
model_name='feedlike',
index=models.Index(fields=['feed_id'], name='content_fee_feed_id_1c82cf_idx'),
),
migrations.AddIndex(
model_name='feedlike',
index=models.Index(fields=['email'], name='content_fee_email_3901d6_idx'),
),
]
# Generated by Django 3.2.6 on 2021-10-11 12:31
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('content', '0004_auto_20211011_2128'),
]
operations = [
migrations.RemoveIndex(
model_name='feedlike',
name='content_fee_email_3901d6_idx',
),
]
# Generated by Django 3.2.6 on 2021-10-11 12:31
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('content', '0005_remove_feedlike_content_fee_email_3901d6_idx'),
]
operations = [
migrations.AddIndex(
model_name='feedlike',
index=models.Index(fields=['email'], name='content_fee_email_3901d6_idx'),
),
]
# Generated by Django 3.2.6 on 2021-10-11 15:07
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('content', '0006_feedlike_content_fee_email_3901d6_idx'),
]
operations = [
migrations.RemoveField(
model_name='feedlike',
name='content',
),
migrations.AddField(
model_name='reply',
name='email',
field=models.EmailField(blank=True, max_length=100, null=True, verbose_name='email'),
),
]
# Generated by Django 3.2.6 on 2021-10-14 12:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('content', '0007_auto_20211012_0007'),
]
operations = [
migrations.CreateModel(
name='Bookmark',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('email', models.EmailField(max_length=100, verbose_name='email')),
('feed_id', models.IntegerField()),
('is_bookmarked', models.BooleanField(default=True)),
],
),
migrations.AddIndex(
model_name='bookmark',
index=models.Index(fields=['email'], name='content_boo_email_03c3c8_idx'),
),
]
...@@ -51,7 +51,6 @@ class FeedView(models.Model): ...@@ -51,7 +51,6 @@ class FeedView(models.Model):
class Bookmark(models.Model): class Bookmark(models.Model):
email = models.EmailField(verbose_name='email', max_length=100) email = models.EmailField(verbose_name='email', max_length=100)
feed_id = models.IntegerField() feed_id = models.IntegerField()
is_bookmarked = models.BooleanField(default=True)
class Meta: class Meta:
indexes = [ indexes = [
......
...@@ -4,7 +4,7 @@ from .views import UploadFeed, CreateReply, LikeFeed, ViewFeed, BookmarkFeed, De ...@@ -4,7 +4,7 @@ from .views import UploadFeed, CreateReply, LikeFeed, ViewFeed, BookmarkFeed, De
urlpatterns = [ urlpatterns = [
path('upload', UploadFeed.as_view(), name='upload_feed'), path('upload', UploadFeed.as_view(), name='upload_feed'),
path('reply/create', CreateReply.as_view(), name='reply_create'),
path('like', LikeFeed.as_view(), name='like'), path('like', LikeFeed.as_view(), name='like'),
path('view', ViewFeed.as_view(), name='view'), path('view', ViewFeed.as_view(), name='view'),
path('bookmark', BookmarkFeed.as_view(), name='bookmark'), path('bookmark', BookmarkFeed.as_view(), name='bookmark'),
......
...@@ -2,13 +2,13 @@ from django.shortcuts import render ...@@ -2,13 +2,13 @@ from django.shortcuts import render
from rest_framework.views import APIView from rest_framework.views import APIView
from content.models import Feed, Reply, FeedLike, FeedView, Bookmark from content.models import Feed, Reply, FeedLike, FeedView, Bookmark
from rest_framework.response import Response from rest_framework.response import Response
from user.models import User from user.models import User, Univ
from rest_framework.response import Response from rest_framework.response import Response
import os import os
from jinstagram.settings import MEDIA_ROOT from jinstagram.settings import MEDIA_ROOT
from uuid import uuid4 from uuid import uuid4
from datetime import datetime from datetime import datetime
from django.db.models import Q
class UploadFeed(APIView): class UploadFeed(APIView):
def post(self, request): def post(self, request):
...@@ -23,8 +23,11 @@ class UploadFeed(APIView): ...@@ -23,8 +23,11 @@ class UploadFeed(APIView):
profile_image = request.data.get('profile_image') profile_image = request.data.get('profile_image')
user_id = request.data.get('user_id') user_id = request.data.get('user_id')
email = request.data.get('email') email = request.data.get('email')
univ = request.data.get('univ')
Feed.objects.create(content=content, image=image, profile_image=profile_image, user_id=user_id, email=email, like_count=0, view_count=0, univ=univ) user = User.objects.filter(Q(email = email)).first()
univ = user.univ
Feed.objects.create(content=content, image=image, profile_image=profile_image, user_id=user_id, email=email, like_count=0, univ=univ)
return Response(status=200) return Response(status=200)
...@@ -77,77 +80,23 @@ class ViewFeed(APIView): ...@@ -77,77 +80,23 @@ class ViewFeed(APIView):
class CreateReply(APIView): class CreateReply(APIView):
def post(self, request): def post(self, request):
feed_id = request.data.get('feed_id') feed_id = request.data.get('feed_id')
user_id = request.data.get('user_id')
content = request.data.get('content')
email = request.data.get('email') email = request.data.get('email')
Reply.objects.create(feed_id=feed_id,
user_id=user_id,
content=content,
email=email
)
return Response(status=200, data=dict(message='댓글 작성 완료.'))
# feed_id = 1
# email = "ksshhses@ajou.ac.kr"
class DeleteReply(APIView): feed = Feed.objects.filter(id=feed_id).first()
def post(self, request):
reply_id = request.data.get('reply_id')
email = request.data.get('email')
reply = Reply.objects.filter(id=reply_id).first()
if reply is None: if feed is None:
return Response(status=500, data=dict(message='삭제 실패')) return Response(status=500, data=dict(message='삭제 실패'))
if reply.email == email: if feed.email == email:
reply.delete() feed.delete()
return Response(status=200, data=dict(message='성공')) return render(request, "jinstagram/main.html") #프로필페이지
else: else:
return Response(status=500, data=dict(message='삭제 실패')) return Response(status=500, data=dict(message='삭제 실패'))
class BookmarkFeed(APIView):
def post(self, request):
feed_id = request.data.get('feed_id')
email = request.data.get('email')
is_bookmarked = request.data.get('is_bookmarked', 'True')
if is_bookmarked.lower() == 'false':
is_bookmarked = False
else:
is_bookmarked = True
bookmark = Bookmark.objects.filter(feed_id=feed_id, email=email).first()
if bookmark is None:
Bookmark.objects.create(feed_id=feed_id,
email=email,
is_bookmarked=is_bookmarked,
)
else:
bookmark.is_bookmarked = is_bookmarked
bookmark.save()
return Response(status=200, data=dict(message='북마크 설정 완료.'))
## 시환님꺼 ## 시환님꺼
class DetailFeed(APIView):
def get(self, request):
email = request.session.get('email', None)
if email is None:
return render(request, 'user/login.html')
user = User.objects.filter(email=email).first()
if user is None:
return render(request, 'user/login.html')
# feed 가지고 오기
feed = Feed.objects.get(feed_id=id)
if feed.email == user.email:
return(request, 'deatil_delete.html', feed)
else:
return(request, 'detail.html', feed)
class DeleteFeed(APIView): class DeleteFeed(APIView):
def post(self, request): def post(self, request):
feed_id = request.data.get('feed_id') feed_id = request.data.get('feed_id')
......
...@@ -78,9 +78,18 @@ WSGI_APPLICATION = 'jinstagram.wsgi.application' ...@@ -78,9 +78,18 @@ WSGI_APPLICATION = 'jinstagram.wsgi.application'
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.mysql',
'NAME': BASE_DIR / 'db.sqlite3', 'NAME': 'campics',
'USER': 'root',
'PASSWORD': '1101',
'HOST': 'localhost',
'PORT': '3306',
} }
# 'default': {
# # 'ENGINE': 'django.db.backends.sqlite3',
# # 'NAME': BASE_DIR / 'db.sqlite3',
#
# }
} }
......
...@@ -123,8 +123,6 @@ class Detail(APIView): ...@@ -123,8 +123,6 @@ class Detail(APIView):
for feed in feed_object_list: for feed in feed_object_list:
like_count = FeedLike.objects.filter(feed_id=feed.id, is_like=True).count() like_count = FeedLike.objects.filter(feed_id=feed.id, is_like=True).count()
is_like = FeedLike.objects.filter(feed_id=feed.id, is_like=True, email=email).exists() is_like = FeedLike.objects.filter(feed_id=feed.id, is_like=True, email=email).exists()
is_bookmarked = Bookmark.objects.filter(email=email, is_bookmarked=True, feed_id=feed.id).exists()
reply_list = Reply.objects.filter(feed_id=feed.id)
profile_image = User.objects.filter(email=feed.email).first().thumbnail or 'default_profile.jpg' profile_image = User.objects.filter(email=feed.email).first().thumbnail or 'default_profile.jpg'
feed_list.append(dict( feed_list.append(dict(
id=feed.id, id=feed.id,
...@@ -133,9 +131,7 @@ class Detail(APIView): ...@@ -133,9 +131,7 @@ class Detail(APIView):
image=feed.image, image=feed.image,
content=feed.content, content=feed.content,
like_count=like_count, like_count=like_count,
is_like=is_like, is_like=is_like
reply_list=reply_list,
is_bookmarked=is_bookmarked
)) ))
return render(request, return render(request,
...@@ -143,8 +139,6 @@ class Detail(APIView): ...@@ -143,8 +139,6 @@ class Detail(APIView):
context=dict(feed_list=feed_list, context=dict(feed_list=feed_list,
user=user)) user=user))
class Profile(APIView): class Profile(APIView):
def get(self, request): def get(self, request):
email = request.session.get('email', None) email = request.session.get('email', None)
...@@ -162,7 +156,6 @@ class Profile(APIView): ...@@ -162,7 +156,6 @@ class Profile(APIView):
for feed in feed_object_list: for feed in feed_object_list:
like_count = FeedLike.objects.filter(feed_id=feed.id, is_like=True).count() like_count = FeedLike.objects.filter(feed_id=feed.id, is_like=True).count()
is_like = FeedLike.objects.filter(feed_id=feed.id, is_like=True, email=email).exists() is_like = FeedLike.objects.filter(feed_id=feed.id, is_like=True, email=email).exists()
reply_count = Reply.objects.filter(feed_id=feed.id).count()
row_feed_list.append(dict( row_feed_list.append(dict(
id=feed.id, id=feed.id,
profile_image=feed.profile_image, profile_image=feed.profile_image,
...@@ -171,7 +164,6 @@ class Profile(APIView): ...@@ -171,7 +164,6 @@ class Profile(APIView):
content=feed.content, content=feed.content,
like_count=like_count, like_count=like_count,
is_like=is_like, is_like=is_like,
reply_count=reply_count
)) ))
if len(row_feed_list) == 3: if len(row_feed_list) == 3:
...@@ -181,42 +173,9 @@ class Profile(APIView): ...@@ -181,42 +173,9 @@ class Profile(APIView):
if len(row_feed_list) > 0: if len(row_feed_list) > 0:
feed_list.append(dict(row_feed_list=row_feed_list)) feed_list.append(dict(row_feed_list=row_feed_list))
following_count = Follow.objects.filter(follower=email, is_live=True).count()
follower_count = Follow.objects.filter(following=email, is_live=True).count()
bookmark_list = Bookmark.objects.filter(email=email, is_bookmarked=True).order_by('-id')
bookmark_feed_list = []
row_bookmark_feed_list = []
for bookmark in bookmark_list:
feed = Feed.objects.filter(id=bookmark.feed_id).first()
if feed is None:
continue
like_count = FeedLike.objects.filter(feed_id=feed.id, is_like=True).count()
is_like = FeedLike.objects.filter(feed_id=feed.id, is_like=True, email=email).exists()
reply_count = Reply.objects.filter(feed_id=feed.id).count()
row_bookmark_feed_list.append(dict(
id=feed.id,
profile_image=feed.profile_image,
user_id=feed.user_id,
image=feed.image,
content=feed.content,
like_count=like_count,
is_like=is_like,
reply_count=reply_count
))
if len(row_bookmark_feed_list) == 3:
bookmark_feed_list.append(dict(row_bookmark_feed_list=row_bookmark_feed_list))
row_bookmark_feed_list = []
if len(row_bookmark_feed_list) > 0:
bookmark_feed_list.append(dict(row_bookmark_feed_list=row_bookmark_feed_list))
return render(request, return render(request,
'jinstagram/profile.html', 'jinstagram/profile.html',
context=dict(feed_list=feed_list, context=dict(feed_list=feed_list,
bookmark_feed_list=bookmark_feed_list,
feed_count=feed_count, feed_count=feed_count,
following_count=following_count,
follower_count=follower_count,
user=user)) user=user))
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
{% csrf_token %} {% csrf_token %}
<div class="input-group mb-3"> <div class="input-group mb-3">
<span class="input-group-text"><text class="me-3">아이디</text> </span> <span class="input-group-text"><text class="me-3">아이디</text> </span>
<input type="text" id="user_id" nickname="user_id" class="form-control"> <input type="text" id="user_id" nickname="user_id" class="form-control">#사실은 이메일 형식
<button class="btn btn-outline-secondary" type="button" id="button-addon1">중복검사</button> <button class="btn btn-outline-secondary" type="button" id="button-addon1">중복검사</button>
</div> </div>
<div class="input-group mb-3"> <div class="input-group mb-3">
......
# Generated by Django 3.2.6 on 2021-10-09 13:56 # Generated by Django 4.0.4 on 2022-05-31 14:31
from django.db import migrations, models from django.db import migrations, models
...@@ -17,12 +17,21 @@ class Migration(migrations.Migration): ...@@ -17,12 +17,21 @@ class Migration(migrations.Migration):
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('password', models.CharField(max_length=128, verbose_name='password')), ('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('email', models.EmailField(blank=True, max_length=100, null=True, verbose_name='email')), ('name', models.CharField(blank=True, max_length=30, null=True)),
('email', models.EmailField(blank=True, max_length=100, null=True, unique=True, verbose_name='email')),
('user_id', models.CharField(blank=True, max_length=30, null=True)), ('user_id', models.CharField(blank=True, max_length=30, null=True)),
('thumbnail', models.CharField(blank=True, max_length=256, null=True)), ('thumbnail', models.CharField(blank=True, default='default_profile.jpg', max_length=256, null=True)),
('univ', models.CharField(max_length=30)),
], ],
options={ options={
'db_table': 'users', 'db_table': 'users',
}, },
), ),
migrations.CreateModel(
name='Univ',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('univ', models.CharField(max_length=30)),
],
),
] ]
# Generated by Django 3.2.6 on 2021-10-11 07:24
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('user', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='user',
name='name',
field=models.CharField(blank=True, max_length=30, null=True),
),
]
# Generated by Django 3.2.6 on 2021-10-11 07:31
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('user', '0002_user_name'),
]
operations = [
migrations.AlterField(
model_name='user',
name='email',
field=models.EmailField(blank=True, max_length=100, null=True, unique=True, verbose_name='email'),
),
]
# Generated by Django 3.2.6 on 2021-10-11 12:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('user', '0003_alter_user_email'),
]
operations = [
migrations.AlterField(
model_name='user',
name='thumbnail',
field=models.CharField(blank=True, default='default_profile.jpg', max_length=256, null=True),
),
]
# Generated by Django 3.2.6 on 2021-10-14 11:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('user', '0004_alter_user_thumbnail'),
]
operations = [
migrations.CreateModel(
name='Follow',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('follower', models.EmailField(max_length=100, verbose_name='email')),
('following', models.EmailField(max_length=100, verbose_name='email')),
('is_live', models.BooleanField(default=False)),
],
options={
'db_table': 'follow',
},
),
migrations.AddConstraint(
model_name='follow',
constraint=models.UniqueConstraint(fields=('follower', 'following'), name='follower-following'),
),
]
# Generated by Django 3.2.6 on 2021-10-14 11:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('user', '0005_auto_20211014_1123'),
]
operations = [
migrations.AddIndex(
model_name='follow',
index=models.Index(fields=['follower'], name='follow_followe_227ce4_idx'),
),
migrations.AddIndex(
model_name='follow',
index=models.Index(fields=['following'], name='follow_followi_9fea95_idx'),
),
]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment