Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion LogApp/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
# Application definition

INSTALLED_APPS = [
'PricingPlans',
'django_filters',
'jet',
'rest_framework',
Expand All @@ -48,6 +47,7 @@
'Messenger.apps.MessengerConfig',
'paypal.standard',
'paypal.pro',
'PricingPlans',
]
X_FRAME_OPTIONS = 'SAMEORIGIN'
MIDDLEWARE = [
Expand Down Expand Up @@ -151,4 +151,8 @@
},
}

PAYPAL_WPP_USER = ''
PAYPAL_WPP_PASSWORD = ''
PAYPAL_WPP_SIGNATURE = ''

from .local_settings import *
89 changes: 88 additions & 1 deletion Messenger/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,90 @@
from django.test import TestCase
from rest_framework import status
from rest_framework.test import APIClient
from utils.helpers_for_tests import create_user, dump, login_user
from Messenger.models import GroupChat, Message
from datetime import datetime

# Create your tests here.

class GroupChatTest(TestCase):

def setUp(self):
self.c = APIClient()
self.adminMax = create_user('admin@max')
self.adminKoly = create_user('admin@koly')
self.groupChat = GroupChat.objects.create(
name='test group chat',
description='description test',
owner=self.adminMax,
image=None
)
self.groupChat.participants.set([self.adminMax, self.adminKoly])

def test_empty_get(self):
self.assertEqual(1, 1)

def test_unauthorised_restriction(self):
response = self.c.get('/messenger/group-chat/')
print(dir(status))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

def test_group_chat_list(self):
login_user(self.c, self.adminMax)
response = self.c.get('/messenger/group-chat/')

self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data[0]['owner']['id'], self.adminMax.id)
self.assertEqual(response.data[0]['participants'][0]['id'], self.adminKoly.id)
self.assertEqual(response.data[0]['participants'][1]['id'], self.adminMax.id)
self.assertEqual(response.data, [
{
'id': self.groupChat.id,
'name': 'test group chat',
'description': "description test",
'owner': response.data[0]['owner'],
'participants': response.data[0]['participants'],
'image': None
}
])


class MessageTest(TestCase):

def setUp(self):
self.c = APIClient()
self.adminMax = create_user('admin@max')
self.adminKoly = create_user('admin@koly')
self.groupChat = GroupChat.objects.create(
name='test group chat',
description='description test',
owner=self.adminMax,
image=None
)
self.groupChat.participants.set([self.adminMax, self.adminKoly])
self.message = Message.objects.create(
group_chat=self.groupChat,
sender=self.adminMax,
recipient=self.adminKoly,
timestamp=datetime.now(),
body='Hello friend',
is_read=False
)

def test_message_list(self):
login_user(self.c, self.adminMax)
response = self.c.get(f'/messenger/message/?group_chat_id={self.groupChat.id}')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data[0]['sender']['id'], self.adminMax.id)
self.assertEqual(response.data[0]['recipient']['id'], self.adminKoly.id)

self.assertEqual(response.data, [
{
'id': self.message.id,
'group_chat': self.groupChat.id,
'sender': response.data[0]['sender'],
'recipient': response.data[0]['recipient'],
'timestamp': response.data[0]['timestamp'],
'body': 'Hello friend',
'is_read': False
}
])
4 changes: 2 additions & 2 deletions Notifications/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
from django.utils import timezone
from django.contrib.auth.models import User

class Notification(models.Model):

class Notification(models.Model):
EMAIL_NTF = "email"
SMS_NTF = "sms"
NTF_TYPE = [
Expand All @@ -19,4 +19,4 @@ class Notification(models.Model):
message = models.CharField(max_length=999)
recipient = models.ForeignKey(User, related_name="ntf_to", on_delete=models.CASCADE, null=True)
owner = models.ForeignKey(User, related_name="ntf_from", on_delete=models.CASCADE, null=True)
date = models.DateTimeField(default=timezone.now)
date = models.DateTimeField(default=timezone.now)
2 changes: 1 addition & 1 deletion PricingPlans/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ class PricePlanTypes(models.Model):
(PricePlanTypes.pro, 'Pro Plan'),
(PricePlanTypes.vip, 'Vip Plan'),
]
payment_time = models.DateTimeField('payment time', default=django.utils.timezone.now())
payment_time = models.DateTimeField('payment time', default=django.utils.timezone.now)
payer = models.ForeignKey(User, on_delete=models.CASCADE)
plan_type = models.CharField(max_length=100, choices=plans)
59 changes: 35 additions & 24 deletions commands
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,23 @@ Ubuntu:
-Install pip3, DB:
sudo apt-get update
sudo apt-get -y install python3-pip
sudo apt-get install --reinstall libpq-dev
pip3 install psycopg2
-Install Django:
sudo pip3 install django==3.2

