commit
						87f3e716bf
					
				@ -13,11 +13,22 @@ from django.template.loader import get_template
 | 
				
			|||||||
from common.mailing import send_email
 | 
					from common.mailing import send_email
 | 
				
			||||||
from help.models import Ticket
 | 
					from help.models import Ticket
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					logger = logging.getLogger()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SSH_TYPE_CHOICES = (
 | 
					SSH_TYPE_CHOICES = (
 | 
				
			||||||
    ('ssh-rsa', 'ssh-rsa',),
 | 
					    ('ssh-rsa', 'ssh-rsa',),
 | 
				
			||||||
    ('ssh-dss', 'ssh-dss',),
 | 
					    ('ssh-dss', 'ssh-dss',),
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DEFAULT_INDEX_PATH = '/etc/skel/public_html/index.html'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if os.path.exists(DEFAULT_INDEX_PATH):
 | 
				
			||||||
 | 
					    DEFAULT_INDEX_PAGE = open(DEFAULT_INDEX_PATH).read().rstrip()
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    logger.warning('No default html page found in skel. using empty string.')
 | 
				
			||||||
 | 
					    DEFAULT_INDEX_PAGE = ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
KEYFILE_HEADER = """########## GREETINGS! ##########
 | 
					KEYFILE_HEADER = """########## GREETINGS! ##########
 | 
				
			||||||
# Hi! This file is automatically managed by tilde.town. You
 | 
					# Hi! This file is automatically managed by tilde.town. You
 | 
				
			||||||
# probably shouldn't change it. If you want to add more public keys that's
 | 
					# probably shouldn't change it. If you want to add more public keys that's
 | 
				
			||||||
@ -35,6 +46,10 @@ class Townie(User):
 | 
				
			|||||||
    reasons = TextField(blank=True, null=False, default='')
 | 
					    reasons = TextField(blank=True, null=False, default='')
 | 
				
			||||||
    displayname = CharField(max_length=100, blank=False, null=False)
 | 
					    displayname = CharField(max_length=100, blank=False, null=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def home(self):
 | 
				
			||||||
 | 
					        return os.path.join('/home', self.username)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def send_welcome_email(self, admin_name='vilmibm'):
 | 
					    def send_welcome_email(self, admin_name='vilmibm'):
 | 
				
			||||||
        welcome_tmpl = get_template('users/welcome_email.txt')
 | 
					        welcome_tmpl = get_template('users/welcome_email.txt')
 | 
				
			||||||
        context = {
 | 
					        context = {
 | 
				
			||||||
@ -53,6 +68,15 @@ class Townie(User):
 | 
				
			|||||||
                                  self.email))
 | 
					                                  self.email))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # managing concrete system state
 | 
					    # managing concrete system state
 | 
				
			||||||
 | 
					    def has_modified_page(self):
 | 
				
			||||||
 | 
					        """Returns whether or not the user has modified index.html. If they
 | 
				
			||||||
 | 
					        don't have one, returns False."""
 | 
				
			||||||
 | 
					        index_path = os.path.join(self.home, 'public_html/index.html')
 | 
				
			||||||
 | 
					        if not os.path.exists(index_path):
 | 
				
			||||||
 | 
					            return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        index_page = open(index_path).read().rstrip()
 | 
				
			||||||
 | 
					        return index_page != DEFAULT_INDEX_PAGE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def create_on_disk(self):
 | 
					    def create_on_disk(self):
 | 
				
			||||||
        """A VERY NOT IDEMPOTENT create function. Originally, I had ambitions
 | 
					        """A VERY NOT IDEMPOTENT create function. Originally, I had ambitions
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,10 @@
 | 
				
			|||||||
from django.conf.urls import url
 | 
					from django.conf.urls import url
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .views import SignupView, ThanksView, KeyMachineView
 | 
					from .views import SignupView, ThanksView, KeyMachineView, RandomView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
app_name = 'users'
 | 
					app_name = 'users'
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
 | 
					    url(r'^random/?$', RandomView.as_view(), name='random'),
 | 
				
			||||||
    url(r'^signup/?$', SignupView.as_view(), name='signup'),
 | 
					    url(r'^signup/?$', SignupView.as_view(), name='signup'),
 | 
				
			||||||
    url(r'^thanks/?$', ThanksView.as_view(), name='thanks'),
 | 
					    url(r'^thanks/?$', ThanksView.as_view(), name='thanks'),
 | 
				
			||||||
    url(r'^keymachine/?$', KeyMachineView.as_view(), name='keymachine'),
 | 
					    url(r'^keymachine/?$', KeyMachineView.as_view(), name='keymachine'),
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,12 @@
 | 
				
			|||||||
import re
 | 
					import re
 | 
				
			||||||
 | 
					import random
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.core.exceptions import ValidationError
 | 
					from django.core.exceptions import ValidationError
 | 
				
			||||||
from django.db import transaction
 | 
					from django.db import transaction
 | 
				
			||||||
from django.forms import Form, CharField, EmailField, Textarea, ChoiceField, BooleanField
 | 
					from django.forms import Form, CharField, EmailField, Textarea, ChoiceField, BooleanField
 | 
				
			||||||
from django.http import HttpResponse
 | 
					from django.http import HttpResponse
 | 
				
			||||||
from django.shortcuts import redirect
 | 
					from django.shortcuts import redirect
 | 
				
			||||||
from django.views.generic import TemplateView
 | 
					from django.views.generic import TemplateView, View
 | 
				
			||||||
from django.views.generic.edit import FormView
 | 
					from django.views.generic.edit import FormView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .forms import TownieForm
 | 
					from .forms import TownieForm
 | 
				
			||||||
@ -37,3 +38,17 @@ class ThanksView(TemplateView):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class KeyMachineView(TemplateView):
 | 
					class KeyMachineView(TemplateView):
 | 
				
			||||||
    template_name = 'users/keymachine.html'
 | 
					    template_name = 'users/keymachine.html'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class RandomView(View):
 | 
				
			||||||
 | 
					    def get(self):
 | 
				
			||||||
 | 
					        url = None
 | 
				
			||||||
 | 
					        users = list(Townie.objects.all())
 | 
				
			||||||
 | 
					        random.shuffle(users)
 | 
				
			||||||
 | 
					        for user in users:
 | 
				
			||||||
 | 
					            if user.has_modified_page():
 | 
				
			||||||
 | 
					                url = 'https://tilde.town/~{}'.format(user.username)
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					        if url is None:
 | 
				
			||||||
 | 
					            url = 'https://tilde.town'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return redirect(url)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user