├── .dockerignore
├── app
├── __init__.py
├── models.py
├── admin.py
├── tests.py
├── views.py
└── apps.py
├── runtime.txt
├── createnshare
├── __init__.py
├── .env
├── asgi.py
├── wsgi.py
├── urls.py
└── settings.py
├── createnshare-db-schema.png
├── Procfile
├── .gitignore
├── heroku.yml
├── requirements.txt
├── docker-compose.yml
├── Dockerfile
├── manage.py
├── Issue_Templates
├── bug_report.md
├── general_issue.md
└── feature_request.md
├── PR_Template.md
├── LICENSE
├── .github
└── workflows
│ ├── prod.yaml
│ └── dev.yaml
├── Contributing.md
├── README.md
└── dotfile.dot
/.dockerignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/runtime.txt:
--------------------------------------------------------------------------------
1 | python-3.9.4
--------------------------------------------------------------------------------
/createnshare/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 | # Create your models here.
4 |
--------------------------------------------------------------------------------
/app/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/app/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/app/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
--------------------------------------------------------------------------------
/createnshare-db-schema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chiraag-kakar/createnshare/HEAD/createnshare-db-schema.png
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | release: python manage.py migrate
2 |
3 | web: gunicorn createnshare.wsgi --log-file -
4 |
5 | worker: python manage.py rqworker default
--------------------------------------------------------------------------------
/app/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class AppConfig(AppConfig):
5 | default_auto_field = 'django.db.models.BigAutoField'
6 | name = 'app'
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | *~
3 | /.vscode
4 | __pycache__
5 | /__pycache__/
6 | db.sqlite3
7 | /static
8 | .DS_Store
9 | /migrations/
10 | createnshare/.env
11 | # Virtual Environments
12 | env/
13 | myenv/
14 | virtual/
15 | v/
16 | myvenv/
17 | vir/
--------------------------------------------------------------------------------
/heroku.yml:
--------------------------------------------------------------------------------
1 | setup:
2 | addons:
3 | - plan: heroku-postgresql
4 | build:
5 | docker:
6 | web: Dockerfile
7 | release:
8 | image: web
9 | command:
10 | - python manage.py collectstatic --noinput
11 | run:
12 | web: gunicorn createnshare.wsgi
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | asgiref==3.5.0
2 | autopep8==1.6.0
3 | dj-database-url==0.5.0
4 | Django==4.0.1
5 | django-environ==0.8.1
6 | django-extensions==3.1.5
7 | django-heroku==0.3.1
8 | graphviz==0.19.1
9 | gunicorn==20.1.0
10 | psycopg2==2.9.3
11 | pycodestyle==2.8.0
12 | pydot==1.4.2
13 | pyparsing==3.0.7
14 | sqlparse==0.4.2
15 | toml==0.10.2
16 | tzdata==2021.5
17 | whitenoise==5.3.0
18 |
--------------------------------------------------------------------------------
/createnshare/.env:
--------------------------------------------------------------------------------
1 | SECRET_KEY=django-insecure-%2ktj$5&th*!v^*5mw)1s6_s1nf)(+p!c%z4^v<m5c4p2p0a
2 | DB_ENGINE=django.db.backends.postgresql_psycopg2
3 | DB_NAME=createnshare-test-1
4 | DB_USER=postgres
5 | DB_PASSWORD=Chiraag@001
6 | DB_HOST=db
7 | DB_PORT=5432
8 | DATABASE_URL=postgres://nmgosibpspofxx:bf3caa8c2b1a2db913ce11a116ca60d46bccbe5d7ee871c6178e505a03079187@ec2-34-205-46-149.compute-1.amazonaws.com:5432/d4429ul1k862js
--------------------------------------------------------------------------------
/createnshare/asgi.py:
--------------------------------------------------------------------------------
1 | """
2 | ASGI config for createnshare project.
3 |
4 | It exposes the ASGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.asgi import get_asgi_application
13 |
14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'createnshare.settings')
15 |
16 | application = get_asgi_application()
17 |
--------------------------------------------------------------------------------
/createnshare/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for createnshare project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'createnshare.settings')
14 | application = get_wsgi_application()
15 | # Heroku
16 | from whitenoise import WhiteNoise
17 | application = WhiteNoise(application)
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.9'
2 |
3 | services:
4 | db:
5 | image: postgres
6 | volumes:
7 | - ./data/db:/var/lib/postgresql/data
8 | environment:
9 | - POSTGRES_DB=createnshare-test-1
10 | - POSTGRES_USER=postgres
11 | - POSTGRES_PASSWORD=Chiraag@001
12 | web:
13 | build: .
14 | env_file: createnshare/.env
15 | command: >
16 | sh -c "python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
17 | volumes:
18 | - .:/code
19 | ports:
20 | - "8000:8000"
21 | depends_on:
22 | - db
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # pull official base image
2 | FROM python:3.9.6-alpine
3 |
4 | # set work directory
5 | WORKDIR /usr/src/app
6 |
7 | # set environment variables
8 | ENV PYTHONDONTWRITEBYTECODE 1
9 | ENV PYTHONUNBUFFERED 1
10 |
11 | # install psycopg2 dependencies
12 | RUN apk update \
13 | && apk add postgresql-dev gcc python3-dev musl-dev
14 |
15 | # install dependencies
16 | RUN pip install --upgrade pip
17 | COPY ./requirements.txt .
18 | RUN pip install -r requirements.txt
19 |
20 | # copy project
21 | COPY . .
22 | RUN python manage.py makemigrations app
23 | RUN python manage.py migrate app
24 | RUN python manage.py collectstatic --noinput --clear
25 | # EXPOSE 8000
26 | # Run application
27 | CMD gunicorn django_heroku.wsgi:application
--------------------------------------------------------------------------------
/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | """Django's command-line utility for administrative tasks."""
3 | import os
4 | import sys
5 |
6 |
7 | def main():
8 | """Run administrative tasks."""
9 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'createnshare.settings')
10 | try:
11 | from django.core.management import execute_from_command_line
12 | except ImportError as exc:
13 | raise ImportError(
14 | "Couldn't import Django. Are you sure it's installed and "
15 | "available on your PYTHONPATH environment variable? Did you "
16 | "forget to activate a virtual environment?"
17 | ) from exc
18 | execute_from_command_line(sys.argv)
19 |
20 |
21 | if __name__ == '__main__':
22 | main()
23 |
--------------------------------------------------------------------------------
/Issue_Templates/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | ### **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | ### **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | ### **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | ### **Additional context**
27 | Add any other context about the problem here.
28 |
29 |
30 |
31 |
32 | **Note:**
33 | * If you want to work on an issue, you should check if it has already been assigned to anyone.
--------------------------------------------------------------------------------
/createnshare/urls.py:
--------------------------------------------------------------------------------
1 | """createnshare URL Configuration
2 |
3 | The `urlpatterns` list routes URLs to views. For more information please see:
4 | https://docs.djangoproject.com/en/4.0/topics/http/urls/
5 | Examples:
6 | Function views
7 | 1. Add an import: from my_app import views
8 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 | Class-based views
10 | 1. Add an import: from other_app.views import Home
11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 | Including another URLconf
13 | 1. Import the include() function: from django.urls import include, path
14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 | """
16 | from django.contrib import admin
17 | from django.urls import path
18 |
19 | urlpatterns = [
20 | path('admin/', admin.site.urls),
21 | ]
22 |
--------------------------------------------------------------------------------
/PR_Template.md:
--------------------------------------------------------------------------------
1 | ## What is the change?
2 | Remove this line and add a description
3 |
4 | ## Related issue?
5 | Fixes: #issue_number
6 |
7 |
8 | ## How was it tested?
9 | Remove this line and tell us how the code was tested.
10 |
11 | ## Checklist:
12 | Before you create this PR, confirm all the requirements listed below by checking the checkboxes `[x]`:
13 |
14 | - [] Have you followed the [Contribution Guidelines](https://github.com/chiraag-kakar/sharenlearn/blob/master/Contributing.md) while contributing.
15 | - [] Have you checked there aren't other open [Pull Requests](https://github.com/chiraag-kakar/sharenlearn/pulls) for the same update/change?
16 | - [] Have you made corresponding changes to the documentation?
17 | - [] Your submission doesn't break any existing feature.
18 | - [] Have you tested the code before submission?
19 |
20 | ## Screenshots or Video:
21 | Add a screenshot or demo video if appropriate.
--------------------------------------------------------------------------------
/Issue_Templates/general_issue.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: General issue
3 | about: Suggest an issue for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | # Prerequisites:
11 |
12 | Please answer the following questions for yourself before submitting an issue. **YOU MAY DELETE THE PREREQUISITES SECTION.**
13 |
14 |
15 | - [ ] I checked to make sure that this issue has not already been filed.
16 |
17 | - [ ] I'm reporting the issue to the correct repository (for multi-repository projects) **(optional)**
18 |
19 |
20 |
21 | # Expected Behavior:
22 |
23 | Please describe the behavior you are expecting.
24 |
25 | # Current Behavior:
26 |
27 | What is the current behavior?
28 |
29 | # Solution:
30 |
31 | Please describe what will you do to solve this issue or your approach to solve this issue.
32 |
33 | # Screenshots (optional):
34 |
35 | **Note:**
36 | * If you want to work on an issue, you should check if it has already been assigned to anyone.
--------------------------------------------------------------------------------
/Issue_Templates/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### Feature request-
11 | A clear and concise description of the feature.
12 |
13 | ### Is your feature request related to a problem? Please describe. (optional)
14 | A clear and concise description of what the problem is.
15 |
16 | ### Describe the solution you'd like
17 | A clear and concise description of what you want to happen.
18 |
19 | ### Describe alternatives you've considered
20 | A clear and concise description of any alternative solutions or features you've considered.
21 |
22 | ### Describe how this feature will be useful to our readers.
23 | A clear and concise description of how this feature will be useful for our other readers.
24 |
25 | ### Additional context
26 | Add any other context or screenshots about the feature request here.
27 |
28 |
29 |
30 | **Note:**
31 | * If you want to work on an issue, you should check if it has already been assigned to anyone.
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Chiraag Kakar
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/.github/workflows/prod.yaml:
--------------------------------------------------------------------------------
1 | name: Main Workflow - Test and Deploy
2 |
3 | on:
4 | pull_request:
5 | branches: [main]
6 | push:
7 | branches: [main]
8 | #set environment variables
9 | env:
10 | HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
11 | HEROKU_APP_NAME: ${{ 'prod-createnshare' }}
12 | HEROKU_EMAIL: ${{ 'chiraag.kakar.22@gmail.com' }}
13 |
14 | jobs:
15 | health-checkup-job: #Check the healthy by running tests
16 | runs-on: ubuntu-latest
17 | strategy:
18 | max-parallel: 4
19 | matrix:
20 | python-version: [3.9.4]
21 |
22 | steps:
23 | - uses: actions/checkout@v2
24 | - name: Set up Python ${{ matrix.python-version }}
25 | uses: actions/setup-python@v2
26 | with:
27 | python-version: ${{ matrix.python-version }}
28 | - name: Install Dependencies
29 | run: |
30 | python -m pip install --upgrade pip
31 | pip install -r requirements.txt
32 |
33 | - name: Run migrations
34 | run: |
35 | python manage.py makemigrations --noinput
36 | python manage.py migrate --noinput
37 | python manage.py collectstatic --noinput --clear
38 |
39 | - name: Run Tests
40 | run: |
41 | python manage.py test app
42 | - name: Check Syntax #We are just testing the syntax in names app; pycodestyle uses pep8 conventions of max line length of 79 characters while Django recommends 119 characters
43 | run: pycodestyle --statistics app
--------------------------------------------------------------------------------
/.github/workflows/dev.yaml:
--------------------------------------------------------------------------------
1 | name: Develop Workflow - Test and Deploy
2 |
3 | on:
4 | pull_request:
5 | branches: [develop]
6 | push:
7 | branches: [develop]
8 | #set environment variables
9 | env:
10 | HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
11 | HEROKU_APP_NAME: ${{ 'develop-createnshare' }}
12 | HEROKU_EMAIL: ${{ 'chiraag.kakar.22@gmail.com' }}
13 |
14 | jobs:
15 | health-checkup-job: #Check the healthy by running tests
16 | runs-on: ubuntu-latest
17 | strategy:
18 | max-parallel: 4
19 | matrix:
20 | python-version: [3.9.4]
21 |
22 | steps:
23 | - uses: actions/checkout@v2
24 | - name: Set up Python ${{ matrix.python-version }}
25 | uses: actions/setup-python@v2
26 | with:
27 | python-version: ${{ matrix.python-version }}
28 | - name: Install Dependencies
29 | run: |
30 | python -m pip install --upgrade pip
31 | pip install -r requirements.txt
32 |
33 | - name: Run migrations
34 | run: |
35 | python manage.py makemigrations --noinput
36 | python manage.py migrate --noinput
37 | python manage.py collectstatic --noinput --clear
38 |
39 | - name: Run Tests
40 | run: |
41 | python manage.py test app
42 | - name: Check Syntax #We are just testing the syntax in names app; pycodestyle uses pep8 conventions of max line length of 79 characters while Django recommends 119 characters
43 | run: pycodestyle --statistics app
--------------------------------------------------------------------------------
/createnshare/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for createnshare project.
3 |
4 | Generated by 'django-admin startproject' using Django 4.0.1.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/4.0/topics/settings/
8 |
9 | For the full list of settings and their values, see
10 | https://docs.djangoproject.com/en/4.0/ref/settings/
11 | """
12 |
13 | from pathlib import Path
14 | import django_heroku
15 | import environ
16 | import os
17 | # Build paths inside the project like this: BASE_DIR / 'subdir'.
18 | BASE_DIR = Path(__file__).resolve().parent.parent
19 |
20 |
21 | # Quick-start development settings - unsuitable for production
22 | # See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/
23 |
24 | # SECURITY WARNING: keep the secret key used in production secret!
25 | # Initialise environment variables
26 | env = environ.Env()
27 | environ.Env.read_env()
28 |
29 | SECRET_KEY = env('SECRET_KEY')
30 |
31 | # SECURITY WARNING: don't run with debug turned on in production!
32 | DEBUG = True
33 |
34 | ALLOWED_HOSTS = ['*']
35 |
36 |
37 | # Application definition
38 |
39 | GRAPH_MODELS = {
40 | 'all_applications': True,
41 | 'group_models': True,
42 | 'app_labels': ["app"],
43 | }
44 | INSTALLED_APPS = [
45 | 'django.contrib.admin',
46 | 'django.contrib.auth',
47 | 'django.contrib.contenttypes',
48 | 'django.contrib.sessions',
49 | 'django.contrib.messages',
50 | 'django.contrib.staticfiles',
51 | 'app',
52 | 'django_extensions'
53 | ]
54 |
55 | MIDDLEWARE = [
56 | 'django.middleware.security.SecurityMiddleware',
57 | 'django.contrib.sessions.middleware.SessionMiddleware',
58 | 'django.middleware.common.CommonMiddleware',
59 | 'django.middleware.csrf.CsrfViewMiddleware',
60 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
61 | 'django.contrib.messages.middleware.MessageMiddleware',
62 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
63 | 'whitenoise.middleware.WhiteNoiseMiddleware', # heroku
64 | ]
65 |
66 | ROOT_URLCONF = 'createnshare.urls'
67 |
68 | TEMPLATES = [
69 | {
70 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
71 | 'DIRS': [],
72 | 'APP_DIRS': True,
73 | 'OPTIONS': {
74 | 'context_processors': [
75 | 'django.template.context_processors.debug',
76 | 'django.template.context_processors.request',
77 | 'django.contrib.auth.context_processors.auth',
78 | 'django.contrib.messages.context_processors.messages',
79 | ],
80 | },
81 | },
82 | ]
83 | # AUTH_USER_MODEL = "app.UserProfile"
84 |
85 | WSGI_APPLICATION = 'createnshare.wsgi.application'
86 |
87 |
88 | # Database
89 | # https://docs.djangoproject.com/en/4.0/ref/settings/#databases
90 |
91 | # DATABASES = {
92 | # 'default': {
93 | # 'ENGINE': 'django.db.backends.sqlite3',
94 | # 'NAME': BASE_DIR / 'db.sqlite3',
95 | # }
96 | # }
97 |
98 | # Local DB Configuration
99 | # if os.getenv('GITHUB_WORKFLOW'):
100 | # DATABASES = {
101 | # 'default': {
102 | # 'ENGINE': 'django.db.backends.postgresql',
103 | # 'NAME': 'github-actions',
104 | # 'USER': 'postgres',
105 | # 'PASSWORD': 'postgres',
106 | # 'HOST': 'localhost',
107 | # 'PORT': '5432'
108 | # }
109 | # }
110 | # else:
111 | # DATABASES = {
112 | # 'default': {
113 | # 'ENGINE': 'django.db.backends.postgresql',
114 | # 'NAME': os.getenv('DB_NAME'),
115 | # 'USER': os.getenv('DB_USER'),
116 | # 'PASSWORD': os.getenv('DB_PASSWORD'),
117 | # 'HOST': os.getenv('DB_HOST'),
118 | # 'PORT': os.getenv('DB_PORT')
119 | # }
120 | # }
121 |
122 | # Production DB Configuration
123 | DATABASES = {}
124 | DATABASES['default'] = env('DATABASE_URL')
125 | # DATABASES['default'] = 'postgres://nmgosibpspofxx:bf3caa8c2b1a2db913ce11a116ca60d46bccbe5d7ee871c6178e505a03079187@ec2-34-205-46-149.compute-1.amazonaws.com:5432/d4429ul1k862js'
126 |
127 |
128 |
129 | # Password validation
130 | # https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
131 |
132 | AUTH_PASSWORD_VALIDATORS = [
133 | {
134 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
135 | },
136 | {
137 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
138 | },
139 | {
140 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
141 | },
142 | {
143 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
144 | },
145 | ]
146 |
147 |
148 | # Internationalization
149 | # https://docs.djangoproject.com/en/4.0/topics/i18n/
150 |
151 | LANGUAGE_CODE = 'en-us'
152 |
153 | TIME_ZONE = 'UTC'
154 |
155 | USE_I18N = True
156 |
157 | USE_TZ = True
158 |
159 |
160 | # Static files (CSS, JavaScript, Images)
161 | # https://docs.djangoproject.com/en/4.0/howto/static-files/
162 |
163 | STATIC_URL = 'static/'
164 |
165 | # Default primary key field type
166 | # https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field
167 |
168 | DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
169 | STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
170 | # Activate Django-Heroku.
171 | django_heroku.settings(locals())
172 |
--------------------------------------------------------------------------------
/Contributing.md:
--------------------------------------------------------------------------------
1 | # Contributing to this project
2 |
3 | Please take a moment to review this document in order to make the contribution
4 | process easy and effective for everyone involved.
5 |
6 | Following these guidelines helps to communicate that you respect the time of
7 | the developers managing and developing this open source project. In return,
8 | they should reciprocate that respect in addressing your issue or assessing
9 | patches and features.
10 |
11 |
12 | ## Using the [issue tracker]()
13 |
14 | The issue tracker is the preferred channel for [bug reports](#bugs),
15 | [features requests](#features) and [submitting pull
16 | requests](#pull-requests), but please respect the following restrictions:
17 |
18 | * Please **do not** use the issue tracker for personal support requests (use
19 | [Stack Overflow](http://stackoverflow.com) or IRC).
20 |
21 | * Please **do not** derail or troll issues. Keep the discussion on topic and
22 | respect the opinions of others.
23 |
24 |
25 |
26 | ## Bug reports
27 |
28 | A bug is a _demonstrable problem_ that is caused by the code in the repository.
29 | Good bug reports are extremely helpful - thank you!
30 |
31 | Guidelines for bug reports:
32 |
33 | 1. **Use the GitHub issue search** — check if the issue has already been
34 | reported.
35 |
36 | 2. **Check if the issue has been fixed** — try to reproduce it using the
37 | latest `master` or development branch in the repository.
38 |
39 | 3. **Isolate the problem** — create a [reduced test
40 | case](http://css-tricks.com/reduced-test-cases/) and a live example.
41 |
42 | A good bug report shouldn't leave others needing to chase you up for more
43 | information. Please try to be as detailed as possible in your report. What is
44 | your environment? What steps will reproduce the issue? What browser(s) and OS
45 | experience the problem? What would you expect to be the outcome? All these
46 | details will help people to fix any potential bugs.
47 |
48 | Example:
49 |
50 | > Short and descriptive example bug report title
51 | >
52 | > A summary of the issue and the browser/OS environment in which it occurs. If
53 | > suitable, include the steps required to reproduce the bug.
54 | >
55 | > 1. This is the first step
56 | > 2. This is the second step
57 | > 3. Further steps, etc.
58 | >
59 | > `` - a link to the reduced test case
60 | >
61 | > Any other information you want to share that is relevant to the issue being
62 | > reported. This might include the lines of code that you have identified as
63 | > causing the bug, and potential solutions (and your opinions on their
64 | > merits).
65 |
66 |
67 |
68 | ## Feature requests
69 |
70 | Feature requests are welcome. But take a moment to find out whether your idea
71 | fits with the scope and aims of the project. It's up to *you* to make a strong
72 | case to convince the project's developers of the merits of this feature. Please
73 | provide as much detail and context as possible.
74 |
75 |
76 |
77 | ## Pull requests
78 |
79 | Good pull requests - patches, improvements, new features - are a fantastic
80 | help. They should remain focused in scope and avoid containing unrelated
81 | commits.
82 |
83 | **Please ask first** before embarking on any significant pull request (e.g.
84 | implementing features, refactoring code, porting to a different language),
85 | otherwise you risk spending a lot of time working on something that the
86 | project's developers might not want to merge into the project.
87 |
88 | Please adhere to the coding conventions used throughout a project (indentation,
89 | accurate comments, etc.) and any other requirements (such as test coverage).
90 |
91 | Follow this process if you'd like your work considered for inclusion in the
92 | project:
93 |
94 | 1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork,
95 | and configure the remotes:
96 |
97 | ```bash
98 | # Clone your fork of the repo into the current directory
99 | git clone https://github.com//
100 | # Navigate to the newly cloned directory
101 | cd
102 | # Assign the original repo to a remote called "upstream"
103 | git remote add upstream https://github.com//
104 | ```
105 |
106 | 2. If you cloned a while ago, get the latest changes from upstream:
107 |
108 | ```bash
109 | git checkout
110 | git pull upstream
111 | ```
112 |
113 | 3. Create a new topic branch (off the main project development branch) to
114 | contain your feature, change, or fix:
115 |
116 | ```bash
117 | git checkout -b
118 | ```
119 |
120 | 4. Commit your changes in logical chunks. Please adhere to these [git commit
121 | message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
122 | or your code is unlikely be merged into the main project. Use Git's
123 | [interactive rebase](https://help.github.com/articles/interactive-rebase)
124 | feature to tidy up your commits before making them public.
125 |
126 | 5. Locally merge (or rebase) the upstream development branch into your topic branch:
127 |
128 | ```bash
129 | git pull [--rebase] upstream
130 | ```
131 |
132 | 6. Push your topic branch up to your fork:
133 |
134 | ```bash
135 | git push origin
136 | ```
137 |
138 | 7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
139 | with a clear title and description.
140 |
141 | **IMPORTANT**: By submitting a patch, you agree to allow the project owner to
142 | license your work under the same license as that used by the project.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # create n share
2 |
3 |
4 | ---
5 |
6 |
7 |
8 | [Click here to view the DB Schema](createnshare-db-schema.png)
9 |
10 | []()
11 | []()
12 | []()
13 | []()
14 | [](https://github.com/chiraag-kakar/createnshare/pulls)
15 | []()
16 | []()
17 | []()
18 | []()
19 |
20 |
21 | **Create N Share** is a No Code solution which gives users the ability to create any type of feature rich survey forms with ease.
22 |
23 | ### Goal
24 |
25 | To build a Software-As-A-Service that helps the surveyors get responses in real time. The data can also be exported, sliced and diced to find actionable insights.
26 |
27 | ### Tech Stack
28 |
29 | - HTML, CSS and Javascript
30 | - Python Django Framework
31 | - Docker, Github Actions
32 |
33 | Hit :star2: to show some :heart:
34 |
35 | ## Getting Started
36 |
37 | These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
38 |
39 | ### Development Environment Setup: Windows
40 |
41 |
42 |
43 | Step 1: Downloading and Installing the Code Editor
44 |
45 |
46 | You can install any one of the following code editors.
47 |
48 |
53 |
54 | ---
55 |
56 |
57 |
58 | Step 2: Installing Python 3.9
59 |
60 |
61 | Download Python 3.9
62 |
63 |
64 | - Download the Windows x86-64 executable installer for the 64-bit version of Windows
65 | - Download the Windows x86 executable installer for the 32-bit version of Windows.
66 | - Make sure to check 'Add Python 3.9 to Path' in the setup window of the Installer.
67 |
68 |
69 | Verify the installation from the command prompt (Terminal) using the following command,
70 |
71 | ```bash
72 | python --version
73 | ```
74 |
75 | Installed version of python will be printed.
76 |
77 |
78 | ---
79 |
80 |
81 |
82 | Step 3: Installing Git
83 |
84 |
85 | Download Git
86 |
87 |
88 | ---
89 |
90 |
91 |
92 | Step 4: Fork the Repository
93 |
94 |
95 | Click on
to fork this repsository
96 |
97 |
98 | ---
99 |
100 |
101 |
102 | Step 5: Creating Project Directory
103 |
104 |
105 | Note: We're creating project directory on the desktop for easy and fast access.
106 |
107 |
108 | ```bash
109 | cd desktop
110 |
111 | mkdir myprojects
112 |
113 | cd myprojects
114 | ```
115 |
116 |
117 | ---
118 |
119 |
120 |
121 | Step 6: Cloning Repository using Git
122 |
123 |
124 |
125 | ```bash
126 | git clone https://github.com/''/createnshare.git
127 | ```
128 |
129 |
130 | ---
131 |
132 |
133 |
134 | Step 7: Change directory to createnshare
135 |
136 |
137 |
138 | ```bash
139 | cd createnshare
140 | ```
141 |
142 |
143 | ---
144 |
145 |
146 |
147 | Step 8: Add a reference to the original repository
148 |
149 |
150 |
151 | ```bash
152 | git remote add upstream https://github.com/chiraag-kakar/createnshare.git
153 | ```
154 |
155 |
156 | ---
157 |
158 |
159 |
160 | Step 9: Creating Virtual Environment
161 |
162 |
163 | Install virtualenv
164 |
165 |
166 | ```bash
167 | pip3 install virtualenv
168 | ```
169 |
170 | Creating Virtual Environment named `myvenv`
171 |
172 | ```bash
173 | virtualenv myvenv -p python3.9
174 | ```
175 |
176 | To Activate `myvenv`
177 |
178 | ```bash
179 | myvenv\Scripts\activate
180 | ```
181 |
182 | To deactivate `myvenv`
183 |
184 | ```bash
185 | deactivate
186 | ```
187 |
188 |
189 | ---
190 |
191 |
192 |
193 | Step 10: Installing Requirements
194 |
195 |
196 | Note: Before installing requirements, Make sure Virtual Environment is activated.
197 |
198 |
199 | ```bash
200 | pip install -r requirements.txt
201 | ```
202 |
203 |
204 | ---
205 |
206 |
207 |
208 | Step 11: Making database migrations
209 |
210 |
211 |
212 | ```bash
213 | python manage.py makemigrations
214 | python manage.py migrate
215 | ```
216 |
217 |
218 | ---
219 |
220 |
221 |
222 | Step 12: Creating superuser to access Admin Panel
223 |
224 |
225 |
226 | ```bash
227 | python manage.py createsuperuser
228 | ```
229 |
230 |
231 | ---
232 |
233 |
234 |
235 | Step 13: Running the Project in local server
236 |
237 |
238 | Note: Before running the project in local server, Make sure you activate the Virtual Environment.
239 |
240 |
241 | ```bash
242 | python manage.py runserver
243 | ```
244 |
245 |
246 | ---
247 |
248 | :bulb: Pro Tip!
249 |
250 | * Always keep your master branch in sync with the main repository byr running the following command on the local master branch. Refer this stackoverflow page.
251 |
252 | ```bash
253 | git pull upstream master
254 | ```
255 |
256 | * Always create a new branch before making any changes. Never ever make any changes directly on the master branch. To create a **new** branch,
257 |
258 | ```bash
259 | git checkout -b ''
260 | ```
261 |
262 | ---
263 |
264 | ## Congratulations on setting up the project locally.
265 |
266 | ---
267 |
268 | ## Contributing
269 |
270 | * Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
271 |
272 | * For major changes, please open an issue first to discuss what you would like to change.
273 |
274 | * **Note:** Please take a moment to review the Contributing.md and Code of Conduct which provides the guidelines for contributing.
275 |
276 | * Fork the project.
277 | * Create your Feature Branch
278 | ```bash
279 | git checkout -b ''
280 | ```
281 | * Stage your changes
282 | ```bash
283 | git add .
284 | ```
285 | * Commit your changes
286 | ```bash
287 | git commit -m ''
288 | ```
289 | * Push changes to remote
290 | ```bash
291 | git push origin ''
292 | ```
293 | * Open a Pull Request
294 |
295 | ---
296 |
297 | ## Contributors
298 |
307 |
308 | ---
309 |
310 |
311 | ## Maintainers
312 |
313 | - [Chiraag Kakar](https://github.com/chiraag-kakar)
314 | - [Yogesh Jha](https://github.com/hound77)
315 |
316 |
317 | ## License
318 |
319 | This project is licensed under the MIT License - see the LICENSE.md file for details.
320 |
321 | ---
322 |
323 | Chiraag Kakar
324 |
325 |
326 |
327 |
328 |
329 |
330 |
--------------------------------------------------------------------------------
/dotfile.dot:
--------------------------------------------------------------------------------
1 | digraph model_graph {
2 | // Dotfile by Django-Extensions graph_models
3 | // Created: 2022-02-03 12:56
4 | // Cli Options: -a
5 |
6 | fontname = "Roboto"
7 | fontsize = 8
8 | splines = true
9 | rankdir = "TB"
10 |
11 | node [
12 | fontname = "Roboto"
13 | fontsize = 8
14 | shape = "plaintext"
15 | ]
16 |
17 | edge [
18 | fontname = "Roboto"
19 | fontsize = 8
20 | ]
21 |
22 | // Labels
23 | subgraph cluster_django_contrib_admin {
24 | label=<
25 |
26 | |
27 |
28 | django.contrib.admin
29 |
30 | |
31 |
32 | >
33 | color=olivedrab4
34 | style="rounded"
35 |
36 | django_contrib_admin_models_LogEntry [label=<
37 |
38 | |
39 |
40 | LogEntry
41 | |
42 |
43 |
44 | |
45 | id
46 | |
47 | AutoField
48 | |
49 |
50 |
51 |
52 | |
53 | content_type
54 | |
55 | ForeignKey (id)
56 | |
57 |
58 |
59 |
60 | |
61 | user
62 | |
63 | ForeignKey (id)
64 | |
65 |
66 |
67 |
68 | |
69 | action_flag
70 | |
71 | PositiveSmallIntegerField
72 | |
73 |
74 |
75 |
76 | |
77 | action_time
78 | |
79 | DateTimeField
80 | |
81 |
82 |
83 |
84 | |
85 | change_message
86 | |
87 | TextField
88 | |
89 |
90 |
91 |
92 | |
93 | object_id
94 | |
95 | TextField
96 | |
97 |
98 |
99 |
100 | |
101 | object_repr
102 | |
103 | CharField
104 | |
105 |
106 |
107 |
108 | >]
109 |
110 | }
111 | subgraph cluster_django_contrib_auth {
112 | label=<
113 |
114 | |
115 |
116 | django.contrib.auth
117 |
118 | |
119 |
120 | >
121 | color=olivedrab4
122 | style="rounded"
123 |
124 | django_contrib_auth_models_AbstractUser [label=<
125 |
126 |
127 |
128 | AbstractUser <AbstractBaseUser,PermissionsMixin>
129 | |
130 |
131 |
132 | |
133 | date_joined
134 | |
135 | DateTimeField
136 | |
137 |
138 |
139 |
140 | |
141 | email
142 | |
143 | EmailField
144 | |
145 |
146 |
147 |
148 | |
149 | first_name
150 | |
151 | CharField
152 | |
153 |
154 |
155 |
156 | |
157 | is_active
158 | |
159 | BooleanField
160 | |
161 |
162 |
163 |
164 | |
165 | is_staff
166 | |
167 | BooleanField
168 | |
169 |
170 |
171 |
172 | |
173 | is_superuser
174 | |
175 | BooleanField
176 | |
177 |
178 |
179 |
180 | |
181 | last_login
182 | |
183 | DateTimeField
184 | |
185 |
186 |
187 |
188 | |
189 | last_name
190 | |
191 | CharField
192 | |
193 |
194 |
195 |
196 | |
197 | password
198 | |
199 | CharField
200 | |
201 |
202 |
203 |
204 | |
205 | username
206 | |
207 | CharField
208 | |
209 |
210 |
211 |
212 | >]
213 |
214 | django_contrib_auth_models_Permission [label=<
215 |
216 | |
217 |
218 | Permission
219 | |
220 |
221 |
222 | |
223 | id
224 | |
225 | AutoField
226 | |
227 |
228 |
229 |
230 | |
231 | content_type
232 | |
233 | ForeignKey (id)
234 | |
235 |
236 |
237 |
238 | |
239 | codename
240 | |
241 | CharField
242 | |
243 |
244 |
245 |
246 | |
247 | name
248 | |
249 | CharField
250 | |
251 |
252 |
253 |
254 | >]
255 |
256 | django_contrib_auth_models_Group [label=<
257 |
258 | |
259 |
260 | Group
261 | |
262 |
263 |
264 | |
265 | id
266 | |
267 | AutoField
268 | |
269 |
270 |
271 |
272 | |
273 | name
274 | |
275 | CharField
276 | |
277 |
278 |
279 |
280 | >]
281 |
282 | django_contrib_auth_models_User [label=<
283 |
284 |
285 |
286 | User <AbstractUser>
287 | |
288 |
289 |
290 | |
291 | id
292 | |
293 | AutoField
294 | |
295 |
296 |
297 |
298 | |
299 | date_joined
300 | |
301 | DateTimeField
302 | |
303 |
304 |
305 |
306 | |
307 | email
308 | |
309 | EmailField
310 | |
311 |
312 |
313 |
314 | |
315 | first_name
316 | |
317 | CharField
318 | |
319 |
320 |
321 |
322 | |
323 | is_active
324 | |
325 | BooleanField
326 | |
327 |
328 |
329 |
330 | |
331 | is_staff
332 | |
333 | BooleanField
334 | |
335 |
336 |
337 |
338 | |
339 | is_superuser
340 | |
341 | BooleanField
342 | |
343 |
344 |
345 |
346 | |
347 | last_login
348 | |
349 | DateTimeField
350 | |
351 |
352 |
353 |
354 | |
355 | last_name
356 | |
357 | CharField
358 | |
359 |
360 |
361 |
362 | |
363 | password
364 | |
365 | CharField
366 | |
367 |
368 |
369 |
370 | |
371 | username
372 | |
373 | CharField
374 | |
375 |
376 |
377 |
378 | >]
379 |
380 | }
381 | subgraph cluster_django_contrib_contenttypes {
382 | label=<
383 |
384 | |
385 |
386 | django.contrib.contenttypes
387 |
388 | |
389 |
390 | >
391 | color=olivedrab4
392 | style="rounded"
393 |
394 | django_contrib_contenttypes_models_ContentType [label=<
395 |
396 | |
397 |
398 | ContentType
399 | |
400 |
401 |
402 | |
403 | id
404 | |
405 | AutoField
406 | |
407 |
408 |
409 |
410 | |
411 | app_label
412 | |
413 | CharField
414 | |
415 |
416 |
417 |
418 | |
419 | model
420 | |
421 | CharField
422 | |
423 |
424 |
425 |
426 | >]
427 |
428 | }
429 | subgraph cluster_django_contrib_sessions {
430 | label=<
431 |
432 | |
433 |
434 | django.contrib.sessions
435 |
436 | |
437 |
438 | >
439 | color=olivedrab4
440 | style="rounded"
441 |
442 | django_contrib_sessions_base_session_AbstractBaseSession [label=<
443 |
444 | |
445 |
446 | AbstractBaseSession
447 | |
448 |
449 |
450 | |
451 | expire_date
452 | |
453 | DateTimeField
454 | |
455 |
456 |
457 |
458 | |
459 | session_data
460 | |
461 | TextField
462 | |
463 |
464 |
465 |
466 | >]
467 |
468 | django_contrib_sessions_models_Session [label=<
469 |
470 |
471 |
472 | Session <AbstractBaseSession>
473 | |
474 |
475 |
476 | |
477 | session_key
478 | |
479 | CharField
480 | |
481 |
482 |
483 |
484 | |
485 | expire_date
486 | |
487 | DateTimeField
488 | |
489 |
490 |
491 |
492 | |
493 | session_data
494 | |
495 | TextField
496 | |
497 |
498 |
499 |
500 | >]
501 |
502 | }
503 | subgraph cluster_app {
504 | label=<
505 |
506 | |
507 |
508 | app
509 |
510 | |
511 |
512 | >
513 | color=olivedrab4
514 | style="rounded"
515 |
516 | app_models_UserProfile [label=<
517 |
518 | |
519 |
520 | UserProfile
521 | |
522 |
523 |
524 | |
525 | id
526 | |
527 | BigAutoField
528 | |
529 |
530 |
531 |
532 | |
533 | user
534 | |
535 | ForeignKey (id)
536 | |
537 |
538 |
539 |
540 | >]
541 |
542 | app_models_Choices [label=<
543 |
544 | |
545 |
546 | Choices
547 | |
548 |
549 |
550 | |
551 | id
552 | |
553 | BigAutoField
554 | |
555 |
556 |
557 |
558 | |
559 | choice
560 | |
561 | CharField
562 | |
563 |
564 |
565 |
566 | |
567 | is_answer
568 | |
569 | BooleanField
570 | |
571 |
572 |
573 |
574 | >]
575 |
576 | app_models_Questions [label=<
577 |
578 | |
579 |
580 | Questions
581 | |
582 |
583 |
584 | |
585 | id
586 | |
587 | BigAutoField
588 | |
589 |
590 |
591 |
592 | |
593 | answer_key
594 | |
595 | CharField
596 | |
597 |
598 |
599 |
600 | |
601 | feedback
602 | |
603 | CharField
604 | |
605 |
606 |
607 |
608 | |
609 | question
610 | |
611 | CharField
612 | |
613 |
614 |
615 |
616 | |
617 | question_type
618 | |
619 | CharField
620 | |
621 |
622 |
623 |
624 | |
625 | required
626 | |
627 | BooleanField
628 | |
629 |
630 |
631 |
632 | |
633 | score
634 | |
635 | IntegerField
636 | |
637 |
638 |
639 |
640 | >]
641 |
642 | app_models_Answer [label=<
643 |
644 | |
645 |
646 | Answer
647 | |
648 |
649 |
650 | |
651 | id
652 | |
653 | BigAutoField
654 | |
655 |
656 |
657 |
658 | |
659 | answer_to
660 | |
661 | ForeignKey (id)
662 | |
663 |
664 |
665 |
666 | |
667 | answer
668 | |
669 | CharField
670 | |
671 |
672 |
673 |
674 | >]
675 |
676 | app_models_Form [label=<
677 |
678 | |
679 |
680 | Form
681 | |
682 |
683 |
684 | |
685 | id
686 | |
687 | BigAutoField
688 | |
689 |
690 |
691 |
692 | |
693 | creator
694 | |
695 | ForeignKey (id)
696 | |
697 |
698 |
699 |
700 | |
701 | allow_view_score
702 | |
703 | BooleanField
704 | |
705 |
706 |
707 |
708 | |
709 | authenticated_responder
710 | |
711 | BooleanField
712 | |
713 |
714 |
715 |
716 | |
717 | background_color
718 | |
719 | CharField
720 | |
721 |
722 |
723 |
724 | |
725 | code
726 | |
727 | CharField
728 | |
729 |
730 |
731 |
732 | |
733 | collect_email
734 | |
735 | BooleanField
736 | |
737 |
738 |
739 |
740 | |
741 | confirmation_message
742 | |
743 | CharField
744 | |
745 |
746 |
747 |
748 | |
749 | createdAt
750 | |
751 | DateTimeField
752 | |
753 |
754 |
755 |
756 | |
757 | description
758 | |
759 | CharField
760 | |
761 |
762 |
763 |
764 | |
765 | edit_after_submit
766 | |
767 | BooleanField
768 | |
769 |
770 |
771 |
772 | |
773 | is_quiz
774 | |
775 | BooleanField
776 | |
777 |
778 |
779 |
780 | |
781 | text_color
782 | |
783 | CharField
784 | |
785 |
786 |
787 |
788 | |
789 | title
790 | |
791 | CharField
792 | |
793 |
794 |
795 |
796 | |
797 | updatedAt
798 | |
799 | DateTimeField
800 | |
801 |
802 |
803 |
804 | >]
805 |
806 | app_models_Responses [label=<
807 |
808 | |
809 |
810 | Responses
811 | |
812 |
813 |
814 | |
815 | id
816 | |
817 | BigAutoField
818 | |
819 |
820 |
821 |
822 | |
823 | responder
824 | |
825 | ForeignKey (id)
826 | |
827 |
828 |
829 |
830 | |
831 | response_to
832 | |
833 | ForeignKey (id)
834 | |
835 |
836 |
837 |
838 | |
839 | responder_email
840 | |
841 | EmailField
842 | |
843 |
844 |
845 |
846 | |
847 | responder_ip
848 | |
849 | CharField
850 | |
851 |
852 |
853 |
854 | |
855 | response_code
856 | |
857 | CharField
858 | |
859 |
860 |
861 |
862 | >]
863 |
864 | }
865 |
866 |
867 | // Relations
868 |
869 | django_contrib_admin_models_LogEntry -> django_contrib_auth_models_User
870 | [label=" user (logentry)"] [arrowhead=none, arrowtail=dot, dir=both];
871 |
872 | django_contrib_admin_models_LogEntry -> django_contrib_contenttypes_models_ContentType
873 | [label=" content_type (logentry)"] [arrowhead=none, arrowtail=dot, dir=both];
874 |
875 | django_contrib_auth_base_user_AbstractBaseUser [label=<
876 |
877 | |
878 | AbstractBaseUser
879 | |
880 |
881 | >]
882 | django_contrib_auth_models_AbstractUser -> django_contrib_auth_base_user_AbstractBaseUser
883 | [label=" abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];
884 | django_contrib_auth_models_PermissionsMixin [label=<
885 |
886 | |
887 | PermissionsMixin
888 | |
889 |
890 | >]
891 | django_contrib_auth_models_AbstractUser -> django_contrib_auth_models_PermissionsMixin
892 | [label=" abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];
893 |
894 | django_contrib_auth_models_Permission -> django_contrib_contenttypes_models_ContentType
895 | [label=" content_type (permission)"] [arrowhead=none, arrowtail=dot, dir=both];
896 |
897 | django_contrib_auth_models_Group -> django_contrib_auth_models_Permission
898 | [label=" permissions (group)"] [arrowhead=dot arrowtail=dot, dir=both];
899 |
900 | django_contrib_auth_models_User -> django_contrib_auth_models_Group
901 | [label=" groups (user)"] [arrowhead=dot arrowtail=dot, dir=both];
902 |
903 | django_contrib_auth_models_User -> django_contrib_auth_models_Permission
904 | [label=" user_permissions (user)"] [arrowhead=dot arrowtail=dot, dir=both];
905 |
906 | django_contrib_auth_models_User -> django_contrib_auth_models_AbstractUser
907 | [label=" abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];
908 |
909 |
910 |
911 | django_contrib_sessions_models_Session -> django_contrib_sessions_base_session_AbstractBaseSession
912 | [label=" abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];
913 |
914 |
915 | app_models_UserProfile -> django_contrib_auth_models_User
916 | [label=" user (userprofile)"] [arrowhead=none, arrowtail=dot, dir=both];
917 |
918 | app_models_Questions -> app_models_Choices
919 | [label=" choices (choices)"] [arrowhead=dot arrowtail=dot, dir=both];
920 |
921 | app_models_Answer -> app_models_Questions
922 | [label=" answer_to (answer_to)"] [arrowhead=none, arrowtail=dot, dir=both];
923 |
924 | app_models_Form -> app_models_UserProfile
925 | [label=" creator (creator)"] [arrowhead=none, arrowtail=dot, dir=both];
926 |
927 | app_models_Form -> app_models_Questions
928 | [label=" questions (questions)"] [arrowhead=dot arrowtail=dot, dir=both];
929 |
930 | app_models_Responses -> app_models_Form
931 | [label=" response_to (response_to)"] [arrowhead=none, arrowtail=dot, dir=both];
932 |
933 | app_models_Responses -> app_models_UserProfile
934 | [label=" responder (responder)"] [arrowhead=none, arrowtail=dot, dir=both];
935 |
936 | app_models_Responses -> app_models_Answer
937 | [label=" response (response)"] [arrowhead=dot arrowtail=dot, dir=both];
938 |
939 |
940 | }
941 |
--------------------------------------------------------------------------------