def deletePayment(request, uid=None): """ Delete payment (subscription) of User with id == uid which is made today. Subscription will be deleted ONLY IF (s.paymaster == request.user AND s.date == today). """ if uid == None: return Http404("no params") if not ((request.user.is_staff and settings.cfgSubsPeriod) or request.user.is_superuser): return HttpResponse("user is not staff member or subs. collection period is over!", status=403) user = fetchUser(uid) nw = datetime.now() ss = ( Subscription.objects.filter(user__id=int(uid)) .filter(paymaster=request.user) .filter(valid=True) .filter(date__year=nw.year) .filter(date__month=nw.month) .filter(date__day=nw.day) .order_by("-date") .all() ) request.session.modified = True if len(ss) == 0: return HttpResponse("there are no subscriptions to delete", status=404) else: sub = ss[0] deactOk = deactivateMember(user, sub.oldGroupId) if deactOk: sub.valid = False sub.save() logger.info( "Staff member (%s) invalidated (deleted) subscription with ID %d (date, user, userId) = (%s, %s, %d)" % (request.user.username, sub.id, sub.date, sub.user.username, sub.user.id) ) return HttpResponse('{status:"ok"}', mimetype="application/javascript; charset=utf8") else: logger.warn( "Staff member (%s) FAILED to invalidate (delete) subscription with ID %d (date, user, userId) = (%s, %s, %d)" % (request.user.username, sub.id, sub.date, sub.user.username, sub.user.id) ) return HttpResponse('{status:"failed"}', mimetype="application/javascript; charset=utf8", status=400)
def superuserDeletePayment(request, sid=None): """ Delete payment (subscription) with id = sid. This is superuser only method! """ if sid == None: return Http404("no params") if not request.user.is_superuser: return HttpResponse("user is not superuser!", status=403) iSid = int(sid) deactOk = False try: s = Subscription.objects.get(pk=iSid) if s.valid: snewst = s.user.subscriptions.filter(valid=True).order_by("-subsEnd")[0] if snewst.id == s.id: deactOk = deactivateMember(s.user, s.oldGroupId) else: deactOk = True # deactivation skipped - invalid subscription! except Subscription.DoesNotExist: return HttpResponse("subscription with ID %d does not exist!" % (sid,), status=404) request.session.modified = True if deactOk: logger.info( "Superuser (%s) deleted subscription with ID %d (date, user, userId) = (%s, %s, %d)." % (request.user.username, s.id, s.date, s.user.username, s.user.id) ) s.delete() return HttpResponse('{status:"ok"}', mimetype="application/javascript; charset=utf8") else: logger.warn( "Superuser (%s) FAILED to delete subscription with ID %d (date, user, userId) = (%s, %s, %d)." % (request.user.username, s.id, s.date, s.user.username, s.user.id) ) return HttpResponse('{status:"failed"}', mimetype="application/javascript; charset=utf8", status=400)