Beispiel #1
0
def app_wsgi(request, app_id=0):
    u = request.session.get('switched_user', request.user)
    superuser = request.user

    try:
        site = u.usersite_set.get(id=app_id)
    except UserSite.DoesNotExist:
        site = None

    domains = domains_list(u, used=used_domains(u, site))
    if request.method == 'POST':
        form = FormWsgi(request.POST, user=u, instance=site)
        form.fields["main_domain"].choices = [(x.id, x.domain_name) for x in domains]
        form.fields["misc_domains"].choices = [(x.id, x.domain_name) for x in domains]

        if form.is_valid():
            site = form.save(commit=False)
            site.owner = u
            site.type = 'uwsgi'
            site.save()

            for sd in SiteDomain.objects.filter(user_site=site):
                sd.delete()
            for domain in form.cleaned_data['misc_domains']:
                SiteDomain.objects.create(domain=domain, user_site=site)

            if site.type == "uwsgi":
                ur = UWSGIRequest(u, u.parms.web_machine)
                ur.mod_config()
                ur.restart(site)

            #Signal
            restart_master(config.mode, u)

            # calculate!
            u.parms.pay_for_sites(use_cache=False)

            messages.add_message(request, messages.SUCCESS, _('App has been %s') % (_('changed') if site else _('added')))
            messages.add_message(request, messages.INFO, _('Changes will be performed in few minutes'))
            return HttpResponseRedirect(reverse("app_list"))
    else:
        form = FormWsgi(user=u, instance=site)
        form.fields["main_domain"].choices = [(x.id, x.domain_name) for x in domains]
        form.fields["misc_domains"].choices = [(x.id, x.domain_name) for x in domains]

    form.helper.form_action = reverse("app_wsgi", args=[app_id])

    return render_to_response('old/add_site.html',
            {
            "form": form,
            "title": _("%s WSGI application") % _('Modify') if site else _('Add'),
            "u": u,
            "superuser": superuser,
            "menu_active": "webapps",
            },
        context_instance=RequestContext(request)
    )
Beispiel #2
0
def app_static(request, app_type="static", app_id=0):
    if app_type not in ("static", "php"):
        return HttpResponseForbidden(ugettext("Invalid type of application"))

    u = request.session.get('switched_user', request.user)
    superuser = request.user

    try:
        site = u.usersite_set.get(id=app_id)
    except UserSite.DoesNotExist:
        site = None

    domains = domains_list(u, used=used_domains(u, site))
    if request.method == 'POST':
        form = FormStatic(request.POST, user=u, instance=site)
        form.fields["main_domain"].choices = [(x.id, x.domain_name) for x in domains]
        form.fields["misc_domains"].choices = [(x.id, x.domain_name) for x in domains]

        if form.is_valid():
            isite = form.save(commit=False)
            isite.type = app_type
            isite.owner = u
            isite.save()

            for sd in SiteDomain.objects.filter(user_site=isite):
                sd.delete()
            for domain in form.cleaned_data['misc_domains']:
                SiteDomain.objects.create(domain=domain, user_site=isite)

            # Requests
            restart_master(config.mode, u)

            # calculate!
            u.parms.pay_for_sites(use_cache=False)

            messages.add_message(request, messages.SUCCESS, _('Site has been %s') % (_('changed') if site else _('added')))
            messages.add_message(request, messages.INFO, _('Changes will be performed in few minutes'))
            return HttpResponseRedirect(reverse("app_list"))
    else:
        form = FormStatic(user=u, instance=site)
        form.fields["main_domain"].choices = [(x.id, x.domain_name) for x in domains]
        form.fields["misc_domains"].choices = [(x.id, x.domain_name) for x in domains]

    form.helper.form_action = reverse("app_static", kwargs={'app_type': app_type, 'app_id': app_id})

    return render_to_response('old/add_site.html',
            {
            "form": form,
            "title": {'static': _("Static website"), 'php': _("PHP website")}[app_type],
            "u": u,
            "superuser": superuser,
            "menu_active": "webapps",
            },
        context_instance=RequestContext(request)
    )
