diff --git a/.env.dev b/.env.dev new file mode 100644 index 0000000..8d73f7d --- /dev/null +++ b/.env.dev @@ -0,0 +1,5 @@ +SECRET_KEY=your_secret_key +DB_NAME=your_db_name +DB_USER=your_db_user +DB_PASSWORD=your_db_password +DB_ROOT_PASSWORD=your_db_root_password diff --git a/.gitignore b/.gitignore index 0e1ea32..2c7502f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,15 @@ # Byte-compiled / optimized / DLL files -__pycache__/ +*/__pycache__/ *.py[cod] *$py.class - # C extensions *.so +#added +staticfiles/ +*/migrations/ +blog/migrations/ + # Distribution / packaging .Python build/ diff --git a/BH/settings.py b/BH/settings.py index b87b28e..95d5d97 100644 --- a/BH/settings.py +++ b/BH/settings.py @@ -17,14 +17,19 @@ from dotenv import load_dotenv BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TEMPLATES_DIR = os.path.join(BASE_DIR + '/templates') +DEFAULT_AUTO_FIELD='django.db.models.AutoField' + # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ +# Load the Env +load_dotenv() + # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = '!2g)+m+_h9fq9%il5+t5#qnj^9502or6$=2!$==v=i2*c#7q*m' +SECRET_KEY = os.getenv('SECRET_KEY') # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = False ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'beyond-heroes.com', 'www.beyond-heroes.com'] @@ -34,11 +39,9 @@ ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'beyond-heroes.com', 'www.beyond-hero INSTALLED_APPS = [ 'crispy_forms', 'crispy_bootstrap4', - 'blog.apps.BlogConfig', 'users.apps.UsersConfig', 'api.apps.APIConfig', - 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', @@ -46,15 +49,10 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', # for django-allauth - 'corsheaders', 'dj_rest_auth', 'rest_framework', 'rest_framework.authtoken', - # 'allauth', - # 'allauth.account', - # 'allauth.socialaccount', - # 'dj_rest_auth.registration', # for api side user registration ] MIDDLEWARE = [ @@ -65,7 +63,6 @@ MIDDLEWARE = [ 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', - # 'allauth.account.middleware.AccountMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] @@ -97,8 +94,12 @@ WSGI_APPLICATION = 'BH.wsgi.application' DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + 'ENGINE': 'django.db.backends.mysql', + 'NAME': os.getenv('DB_NAME'), + 'USER': os.getenv('DB_USER'), + 'PASSWORD': os.getenv('DB_PASSWORD'), + 'HOST': 'db', + 'PORT': '3306', } } @@ -162,5 +163,3 @@ LOGIN_URL = 'Login' EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' # prints to console SITE_ID = 1 # for django-allauth - -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3e9c5a0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +# Use an official Python runtime as a parent image +FROM python:3.13-slim-trixie + +# Set environment variables +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 + +# Set working directory +WORKDIR /app + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + build-essential \ + libpq-dev \ + default-libmysqlclient-dev \ + pkg-config \ + && rm -rf /var/lib/apt/lists/* + +# Install Python dependencies +COPY requirements.txt /app/ +RUN pip install --no-cache-dir -r requirements.txt +RUN pip install gunicorn + +# Copy project files +COPY . /app/ + +# Expose the port on which the application will run +EXPOSE 3030 + +# Define environment variable for Gunicorn +ENV GUNICORN_CMD_ARGS="--bind 0.0.0.0:3030" + +# Run Gunicorn server with your Django application +CMD ["gunicorn", "BH.wsgi:application"] diff --git a/README.md b/README.md index c267988..3f03920 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,30 @@ +## Requirements +The website requires the following: +- Docker +- Docker Compose +- A running MariaDB Instance + ## Deployment -To deploy the website: +To deploy the website: - first clone the repository to any local folder -- then open the folder with the `manage.py` file -- then `Shift`+`Right Click` and click on `Open PowerShell window here` -- then type in `py manage.py runserver 4000` -- open browser at address `localhost:4000` or `127.0.0.1:4000` +- then open the folder +- create a new file called `.env` and add the following: +``` +SECRET_KEY=your_secret_key +DB_NAME=your_db_name +DB_USER=your_db_user +DB_PASSWORD=your_db_password +DB_HOST=your_db_host +DB_PORT=your_db_port +``` +- run `docker-compose up --build` this starts the website at localhost:3030 ## Structure -The website has a Home page and a News page page currently. The News page shows all developer blogs. +The website has a Home page and a News page currently. The News page shows all developer blogs. ## Problems and Development -Currently there are the following problems: -- `/dev/` route needs to be made -- the Blog card needs to be updated -- the `secret` needs to be secret +Currently, there are the following problems: +- the page needs a **Dark Mode** +- Ability for staff to add blogs directly If you find any problems and have a solution *in code* then please consider making a `pull request`, using the `Create a new branch for this commit and start a pull request` option with an appropriate branch name. diff --git a/blog/migrations/0001_initial.py b/blog/migrations/0001_initial.py deleted file mode 100644 index 6f28f81..0000000 --- a/blog/migrations/0001_initial.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 5.0.2 on 2024-07-06 16:24 - -import django.db.models.deletion -import django.utils.timezone -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Blog', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('content', models.TextField()), - ('title', models.CharField(max_length=150)), - ('date_posted', models.DateTimeField(default=django.utils.timezone.now)), - ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='Post', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('content', models.TextField()), - ('date_posted', models.DateTimeField(default=django.utils.timezone.now)), - ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - ] diff --git a/blog/migrations/__init__.py b/blog/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/blog/models.py b/blog/models.py index 5ada5ee..a209119 100644 --- a/blog/models.py +++ b/blog/models.py @@ -7,15 +7,8 @@ from django.utils import timezone class Blog(models.Model): content = models.TextField() title = models.CharField(max_length=150) - author = models.ForeignKey(User, on_delete=models.CASCADE) + author = models.TextField() #models.ForeignKey(User, on_delete=models.CASCADE) date_posted = models.DateTimeField(default=timezone.now) def get_absolute_url(self): return '/' - - - -class Post(models.Model): - content = models.TextField() - author = models.ForeignKey(User, on_delete=models.CASCADE) - date_posted = models.DateTimeField(default=timezone.now) diff --git a/blog/urls.py b/blog/urls.py index 3bde192..0a0a537 100644 --- a/blog/urls.py +++ b/blog/urls.py @@ -5,9 +5,6 @@ urlpatterns = [ path('', views.home, name='Home'), path('news/', views.news, name='News'), path('blog/', views.BlogDetailView.as_view(), name='Blog'), - path('blog/create/', views.BlogCreateView.as_view(), name='Blog Create'), - path('post/', views.PostDetailView.as_view(), name='Post'), - path('post/create/', views.PostCreateView.as_view(), name='Post Create'), path('dev/', views.dev, name='Dev'), path('dev/support/', views.support, name='Support'), ] diff --git a/blog/views.py b/blog/views.py index 4f7138e..0555ee1 100644 --- a/blog/views.py +++ b/blog/views.py @@ -1,3 +1,4 @@ +from django.db.models import QuerySet from django.shortcuts import render from django.contrib.auth.mixins import * from django.views.generic import * @@ -34,7 +35,7 @@ def news(request): ordering = (ordering,) queryset = queryset.order_by(*ordering) - return render(request, 'blog/home.html', { context_object_name: queryset, 'topics': ['No Updates...'] }) + return render(request, 'blog/home.html', {context_object_name: queryset, 'topics': ['No Updates...']}) class BlogDetailView(DetailView): @@ -42,37 +43,13 @@ class BlogDetailView(DetailView): template_name = 'blog/blogDetail.html' -class BlogCreateView(LoginRequiredMixin, CreateView): - model = Blog - template_name = 'blog/blogCreate.html' - fields = ['title', 'content'] - - def form_valid(self, form): - form.instance.author = self.request.user - return super().form_valid(form) - - - -class PostDetailView(DetailView): - model = Post - template_name = 'blog/postDetail.html' - - -class PostCreateView(LoginRequiredMixin, CreateView): - model = Post - template_name = 'blog/postCreate.html' - fields = ['content'] - - def form_valid(self, form): - form.instance.author = self.request.user - return super().form_valid(form) - - def dev(request): return render(request, 'dev.html', {'title': 'Development'}) + def support(request): return render(request, 'support.html', {'title': 'Support Us'}) + def home(request): - return render(request, 'index.html', {'title': 'Home'}) \ No newline at end of file + return render(request, 'index.html', {'title': 'Home'}) diff --git a/db.sqlite3 b/db.sqlite3 deleted file mode 100644 index 51fa769..0000000 Binary files a/db.sqlite3 and /dev/null differ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2ca4b49 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +services: + db: + image: mariadb:12.2 + env_file: + - .env + environment: + MYSQL_DATABASE: ${DB_NAME} + MYSQL_USER: ${DB_USER} + MYSQL_PASSWORD: ${DB_PASSWORD} + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + volumes: + - mariadb_data:/var/lib/mysql + restart: unless-stopped + + django: + build: . + env_file: + - .env + volumes: + - .:/app + restart: unless-stopped + ports: + - "3030:3030" + depends_on: + - db + command: > + sh -c "python manage.py makemigrations blog --noinput && + python manage.py migrate --noinput && + python manage.py collectstatic --noinput && + gunicorn BH.wsgi:application --bind 0.0.0.0:3030 --workers ${GUNICORN_WORKERS:-3}" + +volumes: + mariadb_data: + diff --git a/media/Asset 2.png b/media/Asset 2.png new file mode 100644 index 0000000..66aa019 Binary files /dev/null and b/media/Asset 2.png differ diff --git a/media/Asset 3.png b/media/Asset 3.png new file mode 100644 index 0000000..870be5f Binary files /dev/null and b/media/Asset 3.png differ diff --git a/media/default.png b/media/default.png deleted file mode 100644 index b895901..0000000 Binary files a/media/default.png and /dev/null differ diff --git a/media/favicon.ico b/media/favicon.ico new file mode 100644 index 0000000..9e7e52d Binary files /dev/null and b/media/favicon.ico differ diff --git a/media/mittelschrift.ttf b/media/mittelschrift.ttf new file mode 100644 index 0000000..aef931a Binary files /dev/null and b/media/mittelschrift.ttf differ diff --git a/media/profile_pics/AI_image.jpg b/media/profile_pics/AI_image.jpg deleted file mode 100644 index 7de2c65..0000000 Binary files a/media/profile_pics/AI_image.jpg and /dev/null differ diff --git a/media/profile_pics/default-male.png b/media/profile_pics/default-male.png deleted file mode 100644 index 8a2057d..0000000 Binary files a/media/profile_pics/default-male.png and /dev/null differ diff --git a/requirements.txt b/requirements.txt index 285bf20..f13c9fc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,9 +11,9 @@ django-rest-framework==0.1.0 djangorestframework==3.16.1 Markdown==3.10 MarkupSafe==2.1.1 -mysqlclient==2.2.7 +mysqlclient==2.2.8 python-dotenv==1.2.1 soupsieve==2.8 sqlparse==0.5.4 typing_extensions==4.15.0 -tzdata==2025.3 \ No newline at end of file +tzdata==2025.3 diff --git a/server.bat b/server.bat index d5a15b4..0095694 100644 --- a/server.bat +++ b/server.bat @@ -1,3 +1,5 @@ @ echo off echo The devlopment server will start in a few seconds... +python manage.py makemigrations +python manage.py migrate python manage.py runserver 3000 diff --git a/templates/blog/blog.html b/templates/blog/blog.html deleted file mode 100644 index 8c442b0..0000000 --- a/templates/blog/blog.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'base.html' %} -{% block content %} -

