populate.py 11.8 KB
Newer Older
Skia's avatar
Skia committed
1
import os
Skia's avatar
Skia committed
2
from datetime import date
Skia's avatar
Skia committed
3
from io import StringIO
Skia's avatar
Skia committed
4

Skia's avatar
Skia committed
5
6
7
from django.core.management.base import BaseCommand, CommandError
from django.core.management import call_command
from django.conf import settings
Skia's avatar
Skia committed
8
from django.db import connection
Skia's avatar
Skia committed
9
10
11


from core.models import Group, User, Page, PageRev
12
from accounting.models import GeneralJournal, BankAccount, ClubAccount, Operation, AccountingType
Skia's avatar
Skia committed
13
from club.models import Club, Membership
Skia's avatar
Skia committed
14
from subscription.models import Subscription, Subscriber
Skia's avatar
Skia committed
15
from counter.models import Customer, ProductType, Product, Counter
Skia's avatar
Skia committed
16
17
18
19
20
21
22

class Command(BaseCommand):
    help = "Populate a new instance of the Sith AE"

    def add_arguments(self, parser):
        parser.add_argument('--prod', action="store_true")

23
24
25
26
27
28
    def reset_index(self, *args):
        sqlcmd = StringIO()
        call_command("sqlsequencereset", *args, stdout=sqlcmd)
        cursor = connection.cursor()
        cursor.execute(sqlcmd.getvalue())

Skia's avatar
Skia committed
29
    def handle(self, *args, **options):
Skia's avatar
Skia committed
30
        os.environ['DJANGO_COLORS'] = 'nocolor'
Skia's avatar
Skia committed
31
        root_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
Skia's avatar
Skia committed
32
33
        for g in settings.SITH_GROUPS.values():
            Group(id=g['id'], name=g['name']).save()
34
        self.reset_index("core", "auth")
Skia's avatar
Skia committed
35
        root = User(username='root', last_name="", first_name="Bibou",
Skia's avatar
Skia committed
36
37
38
                 email="ae.info@utbm.fr",
                 date_of_birth="1942-06-12",
                 is_superuser=True, is_staff=True)
Skia's avatar
Skia committed
39
40
        root.set_password("plop")
        root.save()
41
        main_club = Club(name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
Skia's avatar
Skia committed
42
                address=settings.SITH_MAIN_CLUB['address'])
43
44
45
46
        main_club.save()
        bar_club = Club(name=settings.SITH_BAR_MANAGER['name'], unix_name=settings.SITH_BAR_MANAGER['unix_name'],
                address=settings.SITH_BAR_MANAGER['address'])
        bar_club.save()
47
48
49
50
        launderette_club = Club(name=settings.SITH_LAUNDERETTE_MANAGER['name'],
                unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name'],
                address=settings.SITH_LAUNDERETTE_MANAGER['address'])
        launderette_club.save()
51
52
53
54
55
56
57
58
        for b in settings.SITH_COUNTER_BARS:
            g = Group(name=b[1]+" admin")
            g.save()
            c = Counter(id=b[0], name=b[1], club=bar_club, type='BAR')
            c.save()
            c.edit_groups = [g]
            c.save()
        self.reset_index("counter")
Skia's avatar
Skia committed
59
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Skia's avatar
Skia committed
60
61
62
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
63
        p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
64
65
66
67
68
        p.set_lock(root)
        p.save()
        PageRev(page=p, title="Wiki index", author=root, content="""
Welcome to the wiki page!
""").save()
Skia's avatar
Skia committed
69

70
71
72
73
        p = Page(name="launderette")
        p.set_lock(root)
        p.save()
        p.set_lock(root)
74
        PageRev(page=p, title="Laverie", author=root, content="Fonctionnement de la laverie").save()
75

Skia's avatar
Skia committed
76
77
78
        # Here we add a lot of test datas, that are not necessary for the Sith, but that provide a basic development environment
        if not options['prod']:
            # Adding user Skia
Skia's avatar
Skia committed
79
            skia = User(username='skia', last_name="Kia", first_name="S'",
Skia's avatar
Skia committed
80
81
                     email="skia@git.an",
                     date_of_birth="1942-06-12")
Skia's avatar
Skia committed
82
83
84
85
            skia.set_password("plop")
            skia.save()
            skia.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            skia.save()