Beispiel #3
0
    def handle(self, *args, **options):
        total_credit = 0.0
        apache_reload = False
        guarding = []
        print "Username".ljust(40),
        print "Credit".ljust(15),
        print "cr./day".ljust(10),
        print "Days left".ljust(10),
        print "Low level act.".ljust(15),
        print "Last notif.".ljust(15)

        for user in self.get_users():
            parms = user.parms
            print user.username.ljust(40),
            print ("%.2f cr." % parms.credit).ljust(15),
            print ("%.2f cr." % parms.pay_total_day()).ljust(10),
            print ("%.2f" % parms.days_left).ljust(10),
            print (parms.low_level_credits).ljust(15),
            print (parms.last_notification.strftime("%d.%m.%Y")).ljust(15) if parms.last_notification else "--".ljust(
                15
            ),
            if not parms.guard_enable:
                print "Guarding disabled",
            if parms.credit < 0:
                total_credit += parms.credit
            if not parms.last_notification or (
                parms.last_notification and (datetime.date.today() - parms.last_notification).days >= 3
            ):
                if parms.guard_enable and parms.credit < config.credit_threshold and parms.enable:
                    guarding.append(user)
                    print "Be disabled!!!",
                elif not parms.enable:
                    print "is disabled",
                elif parms.guard_enable:
                    guarding.append(user)
                    print "Be guarded",
            if not parms.enable and parms.credit >= 0:
                guarding.append(user)
                print "will be enabled",
            print
        print "Total: %.2f" % total_credit

        if raw_input("Do you agree? (yes/NO) ") == "yes":
            for user in guarding:
                with transaction.commit_on_success():
                    apache_reload = self.process(user)
            if apache_reload:
                restart_master(config.mode, user)
                print "Apache restarted"
Beispiel #4
0
def restart(request, sid):
    u = request.session.get('switched_user', request.user)

    sid = int(sid)
    s = get_object_or_404(u.usersite_set, id=sid)

    #Signal
    if s.type in ("uwsgi", "modwsgi"):
        ur = UWSGIRequest(u, u.parms.web_machine)
        ur.mod_config()
        ur.restart(s)
    else:
        restart_master(config.mode, u)

    messages.add_message(request, messages.SUCCESS, _('Request for restarting has been sent'))
    messages.add_message(request, messages.INFO, _('It will be performed in few minutes'))
    return HttpResponseRedirect(reverse("app_list"))
Beispiel #5
0
def restart(request, sid):
    u = request.session.get('switched_user', request.user)

    sid = int(sid)
    s = get_object_or_404(u.usersite_set, id=sid)

    #Signal
    if s.type in ("uwsgi", "modwsgi"):
        ur = UWSGIRequest(u, u.parms.web_machine)
        ur.mod_config()
        ur.restart(s)
    else:
        restart_master(config.mode, u)

    messages.add_message(request, messages.SUCCESS,
                         _('Request for restarting has been sent'))
    messages.add_message(request, messages.INFO,
                         _('It will be performed in few minutes'))
    return HttpResponseRedirect(reverse("app_list"))
Beispiel #6
0
 def refresh_old_apps(self, user):
     restart_master(config.mode, user)
