def create_visa_agency(): user = create_user() free_subscription = SubscriptionType.objects.get(idx='freeleads') subscription = Subscription(type=free_subscription, leads=free_subscription.leads, status=SUBSTATUS.ACTIVE) subscription.save() visa_agency = VisaAgencyModel(user=user, name=f.company(), description=f.text(), website_url=f.url(), facebook=f.url(), subscription=subscription) visa_agency.save() services = choices(Service.objects.all(), k=3) for service in services: visa_service = AgencyService( agency=visa_agency, service=service, ) visa_service.save() cities = choices(City.objects.all(), k=randint(1, 3)) for city in cities: agency_office = Office(city=city, agency=visa_agency, address=f.address(), contact=f.phone_number()) agency_office.save()
def post(self, request, *args, **kwargs): list_id = kwargs.get('list_id', None) email = request.POST.get('email', None) name = request.POST.get('name', None) action = request.POST.get('action', None) channel = request.POST.get('channel', 'general') valid = True message = '' if not (action and list_id): valid = False message = _(u'Incomplete form') try: validate_email(email) except forms.ValidationError as e: valid = False message = u'Invalid e-mail address' if valid: newsletter = Newsletter.objects.get(id=list_id) subscription = Subscription.objects.filter(newsletter=newsletter, email=email.strip()) if action == 'subscribe': if subscription.exists() and not subscription[0].opted_out: print 'got active subscription -> skip' message = u'You are already subscribed to this newsletter' elif subscription.exists(): print 'got canceled subscription -> update' subscription[0].opted_out = None subscription[0].save() subscription[0].subscribe() message = u'Subscription updated' else: print 'no subscription -> create' subscription = Subscription(newsletter=newsletter, email=email, name=name, language=get_language()[0:2], channel=channel) subscription.save() subscription.update_subscription() message = u'You\'ve successfully signed-up for the newsletter. Soon you will receive an email to confirm your subscription.' if action == 'unsubscribe': if subscription.exists(): subscription[0].opted_out = False subscription[0].save() subscription[0].unsubscribe() return self.render_json_response({ 'success': valid, 'message': message, })
def get(self, request, *args, **kwargs): shop = get_object_or_404(Shop, pk=self.request.GET.get('shop_pk')) user = self.request.user subscription = Subscription.objects.filter(user=user, shop=shop) if subscription.exists(): subscription.delete() else: Subscription(user=user, shop=shop).save() return super(SubscriptionView, self).get(request, *args, **kwargs)
def test_duration_six_weeks(self): s = Subscription( member=User.objects.filter(pk=self.user.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[3], payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0], ) s.subscription_start = date(2018, 9, 1) s.subscription_end = s.compute_end(duration=0.23, start=s.subscription_start) s.save() self.assertTrue(s.subscription_end == date(2018, 10, 13))
def test_duration_four_months(self): s = Subscription( member=User.objects.filter(pk=self.user.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[3], payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0], ) s.subscription_start = date(2017, 8, 29) s.subscription_end = s.compute_end(duration=0.67, start=s.subscription_start) s.save() self.assertTrue(s.subscription_end == date(2017, 12, 30))
def get(self, request, *args, **kwargs): target_user = get_object_or_404(User, pk=self.request.GET.get('target_user_pk')) user = self.request.user subscription = Subscription.objects.filter(user=user, target_user=target_user) if subscription.exists(): subscription.delete() else: Subscription(user=user, target_user=target_user).save() return super(SubscriptionFollowView, self).get(request, *args, **kwargs)
def createOrUpdateSubscription(partyId, partnerId, period): now = timezone.now() subscriptionSet = Subscription.objects \ .all() \ .filter(partyId=partyId) \ .filter(partnerId=partnerId) if len(subscriptionSet) == 0: subscription = None else: subscription = subscriptionSet[0] transactionType = None transactionStartDate = None transactionEndDate = None if subscription == None: # case1: new subscription partyObj = Party.objects.get(partyId=partyId) partnerObj = Partner.objects.get(partnerId=partnerId) subscription = Subscription() subscription.partnerId = partnerObj subscription.partyId = partyObj subscription.startDate = now subscription.endDate = now + datetime.timedelta(days=period) transactionType = 'create' transactionStartDate = subscription.startDate transactionEndDate = subscription.endDate else: endDate = subscription.endDate if (endDate < now): # case2: expired subscription subscription.endDate = now + datetime.timedelta(days=period) transactionType = 'renew' transactionStartDate = now transactionEndDate = subscription.endDate else: # case3: active subscription subscription.endDate = endDate + datetime.timedelta( days=period) transactionType = 'renew' transactionStartDate = endDate transactionEndDate = subscription.endDate return (subscription, transactionType, transactionStartDate, transactionEndDate)
def success(request): c = {} c.update(csrf(request)) status = request.POST["status"] firstname = request.POST["firstname"] amount = request.POST["amount"] txnid = request.POST["txnid"] posted_hash = request.POST["hash"] key = request.POST["key"] productinfo = request.POST["productinfo"] email = request.POST["email"] salt = "GQs7yium" try: additionalCharges = request.POST["additionalCharges"] retHashSeq = additionalCharges + '|' + salt + '|' + status + '|||||||||||' + email + '|' + firstname + '|' + productinfo + '|' + amount + '|' + txnid + '|' + key except Exception: retHashSeq = salt + '|' + status + '|||||||||||' + email + '|' + firstname + '|' + productinfo + '|' + amount + '|' + txnid + '|' + key hashh = hashlib.sha512(retHashSeq.encode('utf-8')).hexdigest().lower() if (hashh != posted_hash): print("Invalid Transaction. Please try again") else: print("Thank You. Your order status is ", status) print("Your Transaction ID for this transaction is ", txnid) print("We have received a payment of Rs. ", amount, ". Your order will soon be shipped.") cur_date = datetime.date.today() next_month_date = cur_date + timedelta(days=30) #create expire date manager = Manager.objects.filter(email=email).first() #create Subscription object subobj = Subscription(plan=productinfo, date=cur_date, price=float(amount), expireDate=next_month_date, transactionId=txnid) subobj.mangerref = manager subobj.save() #save Subscription return render(request, 'sucess.html', { "manager": manager, "txnid": txnid, "status": status, "amount": amount })
def test_dates_renewal_sliding_after_two_free_monthes(self): user = User.objects.filter(pk=self.user.pk).first() s = Subscription( member=user, subscription_type="deux-mois-essai", payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0], ) s.subscription_start = date(2015, 8, 29) s.subscription_end = s.compute_end( duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"], start=s.subscription_start, ) s.save() self.assertTrue(s.subscription_end == date(2015, 10, 29)) date_mock_today(2015, 11, 5) d = Subscription.compute_end( duration=settings.SITH_SUBSCRIPTIONS["deux-semestres"]["duration"], user=user, ) self.assertTrue(d == date(2016, 11, 5))
def test_dates_sliding_with_subscribed_user(self): user = User.objects.filter(pk=self.user.pk).first() s = Subscription( member=user, subscription_type="deux-semestres", payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0], ) s.subscription_start = date(2015, 8, 29) s.subscription_end = s.compute_end( duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"], start=s.subscription_start, ) s.save() self.assertTrue(s.subscription_end == date(2016, 8, 29)) date_mock_today(2016, 8, 25) d = Subscription.compute_end( duration=settings.SITH_SUBSCRIPTIONS["deux-semestres"]["duration"], user=user, ) self.assertTrue(d == date(2017, 8, 29))
def test_subscription_model(create_user): """ Test creating subscription model """ user = create_user subscription = Subscription( title="Spotify", price="9.99", start_date="2020-06-01", renewal_cycle_days=30, created_by=user, ) subscription.save() assert subscription.title == "Spotify" assert subscription.price == "9.99" assert subscription.start_date == "2020-06-01" assert subscription.renewal_cycle_days == 30 assert subscription.updated assert subscription.created_by.id == user.id assert str(subscription) == subscription.title
def validate_with_OTP_rave(request): otp = request.data['otp'] policy = request.data['policy_number'] amount = request.data['amount'] ref = request.data['ref'] plan = request.data['plan'] user = request.data['user'] if not otp or not ref or not policy or not amount or not plan or not user: return Response({"status": "failed", "msg": "Bad request some fields are missing from request body"}, status=status.HTTP_400_BAD_REQUEST) try: rave = FlutterWave() res = rave.validatePayment(ref=ref, otp=otp) if res['status'] != 'success': return Response({'msg': res['message'], 'status': res['status']}, status=status.HTTP_400_BAD_REQUEST) if res['status'] == 'success' and res['data']['data']['responsecode'] == "00": verify = rave.verifyPayment(res['data']['tx']['txRef'],amount) if verify == False: return Response({"status": "failed", "msg": "Provide amount doesn't match charged amount"}, status=status.HTTP_400_BAD_REQUEST) payment = Subscription(user=user, pay_ref=ref, plan=plan) payment.save() return Response({'msg': res['data']['data']['responsemessage'], 'code': res['data']['data']['responsecode'], 'status': res['status']}, status=status.HTTP_201_CREATED) except Exception as e: print(e) return Response({"status": "failed", "msg": "something happened server cannot handle this request at the moment try again later"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def subscribe(request): form = SubscriptionForm(request.POST) if not form.is_valid(): return index(request, form=form) editing = False if form.cleaned_data["subkey"] == "": subkey = Subscription.generate_subkey() subscription = Subscription(last_changed=datetime.datetime.now(), subkey=subkey) else: editing = True subkey = form.cleaned_data["subkey"] subscription = form._subscription sub_settings = {} subscription.set_settings(sub_settings) try: selected_shows = Show.get_by_id(map(int, form.cleaned_data["shows"])) except ValueError: return index(request, form=form) old_shows = [] if editing: old_shows = subscription.get_shows() subscription.reset_cache(selected_shows) subscription.put() # stay here, need key for setting shows! if editing: subscription.set_shows(selected_shows, old_shows=old_shows) else: subscription.set_shows(selected_shows) response = HttpResponseRedirect(subscription.get_absolute_url()) response.set_cookie("subkey", subkey, max_age=31536000) return response
def create_initial_member(sender, instance, **kwargs): a = Subscription(user=instance.author, community=instance) a.save()
def test_email_must_be_unique(self): s = Subscription(name='Henrique Bastos', cpf='38067528772', email='*****@*****.**', phone='21-9618-6180') self.assertRaises(IntegrityError, s.save)
def handle(self, *args, **options): os.environ["DJANGO_COLORS"] = "nocolor" Site(id=4000, domain=settings.SITH_URL, name=settings.SITH_NAME).save() root_path = os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) Group(name="Root").save() Group(name="Public").save() Group(name="Subscribers").save() Group(name="Old subscribers").save() Group(name="Accounting admin").save() Group(name="Communication admin").save() Group(name="Counter admin").save() Group(name="Banned from buying alcohol").save() Group(name="Banned from counters").save() Group(name="Banned to subscribe").save() Group(name="SAS admin").save() Group(name="Forum admin").save() Group(name="Pedagogy admin").save() self.reset_index("core", "auth") root = User( id=0, username="******", last_name="", first_name="Bibou", email="*****@*****.**", date_of_birth="1942-06-12", is_superuser=True, is_staff=True, ) root.set_password("plop") root.save() profiles_root = SithFile(parent=None, name="profiles", is_folder=True, owner=root) profiles_root.save() home_root = SithFile(parent=None, name="users", is_folder=True, owner=root) home_root.save() # Page needed for club creation p = Page(name=settings.SITH_CLUB_ROOT_PAGE) p.set_lock(root) p.save() club_root = SithFile(parent=None, name="clubs", is_folder=True, owner=root) club_root.save() SithFile(parent=None, name="SAS", is_folder=True, owner=root).save() main_club = Club( id=1, name=settings.SITH_MAIN_CLUB["name"], unix_name=settings.SITH_MAIN_CLUB["unix_name"], address=settings.SITH_MAIN_CLUB["address"], ) main_club.save() bar_club = Club( id=2, name=settings.SITH_BAR_MANAGER["name"], unix_name=settings.SITH_BAR_MANAGER["unix_name"], address=settings.SITH_BAR_MANAGER["address"], ) bar_club.save() launderette_club = Club( id=84, name=settings.SITH_LAUNDERETTE_MANAGER["name"], unix_name=settings.SITH_LAUNDERETTE_MANAGER["unix_name"], address=settings.SITH_LAUNDERETTE_MANAGER["address"], ) launderette_club.save() self.reset_index("club") 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() g.editable_counters.add(c) g.save() self.reset_index("counter") Counter(name="Eboutic", club=main_club, type="EBOUTIC").save() Counter(name="AE", club=main_club, type="OFFICE").save() home_root.view_groups.set([ Group.objects.filter( name=settings.SITH_MAIN_MEMBERS_GROUP).first() ]) club_root.view_groups.set([ Group.objects.filter( name=settings.SITH_MAIN_MEMBERS_GROUP).first() ]) home_root.save() club_root.save() Sith(weekmail_destinations="[email protected] [email protected]").save() Weekmail().save() p = Page(name="Index") p.set_lock(root) p.save() p.view_groups.set([settings.SITH_GROUP_PUBLIC_ID]) p.set_lock(root) p.save() PageRev( page=p, title="Wiki index", author=root, content=""" Welcome to the wiki page! """, ).save() p = Page(name="services") p.set_lock(root) p.save() p.view_groups.set([settings.SITH_GROUP_PUBLIC_ID]) p.set_lock(root) PageRev( page=p, title="Services", author=root, content=""" | | | | | :---: | :---: | :---: | :---: | | [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat | [Fichiers](/file) | | SAS | Weekmail | Forum | | """, ).save() p = Page(name="launderette") p.set_lock(root) p.save() p.set_lock(root) PageRev(page=p, title="Laverie", author=root, content="Fonctionnement de la laverie").save() # 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 = User( username="******", last_name="Kia", first_name="S'", email="*****@*****.**", date_of_birth="1942-06-12", ) skia.set_password("plop") skia.save() skia.view_groups = [ Group.objects.filter( name=settings.SITH_MAIN_MEMBERS_GROUP).first().id ] skia.save() skia_profile_path = os.path.join(root_path, "core/fixtures/images/3.jpg") with open(skia_profile_path, "rb") as f: name = str(skia.id) + "_profile.jpg" skia_profile = SithFile( parent=profiles_root, name=name, file=resize_image(Image.open(BytesIO(f.read())), 400, "JPEG"), owner=skia, is_folder=False, mime_type="image/jpeg", size=os.path.getsize(skia_profile_path), ) skia_profile.file.name = name skia_profile.save() skia.profile_pict = skia_profile skia.save() # Adding user public public = User( username="******", last_name="Not subscribed", first_name="Public", email="*****@*****.**", 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="******", last_name="User", first_name="Subscribed", email="*****@*****.**", 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() # Adding user old Subscriber old_subscriber = User( username="******", last_name="Subscriber", first_name="Old", email="*****@*****.**", date_of_birth="1942-06-12", is_superuser=False, is_staff=False, ) old_subscriber.set_password("plop") old_subscriber.save() old_subscriber.view_groups = [ Group.objects.filter( name=settings.SITH_MAIN_MEMBERS_GROUP).first().id ] old_subscriber.save() # Adding user Counter admin counter = User( username="******", last_name="Ter", first_name="Coun", email="*****@*****.**", 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.set([ Group.objects.filter( id=settings.SITH_GROUP_COUNTER_ADMIN_ID).first().id ]) counter.save() # Adding user Comptable comptable = User( username="******", last_name="Able", first_name="Compte", email="*****@*****.**", 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.set([ Group.objects.filter( id=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID).first().id ]) comptable.save() # Adding user Guy u = User( username="******", last_name="Carlier", first_name="Guy", email="*****@*****.**", date_of_birth="1942-06-12", is_superuser=False, is_staff=False, ) u.set_password("plop") u.save() u.view_groups = [ Group.objects.filter( name=settings.SITH_MAIN_MEMBERS_GROUP).first().id ] u.save() # Adding user Richard Batsbak r = User( username="******", last_name="Batsbak", first_name="Richard", email="*****@*****.**", date_of_birth="1982-06-12", ) r.set_password("plop") r.save() r.view_groups = [ Group.objects.filter( name=settings.SITH_MAIN_MEMBERS_GROUP).first().id ] r.save() # Adding syntax help page p = Page(name="Aide_sur_la_syntaxe") p.save(force_lock=True) with open(os.path.join(root_path) + "/doc/SYNTAX.md", "r") as rm: PageRev(page=p, title="Aide sur la syntaxe", author=skia, content=rm.read()).save() p.view_groups.set([settings.SITH_GROUP_PUBLIC_ID]) p.save(force_lock=True) p = Page(name="Services") p.save(force_lock=True) p.view_groups.set([settings.SITH_GROUP_PUBLIC_ID]) p.save(force_lock=True) PageRev( page=p, title="Services", author=skia, content=""" | | | | | :---: | :---: | :---: | | [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat | | SAS | Weekmail | Forum| """, ).save() # Subscription default_subscription = "un-semestre" # Root s = Subscription( member=User.objects.filter(pk=root.pk).first(), subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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 = Subscription( member=User.objects.filter(pk=skia.pk).first(), subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() # Counter admin s = Subscription( member=User.objects.filter(pk=counter.pk).first(), subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() # Comptable s = Subscription( member=User.objects.filter(pk=comptable.pk).first(), subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() # Richard s = Subscription( member=User.objects.filter(pk=r.pk).first(), subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() # User s = Subscription( member=User.objects.filter(pk=subscriber.pk).first(), subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() # Old subscriber s = Subscription( member=User.objects.filter(pk=old_subscriber.pk).first(), subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0], ) s.subscription_start = s.compute_start( datetime(year=2012, month=9, day=4)) s.subscription_end = s.compute_end( duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type] ["duration"], start=s.subscription_start, ) s.save() # Clubs Club( name="Bibo'UT", unix_name="bibout", address="46 de la Boustifaille", parent=main_club, ).save() guyut = Club( name="Guy'UT", unix_name="guyut", address="42 de la Boustifaille", parent=main_club, ) guyut.save() Club(name="Woenzel'UT", unix_name="woenzel", address="Woenzel", parent=guyut).save() Membership(user=skia, club=main_club, role=3, description="").save() troll = Club( name="Troll Penché", unix_name="troll", address="Terre Du Milieu", parent=main_club, ) troll.save() refound = Club( name="Carte AE", unix_name="carte_ae", address="Jamais imprimée", parent=main_club, ) refound.save() # Counters Customer(user=skia, account_id="6568j", amount=0).save() Customer(user=r, account_id="4000k", amount=0).save() p = ProductType(name="Bières bouteilles") p.save() c = ProductType(name="Cotisations") c.save() r = ProductType(name="Rechargements") r.save() verre = ProductType(name="Verre") verre.save() cotis = Product( name="Cotis 1 semestre", code="1SCOTIZ", product_type=c, purchase_price="15", selling_price="15", special_selling_price="15", club=main_club, ) cotis.save() cotis2 = Product( name="Cotis 2 semestres", code="2SCOTIZ", product_type=c, purchase_price="28", selling_price="28", special_selling_price="28", club=main_club, ) cotis2.save() refill = Product( name="Rechargement 15 €", code="15REFILL", product_type=r, purchase_price="15", selling_price="15", special_selling_price="15", club=main_club, ) refill.save() barb = Product( name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7", special_selling_price="1.6", club=main_club, ) barb.save() cble = Product( name="Chimay Bleue", code="CBLE", product_type=p, purchase_price="1.50", selling_price="1.7", special_selling_price="1.6", club=main_club, ) cble.save() cons = Product( name="Consigne Eco-cup", code="CONS", product_type=verre, purchase_price="1", selling_price="1", special_selling_price="1", club=main_club, ) cons.id = 1152 cons.save() dcons = Product( name="Déconsigne Eco-cup", code="DECO", product_type=verre, purchase_price="-1", selling_price="-1", special_selling_price="-1", club=main_club, ) dcons.id = 1151 dcons.save() Product( name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7", special_selling_price="1.6", club=main_club, ).save() Product( name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7", special_selling_price="1.6", club=main_club, ).save() mde = Counter.objects.filter(name="MDE").first() mde.products.add(barb) mde.products.add(cble) mde.products.add(cons) mde.products.add(dcons) mde.sellers.add(skia) mde.save() eboutic = Counter.objects.filter(name="Eboutic").first() eboutic.products.add(barb) eboutic.products.add(cotis) eboutic.products.add(cotis2) eboutic.products.add(refill) eboutic.save() refound_counter = Counter(name="Carte AE", club=refound, type="OFFICE") refound_counter.save() refound_product = Product( name="remboursement", code="REMBOURS", purchase_price="0", selling_price="0", special_selling_price="0", club=refound, ) refound_product.save() # Accounting test values: BankAccount(name="AE TG", club=main_club).save() BankAccount(name="Carte AE", club=main_club).save() ba = BankAccount(name="AE TI", club=main_club) ba.save() ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll) ca.save() gj = GeneralJournal(name="A16", start_date=date.today(), club_account=ca) gj.save() credit = AccountingType(code="74", label="Subventions d'exploitation", movement_type="CREDIT") credit.save() debit = AccountingType( code="606", label="Achats non stockés de matières et fournitures(*1)", movement_type="DEBIT", ) debit.save() debit2 = AccountingType( code="604", label="Achats d'études et prestations de services(*2)", movement_type="DEBIT", ) debit2.save() buying = AccountingType(code="60", label="Achats (sauf 603)", movement_type="DEBIT") buying.save() comptes = AccountingType(code="6", label="Comptes de charge", movement_type="DEBIT") comptes.save() simple = SimplifiedAccountingType(label="Je fais du simple 6", accounting_type=comptes) simple.save() woenzco = Company(name="Woenzel & co") woenzco.save() operation_list = [ ( 27, "J'avais trop de bière", "CASH", None, buying, "USER", skia.id, "", None, ), ( 4000, "Ceci n'est pas une opération... en fait si mais non", "CHECK", None, debit, "COMPANY", woenzco.id, "", 23, ), ( 22, "C'est de l'argent ?", "CARD", None, credit, "CLUB", troll.id, "", None, ), ( 37, "Je paye CASH", "CASH", None, debit2, "OTHER", None, "tous les étudiants <3", None, ), (300, "Paiement Guy", "CASH", None, buying, "USER", skia.id, "", None), (32.3, "Essence", "CASH", None, buying, "OTHER", None, "station", None), ( 46.42, "Allumette", "CHECK", None, credit, "CLUB", main_club.id, "", 57, ), ( 666.42, "Subvention de far far away", "CASH", None, comptes, "CLUB", main_club.id, "", None, ), ( 496, "Ça, c'est un 6", "CARD", simple, None, "USER", skia.id, "", None, ), ( 17, "La Gargotte du Korrigan", "CASH", None, debit2, "CLUB", bar_club.id, "", None, ), ] for op in operation_list: operation = Operation( journal=gj, date=date.today(), amount=op[0], remark=op[1], mode=op[2], done=True, simpleaccounting_type=op[3], accounting_type=op[4], target_type=op[5], target_id=op[6], target_label=op[7], cheque_number=op[8], ) operation.clean() operation.save() # Adding user sli sli = User( username="******", last_name="Li", first_name="S", email="*****@*****.**", date_of_birth="1942-06-12", ) sli.set_password("plop") sli.save() sli.view_groups = [ Group.objects.filter( name=settings.SITH_MAIN_MEMBERS_GROUP).first().id ] sli.save() sli_profile_path = os.path.join(root_path, "core/fixtures/images/5.jpg") with open(sli_profile_path, "rb") as f: name = str(sli.id) + "_profile.jpg" sli_profile = SithFile( parent=profiles_root, name=name, file=resize_image(Image.open(BytesIO(f.read())), 400, "JPEG"), owner=sli, is_folder=False, mime_type="image/jpeg", size=os.path.getsize(sli_profile_path), ) sli_profile.file.name = name sli_profile.save() sli.profile_pict = sli_profile sli.save() # Adding user Krophil krophil = User( username="******", last_name="Phil'", first_name="Kro", email="*****@*****.**", date_of_birth="1942-06-12", ) krophil.set_password("plop") krophil.save() krophil_profile_path = os.path.join(root_path, "core/fixtures/images/6.jpg") with open(krophil_profile_path, "rb") as f: name = str(krophil.id) + "_profile.jpg" krophil_profile = SithFile( parent=profiles_root, name=name, file=resize_image(Image.open(BytesIO(f.read())), 400, "JPEG"), owner=krophil, is_folder=False, mime_type="image/jpeg", size=os.path.getsize(krophil_profile_path), ) krophil_profile.file.name = name krophil_profile.save() krophil.profile_pict = krophil_profile krophil.save() # Adding user Com Unity comunity = User( username="******", last_name="Unity", first_name="Com", email="*****@*****.**", date_of_birth="1942-06-12", ) comunity.set_password("plop") comunity.save() comunity.groups.set( [Group.objects.filter(name="Communication admin").first().id]) comunity.save() Membership( user=comunity, club=bar_club, start_date=timezone.now(), role=settings.SITH_CLUB_ROLES_ID["Board member"], ).save() # Adding user tutu tutu = User( username="******", last_name="Tu", first_name="Tu", email="*****@*****.**", date_of_birth="1942-06-12", ) tutu.set_password("plop") tutu.save() tutu.groups.set([settings.SITH_GROUP_PEDAGOGY_ADMIN_ID]) tutu.save() # Adding subscription for sli s = Subscription( member=User.objects.filter(pk=sli.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0], payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() StudentCard(uid="9A89B82018B0A0", customer=sli.customer).save() # Adding subscription for Krophil s = Subscription( member=User.objects.filter(pk=krophil.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0], payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() # Com Unity s = Subscription( member=comunity, subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() # Tutu s = Subscription( member=tutu, subscription_type=default_subscription, payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][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() Selling( label=dcons.name, product=dcons, counter=mde, unit_price=dcons.selling_price, club=main_club, quantity=settings.SITH_ECOCUP_LIMIT + 3, seller=skia, customer=krophil.customer, ).save() # Add barman to counter c = Counter.objects.get(id=2) c.sellers.add(User.objects.get(pk=krophil.pk)) c.save() # Create an election public_group = Group.objects.get(id=settings.SITH_GROUP_PUBLIC_ID) subscriber_group = Group.objects.get( name=settings.SITH_MAIN_MEMBERS_GROUP) ae_board_group = Group.objects.get( name=settings.SITH_MAIN_BOARD_GROUP) el = Election( title="Élection 2017", description="La roue tourne", start_candidature="1942-06-12 10:28:45+01", end_candidature="2042-06-12 10:28:45+01", start_date="1942-06-12 10:28:45+01", end_date="7942-06-12 10:28:45+01", ) el.save() el.view_groups.add(public_group) el.edit_groups.add(ae_board_group) el.candidature_groups.add(subscriber_group) el.vote_groups.add(subscriber_group) el.save() liste = ElectionList(title="Candidature Libre", election=el) liste.save() listeT = ElectionList(title="Troll", election=el) listeT.save() pres = Role(election=el, title="Président AE", description="Roi de l'AE") pres.save() resp = Role(election=el, title="Co Respo Info", max_choice=2, description="Ghetto++") resp.save() cand = Candidature(role=resp, user=skia, election_list=liste, program="Refesons le site AE") cand.save() cand = Candidature( role=resp, user=sli, election_list=liste, program="Vasy je deviens mon propre adjoint", ) cand.save() cand = Candidature(role=resp, user=krophil, election_list=listeT, program="Le Pôle Troll !") cand.save() cand = Candidature( role=pres, user=sli, election_list=listeT, program="En fait j'aime pas l'info, je voulais faire GMC", ) cand.save() # Forum room = Forum( name="Salon de discussions", description="Pour causer de tout", is_category=True, ) room.save() Forum(name="AE", description="Réservé au bureau AE", parent=room).save() Forum(name="BdF", description="Réservé au bureau BdF", parent=room).save() hall = Forum( name="Hall de discussions", description="Pour toutes les discussions", parent=room, ) hall.save() various = Forum(name="Divers", description="Pour causer de rien", is_category=True) various.save() Forum(name="Promos", description="Réservé aux Promos", parent=various).save() ForumTopic(forum=hall) # News friday = timezone.now() while friday.weekday() != 4: friday += timedelta(hours=6) friday.replace(hour=20, minute=0, second=0) # Event n = News( title="Apero barman", summary="Viens boire un coup avec les barmans", content="Glou glou glou glou glou glou glou", type="EVENT", club=bar_club, author=subscriber, is_moderated=True, moderator=skia, ) n.save() NewsDate( news=n, start_date=timezone.now() + timedelta(hours=70), end_date=timezone.now() + timedelta(hours=72), ).save() n = News( title="Repas barman", summary="Enjoy la fin du semestre!", content="Viens donc t'enjailler avec les autres barmans aux " "frais du BdF! \o/", type="EVENT", club=bar_club, author=subscriber, is_moderated=True, moderator=skia, ) n.save() NewsDate( news=n, start_date=timezone.now() + timedelta(hours=72), end_date=timezone.now() + timedelta(hours=84), ).save() n = News( title="Repas fromager", summary="Wien manger du l'bon fromeug'", content="Fô viendre mangey d'la bonne fondue!", type="EVENT", club=bar_club, author=subscriber, is_moderated=True, moderator=skia, ) n.save() NewsDate( news=n, start_date=timezone.now() + timedelta(hours=96), end_date=timezone.now() + timedelta(hours=100), ).save() n = News( title="SdF", summary="Enjoy la fin des finaux!", content="Viens faire la fête avec tout plein de gens!", type="EVENT", club=bar_club, author=subscriber, is_moderated=True, moderator=skia, ) n.save() NewsDate( news=n, start_date=friday + timedelta(hours=24 * 7 + 1), end_date=timezone.now() + timedelta(hours=24 * 7 + 9), ).save() # Weekly n = News( title="Jeux sans faim", summary="Viens jouer!", content="Rejoins la fine équipe du Troll Penché et viens " "d'amuser le Vendredi soir!", type="WEEKLY", club=troll, author=subscriber, is_moderated=True, moderator=skia, ) n.save() for i in range(10): NewsDate( news=n, start_date=friday + timedelta(hours=24 * 7 * i), end_date=friday + timedelta(hours=24 * 7 * i + 8), ).save() # Create som data for pedagogy UV( code="PA00", author=User.objects.get(id=0), credit_type=settings.SITH_PEDAGOGY_UV_TYPE[3][0], manager="Laurent HEYBERGER", semester=settings.SITH_PEDAGOGY_UV_SEMESTER[3][0], language=settings.SITH_PEDAGOGY_UV_LANGUAGE[0][0], department=settings.SITH_PROFILE_DEPARTMENTS[-2][0], credits=5, title="Participation dans une association étudiante", objectives= "* Permettre aux étudiants de réaliser, pendant un semestre, un projet culturel ou associatif et de le valoriser.", program= """* Semestre précédent proposition d'un projet et d'un cahier des charges * Evaluation par un jury de six membres * Si accord réalisation dans le cadre de l'UV * Compte-rendu de l'expérience * Présentation""", skills= """* Gérer un projet associatif ou une action éducative en autonomie: * en produisant un cahier des charges qui -définit clairement le contexte du projet personnel -pose les jalons de ce projet -estime de manière réaliste les moyens et objectifs du projet -définit exactement les livrables attendus * en étant capable de respecter ce cahier des charges ou, le cas échéant, de réviser le cahier des charges de manière argumentée. * Relater son expérience dans un rapport: * qui permettra à d'autres étudiants de poursuivre les actions engagées * qui montre la capacité à s'auto-évaluer et à adopter une distance critique sur son action.""", key_concepts="""* Autonomie * Responsabilité * Cahier des charges * Gestion de projet""", hours_THE=121, hours_TE=4, ).save()
def save(self, allow_negative=False, *args, **kwargs): """ allow_negative : Allow this selling to use more money than available for this user """ if not self.date: self.date = timezone.now() self.full_clean() if not self.is_validated: self.customer.amount -= self.quantity * self.unit_price self.customer.save(allow_negative=allow_negative, is_selling=True) self.is_validated = True u = User.objects.filter(id=self.customer.user.id).first() if u.was_subscribed: if (self.product and self.product.id == settings.SITH_PRODUCT_SUBSCRIPTION_ONE_SEMESTER): sub = Subscription( member=u, subscription_type="un-semestre", payment_method="EBOUTIC", location="EBOUTIC", ) sub.subscription_start = Subscription.compute_start() sub.subscription_start = Subscription.compute_start( duration=settings.SITH_SUBSCRIPTIONS[ sub.subscription_type]["duration"]) sub.subscription_end = Subscription.compute_end( duration=settings.SITH_SUBSCRIPTIONS[sub.subscription_type] ["duration"], start=sub.subscription_start, ) sub.save() elif (self.product and self.product.id == settings.SITH_PRODUCT_SUBSCRIPTION_TWO_SEMESTERS): u = User.objects.filter(id=self.customer.user.id).first() sub = Subscription( member=u, subscription_type="deux-semestres", payment_method="EBOUTIC", location="EBOUTIC", ) sub.subscription_start = Subscription.compute_start() sub.subscription_start = Subscription.compute_start( duration=settings.SITH_SUBSCRIPTIONS[ sub.subscription_type]["duration"]) sub.subscription_end = Subscription.compute_end( duration=settings.SITH_SUBSCRIPTIONS[sub.subscription_type] ["duration"], start=sub.subscription_start, ) sub.save() if self.customer.user.preferences.notify_on_click: Notification( user=self.customer.user, url=reverse( "core:user_account_detail", kwargs={ "user_id": self.customer.user.id, "year": self.date.year, "month": self.date.month, }, ), param="%d x %s" % (self.quantity, self.label), type="SELLING", ).save() super(Selling, self).save(*args, **kwargs) try: # The product has no id until it's saved if self.product.eticket: self.send_mail_customer() except: pass