Denis Merigoux преди 9 години
родител
ревизия
2f455bc268

+ 1 - 1
counter/templates/counterTemplate.html

@@ -1,7 +1,7 @@
1 1
 {% extends 'baseTemplate.html' %} {% block title %}{{counter.trigramme}}{% endblock %} {% block content %}
2 2
 <div class="text-center">
3 3
   <h1>
4
-      <a class="counter-link" href="{% url 'home' %}">{{counter.trigramme}} <small>{{ counter.name }}</small></a>
4
+      <a class="counter-link" href="{% url 'home' %}"><b>{{counter.trigramme}}</b> <small>{{ counter.name }}</small></a>
5 5
   </h1>
6 6
 </div>
7 7
 <div class="container-fluid">

+ 67 - 0
counter/templates/createUser.html

@@ -0,0 +1,67 @@
1
+{% extends 'baseTemplate.html' %} {% block title %}Changement du mot de passe{% endblock %}{% block content %}
2
+<div class="container">
3
+    <div class="row">
4
+        <div class="text-center">
5
+            <h1><a class="counter-link" href="{% url 'home' %}">SeumBook™</a></h1>
6
+        </div>
7
+    </div>
8
+    <div class="row">
9
+        <div class="panel panel-primary">
10
+            <div class="panel-heading">
11
+                <h2 class="panel-title">Créé ton compteur de seum !</h2>
12
+            </div>
13
+            <div class=" panel-body">
14
+                <form method="POST">
15
+                    {% csrf_token %}
16
+                    <p>L'adresse e-mail sera utilisée pour la réinitialisation de ton mot de passe. Ton login sur le site sera la première partie de cette adresse (avant le @).</p>
17
+                    <div class="form-group">
18
+                        <label for="id_email">Adresse email</label>
19
+                        <input id="id_email" type="email" class="form-control" name="email" required />
20
+                    </div>
21
+                    <p>Si tu coches la case en dessous, tu recevras un mail de <tt>seum@merigoux.ovh</tt> à chaque fois que quelqu'un aura le seum sur le site. Spammatoire mais jouissif, peut-être désactivé ou réactivé par la suite.</p>
22
+                    <div class="form-check">
23
+                        <input type="checkbox" class="form-check-input" name="email_notifications">
24
+                        <label class="form-check-label">
25
+                            Notifications par email
26
+                        </label>
27
+                    </div>
28
+                    <p>Les autres utilisateurs ne pourront voir que ton pseudo et ton trigramme, ce sera ton identité seumesque !</p>
29
+                    <div class="form-group">
30
+                        <label for="id_trigramme">Trigramme</label>
31
+                        <input id="id_trigramme" maxlength="3" type="text" class="form-control text-uppercase" name="trigramme" onkeyup="this.value=this.value.toUpperCase();" required />
32
+                    </div>
33
+                    <div class="form-group">
34
+                        <label for="id_nick">Pseudo</label>
35
+                        <input id="id_nick" type="text" class="form-control" name="nick" required />
36
+                    </div>
37
+                    <p>J'aurais pu exiger 10 caractères dont un chiffre, une lettre et un tilde avec 3 majuscules et 2 minuscules pour te foutre le seum mais en fait tu peux mettre ce que tu veux.</p>
38
+                    <div class="form-group">
39
+                        <label for="id_password1">Mot de passe</label>
40
+                        <input id="id_password1" type="password" class="form-control" name="password1" required />
41
+                    </div>
42
+                    <div class="form-group">
43
+                        <label for="id_password2">Confirmer le mot de passe</label>
44
+                        <input id="id_password2" type="password" class="form-control" name="password2" required />
45
+                    </div>
46
+                    <p>Si ce formulaire t'as foutu le seum, n'oublie pas de remettre ton compteur à zéro en arrivant sur le site.</p>
47
+                    <div class="text-center">
48
+                        <button type="submit" class="btn btn-default btn-success">Créer le compteur</button>
49
+                    </div>
50
+                </form>
51
+            </div>
52
+        </div>
53
+    </div>
54
+    {% if error %}
55
+    <div class="row">
56
+        <div class="panel panel-danger">
57
+            <div class="panel-heading">
58
+                <h2 class="panel-title">Erreur</h2>
59
+            </div>
60
+            <div class=" panel-body">
61
+                <p>{{error}}</p>
62
+            </div>
63
+        </div>
64
+    </div>
65
+    {% endif %}
66
+</div>
67
+{% endblock %}

+ 22 - 0
counter/templates/createUserDone.html

@@ -0,0 +1,22 @@
1
+{% extends 'baseTemplate.html' %} {% block title %}Mot de passe changé !{% endblock %}{% block content %}
2
+<div class="container">
3
+    <div class="row">
4
+        <div class="text-center">
5
+            <h1><a class="counter-link" href="{% url 'home' %}">SeumBook™</a></h1>
6
+        </div>
7
+    </div>
8
+    <div class="row">
9
+        <div class="panel panel-primary">
10
+            <div class="panel-heading">
11
+                <h2 class="panel-title">Victoire !</h2>
12
+            </div>
13
+            <div class=" panel-body">
14
+                <p>Tu as créé ton compteur !</p>
15
+                <div class="text-center">
16
+                    <a href="{% url 'home' %}" type="submit" class="btn btn-default btn-success">Retour à l'accueil</a>
17
+                </div>
18
+            </div>
19
+        </div>
20
+    </div>
21
+</div>
22
+{% endblock %}

+ 2 - 2
counter/templates/homeTemplate.html

