Project Development

Version 42 (Etienne Pallier, 03/25/2016 06:55 pm)

1 1 Etienne Pallier
h1. Project Development
2 2 Etienne Pallier
3 17 Etienne Pallier
Project Installation page : [[Project Installation]]
4 2 Etienne Pallier
5 2 Etienne Pallier
HOWTO Format Redmine Wiki : http://www.redmine.org/projects/redmine/wiki/FrRedmineWikiFormatting
6 2 Etienne Pallier
7 2 Etienne Pallier
{{>toc}}
8 2 Etienne Pallier
9 2 Etienne Pallier
---
10 3 Etienne Pallier
11 3 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}TODO%
12 3 Etienne Pallier
13 36 Etienne Pallier
 * Interface admin (http://localhost:8000/admin):
14 1 Etienne Pallier
15 36 Etienne Pallier
  * Impossible d'ajouter un pays dans Country depuis admin (erreur sur pyrosuser.name)
16 36 Etienne Pallier
  * Impossible d'ajouter un telescope (erreur sur device.name)
17 37 Etienne Pallier
  * champs booleans: représenter en case à cocher (cf requests.is_alert) : is_alert = models.BooleanField()
18 36 Etienne Pallier
  * Fix plurals:
19 32 Etienne Pallier
20 36 Etienne Pallier
   * Country : plural "countries" and not "countrys"
21 36 Etienne Pallier
   * NrtAnalysiss
22 36 Etienne Pallier
   * Historys
23 1 Etienne Pallier
   * ...
24 37 Etienne Pallier
25 37 Etienne Pallier
 * Models: bien définir les valeurs par défaut
26 37 Etienne Pallier
27 37 Etienne Pallier
  * ex: request.is_alert = False par défaut
28 28 Etienne Pallier
29 28 Etienne Pallier
 * Preload some data for some tables:
30 30 Etienne Pallier
  
31 30 Etienne Pallier
  * country => France, Mexico, ...
32 30 Etienne Pallier
  * sequencetype => 0=routine, 1=alert, ...
33 28 Etienne Pallier
  * userlevel => 0=normal, 1=expert, 2=admin, ...
34 28 Etienne Pallier
  * ...
35 27 Etienne Pallier
36 27 Etienne Pallier
 * updated et created : champs automatiques Django
37 29 Etienne Pallier
38 29 Etienne Pallier
 * readonly admin interface : https://gist.github.com/aaugustin/1388243
39 35 Etienne Pallier
40 35 Etienne Pallier
 * Ecrire quelques premiers petits tests
41 18 Etienne Pallier
42 3 Etienne Pallier
 * Tester install eclipse from scratch (vérifier qu'on n'a plus besoin de faire "set as pydev" et "set as django" et set DJANGO_MANAGE_LOCATION et set DJANGO_SETTINGS_MODULE)
43 3 Etienne Pallier
44 3 Etienne Pallier
 * Séparation des BD Django et Pyros
45 3 Etienne Pallier
46 3 Etienne Pallier
 * Intégration des modules Django déjà développés
47 3 Etienne Pallier
48 3 Etienne Pallier
 * Intégration continue avec Jenkins (+ run des tests sur une VM Windows)
49 3 Etienne Pallier
50 3 Etienne Pallier
 * Planifier la suite...
51 3 Etienne Pallier
52 3 Etienne Pallier
 * Doc pour le meeting de mai
53 24 Etienne Pallier
54 24 Etienne Pallier
 * pyrossu : pyrossu!
55 3 Etienne Pallier
56 4 Etienne Pallier
---
57 4 Etienne Pallier
58 4 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}LIENS UTILES%
59 4 Etienne Pallier
60 4 Etienne Pallier
 * Liens vers web local :
61 4 Etienne Pallier
62 4 Etienne Pallier
  * homepage: http://localhost:8000
63 4 Etienne Pallier
  * admin: http://localhost:8000/admin
64 25 Etienne Pallier
65 25 Etienne Pallier
 * Eclipse:
