Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
5795563
Initial commit
kimhansol2 Mar 3, 2025
55389fb
Update README.md
kimhansol2 Mar 3, 2025
0828f9c
Update issue templates
kimhansol2 Mar 3, 2025
b57f682
Update issue templates
kimhansol2 Mar 3, 2025
6d2890f
'add_file'
kimhansol2 Mar 10, 2025
fb70fe6
'add:html'
kimhansol2 Mar 10, 2025
1f14b33
'feat:change_mainpage_html'
kimhansol2 Mar 18, 2025
e8661a6
Merge pull request #7 from Teamcoin4/feat/mainpage/#6
KIM-YC98 Mar 19, 2025
745d2c1
'style:update_directory'
kimhansol2 Mar 19, 2025
096324a
'feat:add_login_html'
kimhansol2 Mar 19, 2025
12cdd20
'feat:add_ID_PW_HTML'
kimhansol2 Mar 20, 2025
a50cde5
'feat:add_signup_html'
kimhansol2 Mar 21, 2025
b5b7d68
Merge pull request #9 from Teamcoin4/feat/login/#8
KIM-YC98 Mar 23, 2025
670ea14
feat/dw/#14
KIM-YC98 Mar 23, 2025
861a28b
Merge pull request #11 from Teamcoin4/feat/idpw/#10
KIM-YC98 Mar 23, 2025
c6403b6
Merge pull request #13 from Teamcoin4/feat/signup/#12
KIM-YC98 Mar 23, 2025
7c8b593
feat/setting/#18
KIM-YC98 Mar 23, 2025
daa2c6a
feat/Investment/#20
KIM-YC98 Mar 23, 2025
831a7fe
'feat:manul_html_add'
kimhansol2 Mar 23, 2025
1de0449
Merge pull request #24 from Teamcoin4/feat/manual/#22
KIM-YC98 Mar 24, 2025
2892239
Merge branch 'feature/frontend' into feat/Investment/#20
KIM-YC98 Mar 24, 2025
ee2b6f6
Merge pull request #21 from Teamcoin4/feat/Investment/#20
kimhansol2 Mar 24, 2025
c82ee36
'feat:css_main'
kimhansol2 Mar 29, 2025
3bc9f33
'feat:ID_PW_CSS_ADD'
kimhansol2 Apr 3, 2025
58e31f7
Merge pull request #32 from Teamcoin4/feat/find/#31
kimhansol2 Apr 7, 2025
06fb6fc
feat:update_all
burinygang Apr 7, 2025
93ee0c4
feat:update_all
burinygang Apr 7, 2025
5db8219
bug: gitignore
burinygang Apr 7, 2025
d5e518f
bug: gitignore
burinygang Apr 7, 2025
abd3f28
Merge remote-tracking branch 'origin' into feat/1
burinygang Apr 7, 2025
09dde21
Merge remote-tracking branch 'origin' into feat/1
burinygang Apr 7, 2025
c880467
Merge pull request #39 from Teamcoin4/feat/1
S-Jun Apr 7, 2025
821dc32
Update settings.py
S-Jun Apr 7, 2025
15cec77
Merge pull request #40 from Teamcoin4/S-Jun-patch-1
burinygang Apr 7, 2025
a516621
feat:메인페이지 그래프 출력
burinygang May 5, 2025
0d33ce0
갱창섭 로그인 정상화
burinygang May 8, 2025
45d92b3
Save work before filter-branch
burinygang May 8, 2025
460911c
Merge feature/backend into feat/1-dev
burinygang May 8, 2025
c6de758
Update login_page.html
burinygang May 8, 2025
4112a71
Update main_page.html
burinygang May 8, 2025
4a8ca5a
Update register_page.html
burinygang May 8, 2025
fa124db
Update admin.py
burinygang May 8, 2025
b9174b8
Update models.py
burinygang May 8, 2025
e108fc8
Update urls.py
burinygang May 8, 2025
b8d4b10
Update views.py
burinygang May 8, 2025
dd92f2e
Update urls.py
burinygang May 8, 2025
25d7397
Update 0001_initial.py
burinygang May 8, 2025
907761e
Update settings.py
burinygang May 8, 2025
163d00c
Delete aaa directory
burinygang May 8, 2025
c896679
Update .env.example
burinygang May 8, 2025
e48235a
Merge pull request #58 from Teamcoin4/feat/1-dev
S-Jun May 8, 2025
14c2006
백엔트 통합
burinygang May 18, 2025
7b71f15
WIP: 현재 작업 중인 내용 커밋
burinygang May 18, 2025
d2867f5
Merge pull request #59 from Teamcoin4/feat/1-dev
S-Jun May 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
settings.py
.env
20 changes: 20 additions & 0 deletions app/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
SECRET_KEY = 장고 시크릿키