TechBlog

-

We provide a platform for people who want to help others.

-
-
- -{% endblock %} \ No newline at end of file diff --git a/templates/blog/blogCreate.html b/templates/blog/blogCreate.html deleted file mode 100644 index 3d6aab6..0000000 --- a/templates/blog/blogCreate.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'base.html' %} -{% block content %} -{% load crispy_forms_tags %} -
-
- {% csrf_token %} -
-
- Create a Blog -
-
- {{ form | crispy }} -
- -
- -
-
-
-{% endblock %} diff --git a/templates/blog/blogDetail.html b/templates/blog/blogDetail.html index 02e7c72..73a5bbe 100644 --- a/templates/blog/blogDetail.html +++ b/templates/blog/blogDetail.html @@ -1,12 +1,19 @@ {% extends 'base.html' %} {% block content %} - {% load markdown_extras %} -
-
-

{{ object.title | markdown | safe }}

-

{{ object.content | markdown | safe }}

- -
-
+{% load markdown_extras %} +
+ +
+
+

{{ object.title | markdown | safe }}

+

{{ object.content | markdown | safe }}

+
+ +
+ +
+ {% endblock %} \ No newline at end of file diff --git a/templates/blog/home.html b/templates/blog/home.html index 25c5231..b6cccf8 100644 --- a/templates/blog/home.html +++ b/templates/blog/home.html @@ -19,7 +19,7 @@
-
{{ post.title }} @{{ post.author }}
+