@@ -8,7 +8,7 @@
8 8
 			<div class="panel panel-primary">
9 9
 				<div class="panel-heading">
10 10
 					<a class="counter-link" href="{% url 'counter' id_counter=myCounter.id %}">
11
-						<h2 class="panel-title">{{ myCounter.trigramme }} <small>{{ myCounter.name }}</small>
11
+						<h2 class="panel-title"><b>{{ myCounter.trigramme }}</b> <small>{{ myCounter.name }}</small>
12 12
 							{% if not myCounter.lastReset.noSeum %}<span class="pull-right badge">{{ myCounter.seumCount }}</span>{% endif %}
13 13
 						</h2>
14 14
 					</a>
@@ -53,7 +53,7 @@
53 53
 			<div class="panel panel-{{counter.CSSclass}}" style="opacity:{{counter.opacity}}">
54 54
 				<div class="panel-heading">
55 55
 					<a class="counter-link" href="{% url 'counter' id_counter=counter.id %}">
56
-						<h2 class="panel-title">{{ counter.trigramme }} <small>{{ counter.name }}</small>
56
+						<h2 class="panel-title"><b>{{ counter.trigramme }}</b> <small>{{ counter.name }}</small>
57 57
 							{% if not counter.lastReset.noSeum %}<span class="pull-right badge">{{ counter.seumCount }}</span>{% endif %}
58 58
 						</h2>
59 59
 					</a>

+ 13 - 0
counter/templates/login.html

@@ -42,5 +42,18 @@
42 42
         </div>
43 43
     </div>
44 44
     {% endif %}
45
+    <div class="row">
46
+        <div class="panel panel-info">
47
+            <div class="panel-heading">
48
+                <h2 class="panel-title">Pas encore de compteur ?</h2>
49
+            </div>
50
+            <div class=" panel-body">
51
+                <p>Dépếche toi d'aller le créer pour partager ton seum !</p>
52
+                    <div class="text-center">
53
+                        <a href="{% url 'create_user' %}" class="btn btn-default btn-info">Créer un compteur</a>
54
+                    </div>
55
+            </div>
56
+        </div>
57
+    </div>
45 58
 </div>
46 59
 {% endblock %}

+ 2 - 1
counter/templates/passwordResetConfirm.html

@@ -51,5 +51,6 @@
51 51
             </div>
52 52
         </div>
53 53
     </div>
54
-    {% endif %} {% endblock %}
54
+    {% endif %}
55 55
 </div>
56
+{% endblock %}

+ 1 - 0
counter/urls.py

@@ -10,6 +10,7 @@ urlpatterns = [
10 10
     url(r'^reset-counter/$', views.resetCounter, name="reset-counter"),
11 11
     url(r'^counter/(?P<id_counter>\d+)/$', views.counter, name="counter"),
12 12
     url(r'^rss/$', SeumFeed()),
13
+    url(r'^create_user/$', views.createUser, name="create_user"),
13 14
     url(r'^login/$', auth_views.login,
14 15
         {'template_name': 'login.html'},
15 16
         name="login"),

+ 40 - 0
counter/views.py

@@ -1,5 +1,6 @@
1 1
 from django.shortcuts import render
2 2
 from counter.models import Counter, Reset
3
+from django.contrib.auth.models import User
3 4
 from babel.dates import format_timedelta, format_datetime
4 5
 from datetime import datetime, timedelta
5 6
 from django import forms
@@ -7,6 +8,7 @@ from django.http import HttpResponseRedirect
7 8
 from django.core.mail import EmailMessage
8 9
 from django.contrib.auth.decorators import login_required
9 10
 from django.core.urlresolvers import reverse
11
+from django.db import IntegrityError
10 12
 from graphos.renderers import gchart
11 13
 from django.template.loader import render_to_string
12 14
 from graphos.sources.simple import SimpleDataSource
@@ -359,3 +361,41 @@ def counter(request, id_counter):
359 361
         'seumFrequency': seumFrequency,
360 362
         'myCounter': myCounter,
361 363
     })
364
+
365
+
366
+def createUser(request):
367
+    if (request.method == 'POST'):
368
+        # create a form instance and populate it with data from the request:
369
+        data = dict(request.POST)
370
+        email = data['email'][0]
371
+        username = email.split('@')[0]
372
+        trigramme = data['trigramme'][0]
373
+        nick = data['nick'][0]
374
+        password1 = data['password1'][0]
375
+        password2 = data['password2'][0]
376
+        email_notifications = (data['email_notifications'][0] == "on")
377
+
378
+        if password1 != password2:
379
+            error = "Les deux mots de passe sont différents."
380
+            return render(request, 'createUser.html', {'error': error})
381
+        try:
382
+            test_user = User.objects.get(email=email)
383
+            error = "Un utilisateur avec cette adresse email existe déjà !"
384
+            return render(request, 'createUser.html', {'error': error})
385
+        except User.DoesNotExist:
386
+            try:
387
+                user = User.objects.create_user(username, email, password1)
388
+            except IntegrityError:
389
+                error = "Utilise une autre adresse email, un autre utilisateur \
390
+                 a le même login que toi."
391
+                return render(request, 'createUser.html', {'error': error})
392
+            counter = Counter()
393
+            counter.name = nick
394
+            counter.email = email
395
+            counter.trigramme = trigramme
396
+            counter.user = user
397
+            counter.email_notifications = False
398
+            counter.save()
399
+            return render(request, 'createUserDone.html', {})
400
+    else:
401
+        return render(request, 'createUser.html', {'error': None})