Beispiel #7
0
class Command(BaseCommand):
    help = "Credit guardian"

    def get_users(self):
        """Get users close to 0 or under"""
        users = []
        for user in User.objects.all():
            if ( float(user.parms.pay_total_day()) == 0 and user.parms.credit < 0 ) or\
               ( user.parms.pay_total_day() > 0 and float(user.parms.credit) / float(user.parms.pay_total_day()) < 14 ) or\
               ( not user.parms.enable and user.parms.credit >= 0):
                users.append(user)
        return users

    def disable_apps(self, user):
        for app in user.app_set.all():
            app = typed_object(app)
            app.disable()
            app.commit()
            logging.info("%s (%d) disabled" % (app.name, app.id))
            print "%s (%d) disabled" % (app.name, app.id)

    def enable_apps(self, user):
        for app in user.app_set.all():
            app = typed_object(app)
            app.enable()
            app.commit()
            logging.info("%s (%d) enabled" % (app.name, app.id))
            print "%s (%d) enabled" % (app.name, app.id)

    def process(self, user):
        parms = user.parms
        apache_reload = False
        data = {}
        tmpl = ""

        if config.auto_disable:
            if parms.credit <= config.credit_threshold and parms.enable:
                parms.enable = False
                parms.save()
                apache_reload = True
                message = Message.objects.filter(purpose="webs_disabled")
                if message:
                    message[0].send(user.email, {})
                self.disable_apps(user)
                print "\t* %s disabled" % user.username
                return apache_reload
            elif parms.credit >= 0 and not parms.enable:
                parms.enable = True
                parms.save()
                apache_reload = True
                self.enable_apps(user)
                message = Message.objects.filter(purpose="webs_enabled")
                if message:
                    message[0].send(user.email, {"username": user.username})
                print "\t* %s enabled" % user.username
                return apache_reload

        correction = 0.0
        if parms.credit < 0:
            correction += abs(parms.credit)

        if parms.low_level_credits == "send_email":
            tmpl = "low_credit"
            data = {"credit": parms.credit, "days": parms.days_left}
        elif parms.low_level_credits == "buy_month":
            data = {"credit": parms.credit, "days": parms.days_left}
            credits = parms.pay_total_day() * 30 + correction
            add_credit(user, credits)
            tmpl = "autobuy_credit"
        elif parms.low_level_credits == "buy_three_months":
            data = {"credit": parms.credit, "days": parms.days_left}
            credits = parms.pay_total_day() * 90 + correction
            add_credit(user, credits)
            tmpl = "autobuy_credit"
        elif parms.low_level_credits == "buy_six_months":
            data = {"credit": parms.credit, "days": parms.days_left}
            credits = parms.pay_total_day() * 180 + correction
            add_credit(user, credits)
            tmpl = "autobuy_credit"
        elif parms.low_level_credits == "buy_year":
            data = {"credit": parms.credit, "days": parms.days_left}
            credits = parms.pay_total_day() * 360 + correction
            add_credit(user, credits)
            tmpl = "autobuy_credit"

        if tmpl and data:
            message = Message.objects.filter(purpose=tmpl)
            if message:
                message[0].send(user.email, data)
                #message[0].send(config.email, data)
                print "\t* E-mail sent"
            parms.last_notification = datetime.date.today()
            parms.save()

        return apache_reload

    def handle(self, *args, **options):
        total_credit = 0.0
        apache_reload = False
        guarding = []
        print "Username".ljust(40),
        print "Credit".ljust(15),
        print "cr./day".ljust(10),
        print "Days left".ljust(10),
        print "Low level act.".ljust(15),
        print "Last notif.".ljust(15)

        for user in self.get_users():
            parms = user.parms
            print user.username.ljust(40),
            print("%.2f cr." % parms.credit).ljust(15),
            print("%.2f cr." % parms.pay_total_day()).ljust(10),
            print("%.2f" % parms.days_left).ljust(10),
            print(parms.low_level_credits).ljust(15),
            print(parms.last_notification.strftime("%d.%m.%Y")
                  ).ljust(15) if parms.last_notification else "--".ljust(15),
            if not parms.guard_enable: print "Guarding disabled",
            else:
                if parms.credit < 0:
                    total_credit += parms.credit
                if not parms.last_notification or (
                        parms.last_notification and
                    (datetime.date.today() - parms.last_notification).days >= 3
                ):
                    if parms.guard_enable and parms.credit < config.credit_threshold and parms.enable:
                        guarding.append(user)
                        print "Be disabled!!!",
                    elif not parms.enable:
                        print "is disabled",
                    elif parms.guard_enable:
                        guarding.append(user)
                        print "Be guarded",
                if not parms.enable and parms.credit >= 0:
                    guarding.append(user)
                    print "will be enabled",
            print
        print "Total: %.2f" % total_credit

        if raw_input("Do you agree? (yes/NO) ") == "yes":
            for user in guarding:
                with transaction.commit_on_success():
                    apache_reload = self.process(user)
            if apache_reload:
                restart_master(config.mode, user)
                print "Apache restarted"