# db 구조 정의
ENGINE = django.db.backends.mysql
NAME =
USER =
PASSWORD =
HOST =
PORT =
init_command = SET sql_mode="STRICT_TRANS_TABLES"


# 소셜 로그인 api 키와 시크릿값
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY =
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET =
SOCIAL_AUTH_GOOGLE_OAUTH2_REDIRECT_URI =
SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPE=["profile", "email"]

SOCIAL_AUTH_KAKAO_KEY =
SOCIAL_AUTH_KAKAO_SECRET =
Empty file added app/__init__.py
Empty file.
Binary file added app/__pycache__/__init__.cpython-312.pyc
Binary file not shown.
Binary file added app/__pycache__/admin.cpython-312.pyc
Binary file not shown.
Binary file added app/__pycache__/apps.cpython-312.pyc
Binary file not shown.
Binary file added app/__pycache__/forms.cpython-312.pyc
Binary file not shown.
Binary file added app/__pycache__/models.cpython-312.pyc
Binary file not shown.
Binary file added app/__pycache__/operator.cpython-312.pyc
Binary file not shown.
Binary file added app/__pycache__/urls.cpython-312.pyc
Binary file not shown.
Binary file added app/__pycache__/views.cpython-312.pyc
Binary file not shown.
6 changes: 6 additions & 0 deletions app/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# admin.py

from django.contrib import admin
from .models import LocalUser

admin.site.register(LocalUser)
12 changes: 12 additions & 0 deletions app/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from django.apps import AppConfig
from django.conf import settings


class MainConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'app'

def ready(self):
if settings.SCHEDULER_DEFAULT:
from . import operator
operator.start()
7 changes: 7 additions & 0 deletions app/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# app/forms.py

from django import forms

class LocalLoginForm(forms.Form):
user_id = forms.CharField(label="아이디", max_length=100)
user_pw = forms.CharField(label="비밀번호", widget=forms.PasswordInput)
29 changes: 29 additions & 0 deletions app/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Generated by Django 5.2 on 2025-05-07 09:58

from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [
]

operations = [
migrations.CreateModel(
name='LocalUser',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('user_id', models.CharField(max_length=100, unique=True)),
('user_pw', models.CharField(max_length=100)),
('user_name', models.CharField(max_length=100)),
('is_admin', models.BooleanField(default=False)),
],
options={
'abstract': False,
},
),
]
21 changes: 21 additions & 0 deletions app/migrations/0002_remove_localuser_last_login_and_more.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 5.2 on 2025-05-07 10:21

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('app', '0001_initial'),
]

operations = [
migrations.RemoveField(
model_name='localuser',
name='last_login',
),
migrations.RemoveField(
model_name='localuser',
name='password',
),
]
17 changes: 17 additions & 0 deletions app/migrations/0003_alter_localuser_table.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 5.2 on 2025-05-09 02:19

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('app', '0002_remove_localuser_last_login_and_more'),
]