66 26 Etienne Pallier
 
67 26 Etienne Pallier
  * Shift-Ctrl-f (ou Shift-Cmd-f) : reformatage du fichier selon PEP8
68 25 Etienne Pallier
  * Shift-Ctrl-1 : make doc string ...
69 4 Etienne Pallier
70 4 Etienne Pallier
 * Django:
71 4 Etienne Pallier
72 38 Etienne Pallier
  * Coding style: https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style
73 38 Etienne Pallier
  * Doc : https://docs.djangoproject.com/en/1.9
74 4 Etienne Pallier
75 4 Etienne Pallier
 * Git docs: 
76 19 Etienne Pallier
77 4 Etienne Pallier
  * Permissions gitlab: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/permissions/permissions.md
78 4 Etienne Pallier
  * https://git-scm.com/docs
79 4 Etienne Pallier
  * https://git-scm.com/book/fr/v1/Les-bases-de-Git-Travailler-avec-des-d%C3%A9p%C3%B4ts-distants
80 4 Etienne Pallier
  * les workflows: https://aresu.dsi.cnrs.fr/spip.php?article219
81 15 Etienne Pallier
  * Git for Eclipse users : http://wiki.eclipse.org/EGit/Git_For_Eclipse_Users
82 4 Etienne Pallier
  * Git sur sourcesup (avec jenkins) : https://services.renater.fr/sourcesup/formation/chap04#gestion_d_un_projet_avec_git_jenkins_sonar_et_nexus
83 4 Etienne Pallier
84 4 Etienne Pallier
 * CADOR web interface: http://cador.obs-hp.fr/ros/manual/cador_actions.html
85 4 Etienne Pallier
86 4 Etienne Pallier
 * pylint (analyse de code) : https://www.pylint.org
87 4 Etienne Pallier
88 4 Etienne Pallier
 * pyreverse (uml diagrams generation, inclus dans pylint) : https://www.logilab.org/blogentry/6883
89 4 Etienne Pallier
90 4 Etienne Pallier
 * tox (a generic virtualenv management and test command line tool) : https://testrun.org/tox/latest/index.html