{{ post.title }}

{{ post.content | markdown | safe }}

diff --git a/templates/blog/postCreate.html b/templates/blog/postCreate.html deleted file mode 100644 index a735b5d..0000000 --- a/templates/blog/postCreate.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'base.html' %} -{% block content %} -{% load crispy_forms_tags %} -
-
- {% csrf_token %} -
-
- Create a Post -
-
- {{ form | crispy }} -
- -
- -
-
-
-{% endblock %} diff --git a/templates/blog/postDetail.html b/templates/blog/postDetail.html deleted file mode 100644 index 4a23eec..0000000 --- a/templates/blog/postDetail.html +++ /dev/null @@ -1,18 +0,0 @@ -{% extends 'base2.html' %} -{% block content %} - - {% load markdown_extras %} -
-
-

{{ object.content | markdown | safe }}

- -
-
- {% for comment in object.comments %} -
-

{{ comment.content | markdown | safe }}

- -
-
- {% endfor %} -{% endblock %} \ No newline at end of file diff --git a/templates/dev.html b/templates/dev.html index 862452f..b82d000 100644 --- a/templates/dev.html +++ b/templates/dev.html @@ -3,10 +3,10 @@ {% block content %} -
+

Beyond Heroes

@@ -16,19 +16,13 @@

Our Developers

