populate.py 11.3 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
47
48
49
50
51
52
53
54
        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()
        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
55
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Skia's avatar
Skia committed
56
57
58
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
59
        p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
60
61
62
63
64
        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
65
66
67
68

        # 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
69
            skia = User(username='skia', last_name="Kia", first_name="S'",
Skia's avatar
Skia committed
70
71
                     email="skia@git.an",
                     date_of_birth="1942-06-12")
Skia's avatar
Skia committed
72
73
74
75
            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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
            # 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()
94
95
96
97
98
99
100
101
102
103
            # 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
104
105
106
107
108
109
110
111
112
113
            # 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
114
115
116
117
118
119
120
            # 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
121
            u.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
122
            u.save()
Skia's avatar
Skia committed
123
124
125
126
127
128
            # 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
129
            r.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
130
            r.save()
Skia's avatar
Skia committed
131
132
133
            # Adding syntax help page
            p = Page(name='Aide_sur_la_syntaxe')
            p.save()
Skia's avatar
Skia committed
134
            PageRev(page=p, title="Aide sur la syntaxe", author=skia, content="""
Skia's avatar
Skia committed
135
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
Skia's avatar
Skia committed
136
137
138
139
140
141
142
143
144
145
146
147
""").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
148
149
150
151
""").save()
            # Adding README
            p = Page(name='README')
            p.save()
Skia's avatar
Skia committed
152
            p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
153
            p.set_lock(skia)
Skia's avatar
Skia committed
154
155
            p.save()
            with open(os.path.join(root_path)+'/README.md', 'r') as rm:
156
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
157
158

            # Subscription
Skia's avatar
Skia committed
159
            ## Skia
Skia's avatar
Skia committed
160
161
162
163
164
165
166
            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
167
            ## Comptable
Skia's avatar
Skia committed
168
169
170
171
172
173
174
            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
175
            ## Richard
Skia's avatar
Skia committed
176
177
178
179
180
181
182
            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
183
            ## Subscriber
Skia's avatar
Skia committed
184
185
186
187
188
189
190
            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
191
192
193

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
194
                    address="46 de la Boustifaille", parent=main_club).save()
Skia's avatar
Skia committed
195
            guyut = Club(name="Guy'UT", unix_name="guyut",
196
                    address="42 de la Boustifaille", parent=main_club)
Skia's avatar
Skia committed
197
198
199
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
                    address="Woenzel", parent=guyut).save()
200
            Membership(user=skia, club=main_club, role=3, description="").save()
Skia's avatar
Skia committed
201
            troll = Club(name="Troll Penché", unix_name="troll",
202
                    address="Terre Du Milieu", parent=main_club)
Skia's avatar
Skia committed
203
            troll.save()
Skia's avatar
Skia committed
204

Skia's avatar
Skia committed
205
206
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
207
            Customer(user=r, account_id="4000", amount=0).save()
Skia's avatar
Skia committed
208
209
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
210
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
211
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
212
213
            barb.save()
            cble = Product(name="Chimay Bleue", code="CBLE", product_type=p, purchase_price="1.50", selling_price="1.7",
214
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
215
            cble.save()
Skia's avatar
Skia committed
216
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
217
                    special_selling_price="1.6", club=main_club).save()
Skia's avatar
Skia committed
218
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
219
220
                    special_selling_price="1.6", club=main_club).save()
            mde = Counter.objects.filter(name="MDE").first()
Skia's avatar
Skia committed
221
222
223
224
225
            mde.products.add(barb)
            mde.products.add(cble)
            mde.save()

            # Accounting test values:
226
227
228
            BankAccount(name="AE TG", club=main_club).save()
            BankAccount(name="Carte AE", club=main_club).save()
            ba = BankAccount(name="AE TI", club=main_club)
229
230
231
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
232
233
            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
234