Skip to content
This repository was archived by the owner on Jan 7, 2022. It is now read-only.

Commit ffbb0b4

Browse files
nikhila05ashwin31
authored andcommitted
Initial app (#1)
* added initial app * updated from master * added aws details in documentation * updated docs * updated docs
1 parent 150b094 commit ffbb0b4

11 files changed

Lines changed: 890 additions & 1 deletion

File tree

README.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

README.rst

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
django-webpacker's documentation:
2+
=====================================
3+
4+
#badges
5+
6+
Introduction:
7+
=============
8+
9+
django-webpacker is a django compressor tool which bundles css, js files to a single css, js file with webpack and updates your html files with respective css, js file path.
10+
11+
It supports django-storages to load compressed files from AWS S3.
12+
13+
Source Code is available in Micropyramid Repository(https://github.com/MicroPyramid/django-webpacker).
14+
15+
16+
Installation Procedure
17+
======================
18+
19+
1. Install django-web-packer using the following command::
20+
21+
pip install django-webpacker
22+
23+
(or)
24+
25+
git clone git://github.com/micropyramid/django-webpacker.git
26+
27+
cd django-webpacker
28+
29+
python setup.py install
30+
31+
2. Add app name in project settings.py file::
32+
33+
INSTALLED_APPS = [
34+
'..................',
35+
'django-webpacker',
36+
'..................'
37+
]
38+
39+
3. Run npm init to intialize npm modules and it will create 'package.json' file which will contain package information. Update file with following dependencies::
40+
41+
"devDependencies": {
42+
"babel": "^6.23.0",
43+
"babel-core": "^6.24.0",
44+
"babel-loader": "^6.4.1",
45+
"css-loader": "^0.28.0",
46+
"extract-text-webpack-plugin": "^2.1.0",
47+
"file-loader": "^0.11.1",
48+
"html-webpack-inline-source-plugin": "0.0.7",
49+
"html-webpack-plugin": "^2.28.0",
50+
"image-webpack-loader": "^3.3.0",
51+
"less-loader": "^4.0.3",
52+
"node-sass": "^4.5.2",
53+
"react": "^15.4.2",
54+
"react-hot-loader": "^1.3.1",
55+
"sass-loader": "^6.0.3",
56+
"script-loader": "^0.7.0",
57+
"style-loader": "^0.16.1",
58+
"webpack": "^2.3.3",
59+
"webpack-bundle-tracker": "^0.2.0",
60+
"webpack-dev-server": "^2.4.2"
61+
},
62+
"dependencies": {
63+
"imports-loader": "^0.7.1",
64+
"jquery": "^3.2.1"
65+
}
66+
67+
4. Run npm install to install all package dependencies.
68+
69+
npm install
70+
71+
5. Updates Your html file with the following script, link stylesheet tags.
72+
73+
<link rel="stylesheet" type="text/css" href="" id="packer_css"/>
74+
75+
<script id="packer_js" src="" type="text/javascript"></script>
76+
77+
6. Create webpack.config.js file with webpack.config.js file data. Update your project entry points with their respective paths. We can give multiple entry points(i.e separate entry point for each app) for the project. After compressing, separate css, file will be genarated with respective entry point name.
78+
79+
80+
7. Add the following details in settings file about compressing css, js files::
81+
82+
WEB_PACK_FILES = [
83+
{'html_file_name': {{ HTML_FILE_RELATIVE_PATH }},
84+
'webpack_js': {{ WEBPACK_ENTRY_POINT_KEY_NAME }},
85+
},
86+
{'html_file_name': {{ HTML_FILE_RELATIVE_PATH }},
87+
'webpack_js': {{ WEBPACK_ENTRY_POINT_KEY_NAME }},
88+
},
89+
{'html_file_name': {{ HTML_FILE_RELATIVE_PATH }}',
90+
'webpack_js': {{ WEBPACK_ENTRY_POINT_KEY_NAME }},
91+
},
92+
]
93+
94+
8. Run python manage.py compress_css_js_files to generate compressed css, js file. It will updates html file with respective compressed css, js files. Link, script tags will be loaded with compressed css, js files.
95+
96+
97+
9. If you use django storages, then add the following variable to settings file to load compressed css, js files from s3.
98+
99+
100+
# AWS details
101+
102+
AWS_ACCESS_KEY_ID = "Your AWS Access Key"
103+
104+
AWS_SECRET_ACCESS_KEY = "Your AWS Secret Key"
105+
106+
AWS_BUCKET_NAME = "Your AWS Bucket Name"
107+
108+
ENABLE_DJANGO_WEBPACK_AWS = True
109+
110+
Modules used:
111+
-------------
112+
113+
* Django = 1.9.6
114+
115+
116+
We are always looking to help you customize the whole or part of the code as you like.
117+
118+
119+
Visit our Django Development page `Here`_
120+
121+
122+
We welcome your feedback and support, raise `github ticket`_ if you want to report a bug. Need new features? `Contact us here`_
123+
124+
.. _contact us here: https://micropyramid.com/contact-us/
125+
.. _github ticket: https://github.com/MicroPyramid/django-webpacker/issues
126+
.. _Here: https://micropyramid.com/django-development-services/
127+
128+
or
129+
130+
mailto:: "hello@micropyramid.com"
131+

django_webpacker/__init__.py

Whitespace-only changes.

django_webpacker/management/__init__.py

Whitespace-only changes.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
from django.core.management.base import BaseCommand
2+
import json
3+
import subprocess
4+
5+
try:
6+
from boto.s3.connection import S3Connection
7+
from boto.s3.key import Key
8+
except:
9+
pass
10+
11+
from django.conf import settings
12+
import mimetypes
13+
import os
14+
15+
16+
def call_subprocess(command):
17+
proc = subprocess.Popen(command,
18+
shell=True,
19+
stdin=subprocess.PIPE,
20+
stdout=subprocess.PIPE,
21+
)
22+
23+
24+
def upload_to_s3(css_file):
25+
bucket_name = settings.AWS_BUCKET_NAME
26+
conn = S3Connection(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
27+
28+
folder = 'webpack_bundles/'
29+
bucket = conn.get_bucket(bucket_name=bucket_name)
30+
31+
filename = css_file.split('/')[-1]
32+
file_obj = open(css_file, 'r')
33+
content = file_obj.read()
34+
35+
key = folder + filename
36+
bucket = conn.get_bucket(bucket_name=bucket_name)
37+
mime = mimetypes.guess_type(filename)[0]
38+
k = Key(bucket)
39+
k.key = key # folder + filename
40+
k.set_metadata("Content-Type", mime)
41+
k.set_contents_from_string(content)
42+
public_read = True
43+
if public_read:
44+
k.set_acl("public-read")
45+
46+
47+
48+
class Command(BaseCommand):
49+
args = '<filename>'
50+
help = 'Loads the initial data in to database'
51+
52+
def handle(self, *args, **options):
53+
call_subprocess('./node_modules/.bin/webpack --config webpack.config.js')
54+
55+
56+
for each in settings.WEB_PACK_FILES:
57+
directory = settings.BASE_DIR + '/static/webpack_bundles/'
58+
css_file = max([os.path.join(directory, d) for d in os.listdir(directory) if d.startswith(each['webpack_js']) and d.endswith('css')], key=os.path.getmtime)
59+
js_file = max([os.path.join(directory, d) for d in os.listdir(directory) if d.startswith(each['webpack_js']) and d.endswith('js')], key=os.path.getmtime)
60+
61+
if settings.ENABLE_DJANGO_WEBPACK_S3_STORAGES:
62+
upload_to_s3(css_file)
63+
upload_to_s3(js_file)
64+
65+
import re
66+
regex = r'(.*?<link rel="stylesheet" type="text/css" href=")(.*?)(" id="packer_css"/>.*?<script id="packer_js" src=")(.*?)(" type="text/javascript"></script>.*)'
67+
68+
with open(each['html_file_name'], 'r+') as f:
69+
content = f.read()
70+
m = re.match(regex, content, re.DOTALL)
71+
href = settings.STATIC_URL + css_file.split('/static/')[-1]
72+
src = settings.STATIC_URL + js_file.split('/static/')[-1]
73+
content = m.group(1) + href + m.group(3) + src + m.group(5)
74+
75+
with open(each['html_file_name'], 'w') as f:
76+
f.write(content)
77+
78+
result = {'message': "Successfully Created Compressed CSS, JS Files"}
79+
return json.dumps(result)

docs/Makefile

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
# Makefile for Sphinx documentation
2+
#
3+
4+
# You can set these variables from the command line.
5+
SPHINXOPTS =
6+
SPHINXBUILD = sphinx-build
7+
PAPER =
8+
BUILDDIR = build
9+
10+
# User-friendly check for sphinx-build
11+
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
12+
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
13+
endif
14+
15+
# Internal variables.
16+
PAPEROPT_a4 = -D latex_paper_size=a4
17+
PAPEROPT_letter = -D latex_paper_size=letter
18+
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
19+
# the i18n builder cannot share the environment and doctrees with the others
20+
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
21+
22+
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
23+
24+
help:
25+
@echo "Please use \`make <target>' where <target> is one of"
26+
@echo " html to make standalone HTML files"
27+
@echo " dirhtml to make HTML files named index.html in directories"
28+
@echo " singlehtml to make a single large HTML file"
29+
@echo " pickle to make pickle files"
30+
@echo " json to make JSON files"
31+
@echo " htmlhelp to make HTML files and a HTML help project"
32+
@echo " qthelp to make HTML files and a qthelp project"
33+
@echo " devhelp to make HTML files and a Devhelp project"
34+
@echo " epub to make an epub"
35+
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
36+
@echo " latexpdf to make LaTeX files and run them through pdflatex"
37+
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
38+
@echo " text to make text files"
39+
@echo " man to make manual pages"
40+
@echo " texinfo to make Texinfo files"
41+
@echo " info to make Texinfo files and run them through makeinfo"
42+
@echo " gettext to make PO message catalogs"
43+
@echo " changes to make an overview of all changed/added/deprecated items"
44+
@echo " xml to make Docutils-native XML files"
45+
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
46+
@echo " linkcheck to check all external links for integrity"
47+
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
48+
49+
clean:
50+
rm -rf $(BUILDDIR)/*
51+
52+
html:
53+
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
54+
@echo
55+
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
56+
57+
dirhtml:
58+
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
59+
@echo
60+
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
61+
62+
singlehtml:
63+
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
64+
@echo
65+
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
66+
67+
pickle:
68+
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
69+
@echo
70+
@echo "Build finished; now you can process the pickle files."
71+
72+
json:
73+
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
74+
@echo
75+
@echo "Build finished; now you can process the JSON files."
76+
77+
htmlhelp:
78+
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
79+
@echo
80+
@echo "Build finished; now you can run HTML Help Workshop with the" \
81+
".hhp project file in $(BUILDDIR)/htmlhelp."
82+
83+
qthelp:
84+
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
85+
@echo
86+
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
87+
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
88+
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/MicroSite.qhcp"
89+
@echo "To view the help file:"
90+
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/MicroSite.qhc"
91+
92+
devhelp:
93+
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
94+
@echo
95+
@echo "Build finished."
96+
@echo "To view the help file:"
97+
@echo "# mkdir -p $$HOME/.local/share/devhelp/MicroSite"
98+
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/MicroSite"
99+
@echo "# devhelp"
100+
101+
epub:
102+
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
103+
@echo
104+
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
105+
106+
latex:
107+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
108+
@echo
109+
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
110+
@echo "Run \`make' in that directory to run these through (pdf)latex" \
111+
"(use \`make latexpdf' here to do that automatically)."
112+
113+
latexpdf:
114+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
115+
@echo "Running LaTeX files through pdflatex..."
116+
$(MAKE) -C $(BUILDDIR)/latex all-pdf
117+
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
118+
119+
latexpdfja:
120+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
121+
@echo "Running LaTeX files through platex and dvipdfmx..."
122+
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
123+
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
124+
125+
text:
126+
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
127+
@echo
128+
@echo "Build finished. The text files are in $(BUILDDIR)/text."
129+
130+
man:
131+
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
132+
@echo
133+
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
134+
135+
texinfo:
136+
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
137+
@echo
138+
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
139+
@echo "Run \`make' in that directory to run these through makeinfo" \
140+
"(use \`make info' here to do that automatically)."
141+
142+
info:
143+
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
144+
@echo "Running Texinfo files through makeinfo..."
145+
make -C $(BUILDDIR)/texinfo info
146+
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
147+
148+
gettext:
149+
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
150+
@echo
151+
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
152+
153+
changes:
154+
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
155+
@echo
156+
@echo "The overview file is in $(BUILDDIR)/changes."
157+
158+
linkcheck:
159+
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
160+
@echo
161+
@echo "Link check complete; look for any errors in the above output " \
162+
"or in $(BUILDDIR)/linkcheck/output.txt."
163+
164+
doctest:
165+
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
166+
@echo "Testing of doctests in the sources finished, look at the " \
167+
"results in $(BUILDDIR)/doctest/output.txt."
168+
169+
xml:
170+
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
171+
@echo
172+
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
173+
174+
pseudoxml:
175+
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
176+
@echo
177+
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."

docs/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)