operations = [
migrations.AlterModelTable(
name='localuser',
table='user',
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Generated by Django 5.2 on 2025-05-18 04:47

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('app', '0003_alter_localuser_table'),
]

operations = [
migrations.CreateModel(
name='Asset',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('coin_name', models.CharField(max_length=10)),
('coin_amount', models.FloatField()),
('coin_price', models.FloatField()),
('total_value', models.FloatField()),
('trade_time', models.DateTimeField(auto_now_add=True)),
('money', models.FloatField()),
],
options={
'db_table': 'asset',
},
),
migrations.CreateModel(
name='coin_archive',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('coin_name', models.CharField(max_length=10)),
('opening_price', models.FloatField()),
('high_price', models.FloatField()),
('low_price', models.FloatField()),
('trade_price', models.FloatField()),
('time_stamp', models.DateTimeField()),
('candle_acc_trade_price', models.FloatField()),
('candle_acc_trade_volume', models.FloatField()),
('candle_time_kst', models.DateTimeField(auto_now_add=True)),
('interval', models.CharField(max_length=10)),
],
options={
'db_table': 'coin_archive',
},
),
migrations.CreateModel(
name='coin_recent',
fields=[
('coin_name', models.CharField(max_length=10, primary_key=True, serialize=False)),
('opening_price', models.FloatField()),
('high_price', models.FloatField()),
('low_price', models.FloatField()),
('trade_price', models.FloatField()),
('time_stamp', models.DateTimeField()),
('candle_acc_trade_price', models.FloatField()),
('candle_acc_trade_volume', models.FloatField()),
('candle_time_kst', models.DateTimeField(auto_now_add=True)),
('interval', models.CharField(max_length=10)),
],
options={
'db_table': 'coin_recent',
},
),
migrations.CreateModel(
name='trade_history',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('coin_name', models.CharField(max_length=10)),
('coin_price', models.FloatField()),
('coin_amount', models.FloatField()),
('order_time', models.DateTimeField()),
('trade_time', models.DateTimeField(auto_now_add=True)),
('is_deal', models.BooleanField(default=False)),
('trade_fee', models.FloatField(default=0.0)),
],
options={
'db_table': 'trade_history',
},
),
migrations.CreateModel(
name='trade_order_request',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('coin_name', models.CharField(max_length=10)),
('coin_price', models.FloatField()),
('coin_amount', models.FloatField()),
('order_time', models.DateTimeField(auto_now_add=True)),
('trade_type', models.CharField(max_length=10)),
('order_id', models.FloatField(unique=True)),
],
options={
'db_table': 'trade_request',
},
),
migrations.AddIndex(
model_name='localuser',
index=models.Index(fields=['user_id'], name='user_user_id_31c9cf_idx'),
),
migrations.AddField(
model_name='asset',
name='user_id',
field=models.ForeignKey(db_column='user_id', on_delete=django.db.models.deletion.CASCADE, to='app.localuser'),
),
migrations.AddIndex(
model_name='coin_archive',
index=models.Index(fields=['coin_name', 'time_stamp'], name='coin_archiv_coin_na_eaa4b2_idx'),
),
migrations.AddIndex(
model_name='coin_recent',
index=models.Index(fields=['coin_name', 'time_stamp'], name='coin_recent_coin_na_70d127_idx'),
),
migrations.AddField(
model_name='trade_history',
name='user_id',
field=models.ForeignKey(db_column='user_id', on_delete=django.db.models.deletion.CASCADE, to='app.localuser'),
),
migrations.AddField(
model_name='trade_order_request',
name='user_id',
field=models.ForeignKey(db_column='user_id', on_delete=django.db.models.deletion.CASCADE, to='app.localuser'),
),
migrations.AddIndex(
model_name='asset',
index=models.Index(fields=['user_id'], name='asset_user_id_bcef9f_idx'),
),
migrations.AddIndex(
model_name='trade_history',
index=models.Index(fields=['user_id'], name='trade_histo_user_id_8687dc_idx'),
),
migrations.AddIndex(
model_name='trade_order_request',
index=models.Index(fields=['user_id'], name='trade_reque_user_id_5667ec_idx'),
),
]
Empty file added app/migrations/__init__.py
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added app/migrations/__pycache__/__init__.cpython-312.pyc
Binary file not shown.
125 changes: 125 additions & 0 deletions app/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
from django.db import models
from django.contrib.auth.models import BaseUserManager