-Package install:
source ~/HillelProjects/log_app/venv/bin/activate
pip3 install -U --upgrade pip
pip3 install -r requirements.txt
*pip3 freeze|grep -i psycopg2 >> requirements.txt

-Postgres:
sudo apt-get install --reinstall libpq-dev
sudo apt install postgresql postgresql-contrib
pip3 install psycopg2

DB console:
sudo -u postgres psql
create user test_admin with password 'admin1234';
create database log_app owner test_admin;
*ALTER USER user CREATEDB; // for tests

-DB:
python3 manage.py makemigrations
Expand All @@ -19,13 +30,21 @@ Ubuntu:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Start local server:
export PATH=$PATH:$HOME/Downloads/redis-stable/src
redis-server --port 6379
python3 manage.py runserver
Net console:
sudo apt install redis-server
export PATH=$PATH:$HOME/Downloads/redis-stable/src
redis-server --port 6379
Another console:
python3 manage.py runserver
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Start test:
sudo apt install python-pytest
pytest test_main.py -s
or
./manage.py test
or
python3 manage.py test

JET:
https://pypi.org/project/django-3-jet/
Expand All @@ -52,17 +71,6 @@ Rest:
https://www.django-rest-framework.org/api-guide/generic-views/#generic-views
https://www.django-rest-framework.org/tutorial/1-serialization/

Postgres:
sudo apt-get install --reinstall libpq-dev
pip3 install psycopg2

DB console:
sudo -u postgres psql
create user test_admin with password 'admin1234';
create database log_app owner test_admin;

python3 manage.py migrate

Additional commands:
python3 manage.py startapp messenger - Add new module

Expand All @@ -86,9 +94,12 @@ Add WS:
export PATH=$PATH:$HOME/Downloads/redis-stable/src
redis-server --port 6379

Add static fields for Jet.js etc:
Add in settings: STATIC_ROOT = 'public/static/'
python3 manage.py collectstatic

!!!! nginx + supervisor + uwsgi + django !!!!
Add uWSGI:
source ~/HillelProjects/log_app/env/bin/activate
pip3 install uWSGI
pip3 freeze|grep -i uwsgi >> requirements.txt

Expand All @@ -106,11 +117,11 @@ Add Supervisor:
* sudo service supervisor stop

Start nginx + supervisor+uwsgi+django:
*maxim1106 - <username>
mkdir -p /home/maxim1106/HillelProjects/log_app/logs
*max - <username>
mkdir -p /home/max/HillelProjects/log_app/logs

uWSGI:
sudo ln -s /home/maxim1106/HillelProjects/log_app/supervisor/production.conf /etc/supervisor/conf.d/log_app.conf
sudo ln -s /home/max/HillelProjects/log_app/supervisor/production.conf /etc/supervisor/conf.d/log_app.conf
sudo supervisorctl update
sudo supervisorctl status

Expand All @@ -121,9 +132,9 @@ Start nginx + supervisor+uwsgi+django:
* sudo supervisorctl restart all

Nginx:
sudo ln -s /home/maxim1106/HillelProjects/log_app/nginx/production.conf /etc/nginx/sites-enabled/log_app.conf
sudo ln -s /home/max/HillelProjects/log_app/nginx/production.conf /etc/nginx/sites-enabled/log_app.conf
sudo nginx -t
sudo nginx -s reload

* ps -ef | grep nginx
* service nginx start
* sudo service nginx start
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ psycopg2-binary==2.8.4
dj-database-url==0.5.0
gunicorn==20.0.4
whitenoise==5.0.1
django-filters==0.1.0
django-filter==21.1
channels==2.4.0
channels-redis==2.4.2
Expand Down