- Similique earum unde unde exercitationem totam voluptatibus. Cupiditate reiciendis aut ducimus sunt. Sunt laboriosam rerum qui maxime quod aut aspernatur. Ipsa reprehenderit quas nihil vel dignissimos at. Repellendus minima dolorem ipsa sit est ipsum accusamus.
+ Made up of enthusiastic helpers from all over the globe, with a strong core in Germany, Poland, France, India, Argentina, and more. Sharing ideas across so many cultures gives us fresh perspectives and helps us keep eyes on different parts that might be more relevant locally and their experience with other mmos. That way, we can reach farther and keep a foot in major countries around the globe. If you'd like to join, just fill out the form and don't be scared to hit us up on Discord! Our work environment is super hostile and we do require you to have a sense of humor and the latest version of sarcasm which you can get here Sarcasm-StopMakingNewBranches-win-x64.7z

Our Vision

- Laborum nobis incidunt voluptate magnam voluptatibus. Itaque sequi eveniet vitae voluptas voluptatem ullam alias omnis. Officiis quia dolores architecto.Voluptate quia aspernatur excepturi voluptas molestias. Maxime magnam maiores sunt dolorum. Id possimus ullam rerum dignissimos.
-

-
-
-

Roadmap

-

- A adipisci ad quia accusantium voluptates. Rem culpa et repellendus qui et tenetur quia. Nam rem provident non. Eum quod nostrum molestiae ut expedita vel. In voluptas ea quod. Modi incidunt qui tempora soluta minus odio sed et.Est aliquid id est quia praesentium rerum blanditiis. Voluptas a est omnis. Aut non quo non. Numquam quibusdam esse cum nostrum ab vel et. Fugit porro libero commodi dicta omnis libero.
+ So blurry the background image seems fine. Beyond Heroes, aims to create an exciting World War gaming experience inspired by 'Heroes & Generals' but without the issues it had. Our goal is to provide the same immersive and challenging game while renewing some changes and upgrading the technical systems that preceded. Through strategic gameplay that made HnG so interesting, War, and balanced mechanics, our game aims to deliver a fun and rewarding experience that appeals to old and new players. We value our community and strive to provide a respectful and enjoyable environment that fosters teamwork, camaraderie, and sportsmanship. Also this text sounds corporate af, and thus this anti-climatic sentence is here to break with the same old corporate speech that makes us pay 5$ to open the game. The team is mostly comprised of people who share the same core values those being: Being against the new trend of p2w mechanics, combating microtransaction fatigue, being in favour of stop killing games, being in favour of clippy and against anti-consumer practices (1) (2), being absolutely against enshittification, and in favor of remakes.

diff --git a/templates/support.html b/templates/support.html index de9de74..170b96e 100644 --- a/templates/support.html +++ b/templates/support.html @@ -1,45 +1,44 @@ {% extends 'base.html' %} {% block content %} -
-
-

SUPPORT US

-