class LocalUserManager(BaseUserManager):
def create_user(self, user_id, user_pw, user_name, is_admin=False):
user = self.model(
user_id=user_id,
user_name=user_name,
is_admin=is_admin
)
user.set_password(user_pw)
user.save(using=self._db)
return user

def create_superuser(self, user_id, user_pw, user_name):
user = self.create_user(
user_id=user_id,
user_pw=user_pw,
user_name=user_name,
is_admin=True
)
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user

class LocalUser(models.Model):
user_id = models.CharField(max_length=100, unique=True)
user_pw = models.CharField(max_length=100)
user_name = models.CharField(max_length=100)
is_admin = models.BooleanField(default=False)

def __str__(self):
return self.user_name

class Meta:
db_table = "user"
indexes = [
models.Index(fields=["user_id"]),
]

class coin_recent(models.Model):
coin_name = models.CharField(max_length=10, primary_key=True)
opening_price = models.FloatField()
high_price = models.FloatField()
low_price = models.FloatField()
trade_price = models.FloatField()
time_stamp = models.DateTimeField()
candle_acc_trade_price = models.FloatField()
candle_acc_trade_volume = models.FloatField()
candle_time_kst = models.DateTimeField(auto_now_add=True)
interval = models.CharField(max_length=10)


class Meta:
db_table = "coin_recent"
indexes = [
models.Index(fields=["coin_name", "time_stamp"]),
]


class coin_archive(models.Model):
coin_name = models.CharField(max_length=10)
opening_price = models.FloatField()
high_price = models.FloatField()
low_price = models.FloatField()
trade_price = models.FloatField()
time_stamp = models.DateTimeField()
candle_acc_trade_price = models.FloatField()
candle_acc_trade_volume = models.FloatField()
candle_time_kst = models.DateTimeField(auto_now_add=True)
interval = models.CharField(max_length=10)

class Meta:
db_table = "coin_archive"
indexes = [
models.Index(fields=["coin_name", "time_stamp"]),
]

class trade_order_request(models.Model):
user_id = models.ForeignKey(LocalUser, on_delete=models.CASCADE, db_column='user_id')
coin_name = models.CharField(max_length=10)
coin_price = models.FloatField()
coin_amount = models.FloatField()
order_time = models.DateTimeField(auto_now_add=True)
trade_type = models.CharField(max_length=10) # 'buy' or 'sell'
order_id = models.FloatField(unique=True)

class Meta:
db_table = "trade_request"
indexes = [
models.Index(fields=["user_id"])
]

class Asset(models.Model):
user_id = models.ForeignKey(LocalUser, on_delete=models.CASCADE,db_column='user_id')
coin_name = models.CharField(max_length=10)
coin_amount = models.FloatField()
coin_price = models.FloatField()
total_value = models.FloatField()
trade_time = models.DateTimeField(auto_now_add=True)
money = models.FloatField()

class Meta:
db_table = "asset"
indexes = [
models.Index(fields=["user_id"]),
]


class trade_history(models.Model):
user_id = models.ForeignKey(LocalUser, on_delete=models.CASCADE,db_column='user_id')
coin_name = models.CharField(max_length=10)
coin_price = models.FloatField()
coin_amount = models.FloatField()
order_time = models.DateTimeField()
trade_time = models.DateTimeField(auto_now_add=True)
is_deal = models.BooleanField(default=False)
trade_fee = models.FloatField(default=0.0)

class Meta:
db_table = "trade_history"
indexes = [
models.Index(fields=["user_id"])
]
10 changes: 10 additions & 0 deletions app/operator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from apscheduler.schedulers.background import BackgroundScheduler
from app.views import coin_store_scheduler
from app.views import compare_order_and_coin_value_scheduler


def start():
scheduler = BackgroundScheduler(timezone='Asia/Seoul')
scheduler.add_job(coin_store_scheduler, 'interval', seconds=60)
scheduler.add_job(compare_order_and_coin_value_scheduler, 'interval', seconds=3)
scheduler.start()
Loading