91 4 Etienne Pallier
92 5 Etienne Pallier
---
93 5 Etienne Pallier
94 5 Etienne Pallier
95 5 Etienne Pallier
---
96 5 Etienne Pallier
97 5 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}I - DATABASE SCHEMA (v0.2.1)%
98 5 Etienne Pallier
99 5 Etienne Pallier
100 6 Etienne Pallier
{{thumbnail(PYROS_PDM_v021.png, size=300, title=Pyros data model)}}
101 7 Etienne Pallier
102 6 Etienne Pallier
---
103 7 Etienne Pallier
104 6 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}II - Get the project (from gitlab)%
105 20 Etienne Pallier
106 20 Etienne Pallier
h3. Gitlab management interface
107 20 Etienne Pallier
108 20 Etienne Pallier
https://gitlab.irap.omp.eu/epallier/pyros
109 20 Etienne Pallier
110 20 Etienne Pallier
https://gitlab.irap.omp.eu/epallier/pyros/team
111 20 Etienne Pallier
112 6 Etienne Pallier
h3. Get the project
113 8 Etienne Pallier
114 8 Etienne Pallier
https://projects.irap.omp.eu/projects/pyros/wiki/Project_Installation#II-Get-the-project-from-gitlab
115 7 Etienne Pallier
116 7 Etienne Pallier
---
117 11 Etienne Pallier
118 11 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}III - INSTALLATION%
119 11 Etienne Pallier
120 11 Etienne Pallier
https://projects.irap.omp.eu/projects/pyros/wiki/Project_Installation#III-INSTALLATION
121 11 Etienne Pallier
122 11 Etienne Pallier
---
123 6 Etienne Pallier
124 6 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}IV - CONFIGURATION of the Django Back Office (administration interface)%
125 6 Etienne Pallier
126 6 Etienne Pallier
[[django_backoffice_config|Configuration of the Django Back office (admin)]]
127 9 Etienne Pallier
128 9 Etienne Pallier
---
129 13 Etienne Pallier
130 39 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}VI - EVOLUTION OF THE PROJECT%
131 39 Etienne Pallier
132 41 Etienne Pallier
133 41 Etienne Pallier
./manage.py runserver
134 41 Etienne Pallier
135 41 Etienne Pallier
if DEBUG=False, we have errors, missing static files :
136 41 Etienne Pallier
137 41 Etienne Pallier
<pre>
138 41 Etienne Pallier
Not Found: /static/admin/css/base.css
139 41 Etienne Pallier
Not Found: /static/admin/css/login.css
140 41 Etienne Pallier
Not Found: /admin/login
141 41 Etienne Pallier
Not Found: /static/admin/css/base.css
142 41 Etienne Pallier
Not Found: /static/admin/css/login.css
143 41 Etienne Pallier
Not Found: /static/admin/css/base.css
144 41 Etienne Pallier
Not Found: /static/admin/css/login.css
145 41 Etienne Pallier
Not Found: /static/admin/css/base.css
146 41 Etienne Pallier
Not Found: /static/admin/css/dashboard.css
147 41 Etienne Pallier
Not Found: /static/admin/css/base.css
148 41 Etienne Pallier
Not Found: /static/admin/css/base.css
149 41 Etienne Pallier
150 41 Etienne Pallier
</pre>
151 41 Etienne Pallier
152 41 Etienne Pallier
153 41 Etienne Pallier
=> We have to activate the static files management
154 41 Etienne Pallier
155 41 Etienne Pallier
(see https://docs.djangoproject.com/en/1.9/howto/static-files)
156 41 Etienne Pallier
157 41 Etienne Pallier
In pyros/urls.py, add this:
158 41 Etienne Pallier
<pre>
159 41 Etienne Pallier
160 41 Etienne Pallier
from django.conf import settings
161 41 Etienne Pallier
from django.conf.urls.static import static
162 41 Etienne Pallier
163 41 Etienne Pallier
urlpatterns = [
164 41 Etienne Pallier
    url(r'^admin/', admin.site.urls),
165 41 Etienne Pallier
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
166 41 Etienne Pallier
</pre>
167 41 Etienne Pallier
168 41 Etienne Pallier
STATIC_ROOT must be defined in settings and says where is the root of all static files
169 41 Etienne Pallier
170 41 Etienne Pallier
Edit settings.py, add:
171 41 Etienne Pallier
<pre>
172 41 Etienne Pallier
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'public', 'static')
173 41 Etienne Pallier
</pre>
174 41 Etienne Pallier
175 41 Etienne Pallier
176 41 Etienne Pallier
./manage.py collectstatic
177 41 Etienne Pallier
178 41 Etienne Pallier
=> 56 static files copied to '.../PYROS/public/static'
179 41 Etienne Pallier
180 41 Etienne Pallier
(in fact it is in public/static/admin/)
181 41 Etienne Pallier
182 41 Etienne Pallier
Cette commande copie tous les fichiers statiques de toutes les applis
183 41 Etienne Pallier
dans public/static
184 41 Etienne Pallier
185 41 Etienne Pallier
Apache viendra lire ce dossier unique
186 41 Etienne Pallier
187 41 Etienne Pallier
A chq changement d’un fichier statique d’une appli, exécuter « collectstatic » pour mettre à jour le dossier final public/static (auquel on ne doit pas toucher manuellement, c’est un dossier « final »)
188 41 Etienne Pallier
189 41 Etienne Pallier
190 39 Etienne Pallier
---
191 39 Etienne Pallier
192 40 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}INSTALLATION FROM THE BEGINNING (for dev only, history of the initial project creation)%
193 6 Etienne Pallier
194 6 Etienne Pallier
195 1 Etienne Pallier
[[pyros_install_from_start|Pyros installation from the beginning]]