Hi! So, you want to support the project, I hear?

-

- Well, the main way you can do that is by joining the team or telling people to join the team! You can fill out these forms if you're interested in any dev position or if you're interested in translation.
-

-

If you want to help economically... let's talk first...

-

- Here's the thing, I really appreciate that you want to help us out, and we LOVE your energy. We really don't want to accept economic help, and there are a few reasons as to why. Mostly, we can't (or don't want to) promise anything, we don't want to get your hopes up, and we don't want to lead you to believe in something that might not happen. Giving us money has a worse ROI than playing it all on red in roulette, and as such, to me personally, it feels like asking for money from you just because you like us. If that's the case, okay, alright, no problem; we still have to solve the distribution issue, but whatever, we'll get to it eventually. Otherwise, understand that the reason the links are so hidden is exactly because we don't want you to feel like you wasted money - at least not before you knowingly and willingly understand that this is just like giving it to us because you like us and want to, or you have money to spare and don't care. If you want to specifically help out a team member, assign it on the message or something so I know who not to give it to :P -
-

-

- If you understand the above-mentioned stuff, then here's the links to our Ko-fi, and Buy Me a Coffee. -

+ +
+
+

Support Us

+
+
+

Hi! So, you want to support the project, I hear?

+

+ Well, the main way you can do that is by joining the team or telling people to join the team! You can fill out this form here if you're interested in any dev position or here if you're interested in translation.
+

+
+
+

If you want to help economically... let's talk first...

+

+ Here's the thing, I really appreciate that you want to help us out, and we LOVE your energy. We really don't want to accept economic help, and there are a few reasons as to why. Mostly, we can't (or don't want to) promise anything, we don't want to get your hopes up, and we don't want to lead you to believe in something that might not happen. Giving us money has a worse ROI than playing it all on red in roulette, and as such, to me personally, it feels like asking for money from you just because you like us. If that's the case, okay, alright, no problem; we still have to solve the distribution issue, but whatever, we'll get to it eventually. Otherwise, understand that the reason the links are so hidden is exactly because we don't want you to feel like you wasted money - at least not before you knowingly and willingly understand that this is just like giving it to us because you like us and want to, or you have money to spare and don't care. If you want to specifically help out a team member, assign it on the message or something so I know who not to give it to :P +
+ If you understand the above-mentioned stuff, then here's a link to our Ko-fi, and here's a link to our Buy Me a Coffee. +

-
- +
{% endblock %} \ No newline at end of file diff --git a/templates/users/profile.html b/templates/users/profile.html deleted file mode 100644 index 3d7c056..0000000 --- a/templates/users/profile.html +++ /dev/null @@ -1,58 +0,0 @@ - - -{% extends 'base.html' %} -{% block content %} - - {% load markdown_extras %} - -
-
- -
-
-
-
- Latest Posts -
-
- {% for post in posts %} - {% if post.author == profileUser %} - -
-
-
{{ post.author.username }} @{{ post.author.id }}
-

{{ post.content | markdown | safe }}

- -
-
- - {% endif %} - {% endfor %} -
-
-
-
- - -
-
-
-
- Profile Image -
-
-

{{ profileUser.username }}

-

@{{ profileUser.id }}

-

Date Joined: Jan 1, 2022

- {% if profileUser == user %} - Edit Profile - {% endif %} -
-
-
-
- -
-
- -{% endblock %} diff --git a/users/__init__.py b/users/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/users/apps.py b/users/apps.py deleted file mode 100644 index 0d276a3..0000000 --- a/users/apps.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.apps import AppConfig - - -class UsersConfig(AppConfig): - name = 'users' - - def ready(self): - import users.signals \ No newline at end of file diff --git a/users/migrations/0001_initial.py b/users/migrations/0001_initial.py deleted file mode 100644 index f83696d..0000000 --- a/users/migrations/0001_initial.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 5.0.2 on 2024-07-06 16:24 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Profile', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100)), - ('about', models.TextField(default='Hi, I am new to TechBlog')), - ('gender', models.TextField(default='None')), - ('dob', models.DateField(default='1999-01-01')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - ] diff --git a/users/migrations/__init__.py b/users/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/users/signals.py b/users/signals.py deleted file mode 100644 index acb1b9e..0000000 --- a/users/signals.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.db.models.signals import post_save -from django.contrib.auth.models import User -from django.dispatch import receiver diff --git a/users/tests.py b/users/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/users/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here.