Skia's avatar
Skia committed
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
            # Adding user public
            public = User(username='public', last_name="Not subscribed", first_name="Public",
                     email="public@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            public.set_password("plop")
            public.save()
            public.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            public.save()
            # Adding user Subscriber
            subscriber = User(username='subscriber', last_name="User", first_name="Subscribed",
                     email="Subscribed@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            subscriber.set_password("plop")
            subscriber.save()
            subscriber.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            subscriber.save()
104
105
106
107
108
109
110
111
112
113
            # Adding user Counter admin
            counter = User(username='counter', last_name="Ter", first_name="Coun",
                     email="counter@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            counter.set_password("plop")
            counter.save()
            counter.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            counter.groups=[Group.objects.filter(name=settings.SITH_GROUPS['counter-admin']['name']).first().id]
            counter.save()
Skia's avatar
Skia committed
114
115
116
117
118
119
120
121
122
123
            # Adding user Comptable
            comptable = User(username='comptable', last_name="Able", first_name="Compte",
                     email="compta@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            comptable.set_password("plop")
            comptable.save()
            comptable.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            comptable.groups=[Group.objects.filter(name=settings.SITH_GROUPS['accounting-admin']['name']).first().id]
            comptable.save()
Skia's avatar
Skia committed
124
125
126
127
128
129
130
            # Adding user Guy
            u = User(username='guy', last_name="Carlier", first_name="Guy",
                     email="guy@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            u.set_password("plop")
            u.save()
Skia's avatar
Skia committed
131
            u.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
132
            u.save()
Skia's avatar
Skia committed
133
134
135
136
137
138
            # Adding user Richard Batsbak
            r = User(username='rbatsbak', last_name="Batsbak", first_name="Richard",
                     email="richard@git.an",
                     date_of_birth="1982-06-12")
            r.set_password("plop")
            r.save()
Skia's avatar
Skia committed
139
            r.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
140
            r.save()
Skia's avatar
Skia committed
141
142
143
            # Adding syntax help page
            p = Page(name='Aide_sur_la_syntaxe')
            p.save()
Skia's avatar
Skia committed
144
            PageRev(page=p, title="Aide sur la syntaxe", author=skia, content="""
Skia's avatar
Skia committed
145
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
Skia's avatar
Skia committed
146
147
148
149
150
151
152
153
154
155
156
157
""").save()
            p = Page(name='Services')
            p.save()
            p.set_lock(skia)
            p.view_groups=[settings.SITH_GROUPS['public']['id']]
            p.save()
            PageRev(page=p, title="Services", author=skia, content="""
|   |   |   |
| :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat |
| SAS | Weekmail | Forum|

Skia's avatar
Skia committed
158
159
160
161
""").save()
            # Adding README
            p = Page(name='README')
            p.save()
Skia's avatar
Skia committed
162
            p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
163
            p.set_lock(skia)
Skia's avatar
Skia committed
164
165
            p.save()
            with open(os.path.join(root_path)+'/README.md', 'r') as rm:
166
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
167
168

            # Subscription
Skia's avatar
Skia committed
169
            ## Skia
Skia's avatar
Skia committed
170
171
172
173
174
175
176
            s = Subscription(member=Subscriber.objects.filter(pk=skia.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
177
            ## Comptable
Skia's avatar
Skia committed
178
179
180
181
182
183
184
            s = Subscription(member=Subscriber.objects.filter(pk=comptable.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
185
            ## Richard
Skia's avatar
Skia committed
186
187
188
189
190
191
192
            s = Subscription(member=Subscriber.objects.filter(pk=r.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
193
            ## Subscriber
Skia's avatar
Skia committed
194
195
196
197
198
199
200
            s = Subscription(member=Subscriber.objects.filter(pk=subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
201
202
203

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
204
                    address="46 de la Boustifaille", parent=main_club).save()
Skia's avatar
Skia committed
205
            guyut = Club(name="Guy'UT", unix_name="guyut",
206
                    address="42 de la Boustifaille", parent=main_club)
Skia's avatar
Skia committed
207
208
209
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
                    address="Woenzel", parent=guyut).save()
210
            Membership(user=skia, club=main_club, role=3, description="").save()
Skia's avatar
Skia committed
211
            troll = Club(name="Troll Penché", unix_name="troll",
212
                    address="Terre Du Milieu", parent=main_club)
Skia's avatar
Skia committed
213
            troll.save()
Skia's avatar
Skia committed
214

Skia's avatar
Skia committed
215
216
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
217
            Customer(user=r, account_id="4000", amount=0).save()
Skia's avatar
Skia committed
218
219
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
220
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
221
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
222
223
            barb.save()
            cble = Product(name="Chimay Bleue", code="CBLE", product_type=p, purchase_price="1.50", selling_price="1.7",
224
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
225
            cble.save()
Skia's avatar
Skia committed
226
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
227
                    special_selling_price="1.6", club=main_club).save()
Skia's avatar
Skia committed
228
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
229
230
                    special_selling_price="1.6", club=main_club).save()
            mde = Counter.objects.filter(name="MDE").first()
Skia's avatar
Skia committed
231
232
233
234
235
            mde.products.add(barb)
            mde.products.add(cble)
            mde.save()

            # Accounting test values:
236
237
238
            BankAccount(name="AE TG", club=main_club).save()
            BankAccount(name="Carte AE", club=main_club).save()
            ba = BankAccount(name="AE TI", club=main_club)
239
240
241
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
242
243
            AccountingType(code=756, label="Someone gave us money", movement_type='credit').save()
            AccountingType(code=8570, label="Had to pay for food", movement_type='debit').save()
Skia's avatar
Skia committed
244