Beispiel #8
0
def app_static(request, app_type="static", app_id=0):
    if app_type not in ("static", "php"):
        return HttpResponseForbidden(ugettext("Invalid type of application"))

    u = request.session.get('switched_user', request.user)
    superuser = request.user

    try:
        site = u.usersite_set.get(id=app_id)
    except UserSite.DoesNotExist:
        site = None

    domains = domains_list(u, used=used_domains(u, site))
    if request.method == 'POST':
        form = FormStatic(request.POST, user=u, instance=site)
        form.fields["main_domain"].choices = [(x.id, x.domain_name)
                                              for x in domains]
        form.fields["misc_domains"].choices = [(x.id, x.domain_name)
                                               for x in domains]

        if form.is_valid():
            isite = form.save(commit=False)
            isite.type = app_type
            isite.owner = u
            isite.save()

            for sd in SiteDomain.objects.filter(user_site=isite):
                sd.delete()
            for domain in form.cleaned_data['misc_domains']:
                SiteDomain.objects.create(domain=domain, user_site=isite)

            # Requests
            restart_master(config.mode, u)

            # calculate!
            u.parms.pay_for_sites(use_cache=False)

            messages.add_message(
                request, messages.SUCCESS,
                _('Site has been %s') % (_('changed') if site else _('added')))
            messages.add_message(request, messages.INFO,
                                 _('Changes will be performed in few minutes'))
            return HttpResponseRedirect(reverse("app_list"))
    else:
        form = FormStatic(user=u, instance=site)
        form.fields["main_domain"].choices = [(x.id, x.domain_name)
                                              for x in domains]
        form.fields["misc_domains"].choices = [(x.id, x.domain_name)
                                               for x in domains]

    form.helper.form_action = reverse("app_static",
                                      kwargs={
                                          'app_type': app_type,
                                          'app_id': app_id
                                      })

    return render_to_response('old/add_site.html', {
        "form": form,
        "title": {
            'static': _("Static website"),
            'php': _("PHP website")
        }[app_type],
        "u": u,
        "superuser": superuser,
        "menu_active": "webapps",
    },
                              context_instance=RequestContext(request))
Beispiel #9
0
def app_wsgi(request, app_id=0):
    u = request.session.get('switched_user', request.user)
    superuser = request.user

    try:
        site = u.usersite_set.get(id=app_id)
    except UserSite.DoesNotExist:
        site = None

    domains = domains_list(u, used=used_domains(u, site))
    if request.method == 'POST':
        form = FormWsgi(request.POST, user=u, instance=site)
        form.fields["main_domain"].choices = [(x.id, x.domain_name)
                                              for x in domains]
        form.fields["misc_domains"].choices = [(x.id, x.domain_name)
                                               for x in domains]

        if form.is_valid():
            site = form.save(commit=False)
            site.owner = u
            site.type = 'uwsgi'
            site.save()

            for sd in SiteDomain.objects.filter(user_site=site):
                sd.delete()
            for domain in form.cleaned_data['misc_domains']:
                SiteDomain.objects.create(domain=domain, user_site=site)

            if site.type == "uwsgi":
                ur = UWSGIRequest(u, u.parms.web_machine)
                ur.mod_config()
                ur.restart(site)

            #Signal
            restart_master(config.mode, u)

            # calculate!
            u.parms.pay_for_sites(use_cache=False)

            messages.add_message(
                request, messages.SUCCESS,
                _('App has been %s') % (_('changed') if site else _('added')))
            messages.add_message(request, messages.INFO,
                                 _('Changes will be performed in few minutes'))
            return HttpResponseRedirect(reverse("app_list"))
    else:
        form = FormWsgi(user=u, instance=site)
        form.fields["main_domain"].choices = [(x.id, x.domain_name)
                                              for x in domains]
        form.fields["misc_domains"].choices = [(x.id, x.domain_name)
                                               for x in domains]

    form.helper.form_action = reverse("app_wsgi", args=[app_id])

    return render_to_response(
        'old/add_site.html', {
            "form": form,
            "title":
            _("%s WSGI application") % _('Modify') if site else _('Add'),
            "u": u,
            "superuser": superuser,
            "menu_active": "webapps",
        },
        context_instance=RequestContext(request))