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) )
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) )
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"
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"))
def refresh_old_apps(self, user): restart_master(config.mode, user)
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"
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))
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))