Skip to content
This repository was archived by the owner on May 7, 2024. It is now read-only.

Commit 01a069f

Browse files
committed
Migration settings to django
1 parent 6d0f312 commit 01a069f

12 files changed

Lines changed: 195 additions & 224 deletions

File tree

app.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
(re.compile(r'/m'), django_app),
2424
(re.compile(r'/praise'), django_app),
2525
(re.compile(r'/trello'), django_app),
26-
(re.compile(r'/vilya'), django_app),
26+
(re.compile(r'/settings'), django_app),
2727
(re.compile(r'/\w+/\w+/watchers'), django_app),
2828
(re.compile(r'/\w+/\w+/forkers'), django_app),
2929
(re.compile(r'/\w+/\w+/archive'), django_app),
@@ -34,6 +34,7 @@
3434
(re.compile(r'/\w+/\w+/commits'), django_app),
3535
(re.compile(r'/\w+/\w+/blame'), django_app),
3636
(re.compile(r'/\w+/\w+/raw'), django_app),
37+
(re.compile(r'/vilya'), django_app),
3738
(re.compile(r'/.*'), web)]
3839

3940

vilya/urls.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"""
1616
from django.conf.urls import url, include
1717
from django.contrib import admin
18+
from django.views.generic.base import RedirectView
1819
from views.django import views
1920
from views.django import user
2021
from views.django import gist
@@ -26,6 +27,7 @@
2627
from views.django import project
2728
from views.django import project_setting
2829
from views.django import trello
30+
from views.django import setting
2931

3032

3133
urlpatterns = [
@@ -46,6 +48,24 @@
4648
url(r'^praise/vote/?$', user.praise_vote, name="user_praise_vote"),
4749
url(r'^trello/bind/?$', trello.bind, name="trello_bind"),
4850
url(r'^trello/unbind/?$', trello.unbind, name="trello_unbind"),
51+
url(r'^settings/?$', setting.index, name='setting_index'),
52+
url(r'^settings/emails$', RedirectView.as_view(pattern_name='setting_emails')),
53+
url(r'^settings/emails/$', setting.emails, name='setting_emails'),
54+
url(r'^settings/emails/(?P<id>[0-9]+)/delete/?$', setting.emails_delete, name='setting_emails_delete'),
55+
url(r'^settings/emails/(?P<id>[0-9]+)/set_notif/?$', setting.emails_set_notif, name='setting_emails_set_notif'),
56+
url(r'^settings/emails/(?P<id>[0-9]+)/un_notif/?$', setting.emails_un_notif, name='setting_emails_un_notif'),
57+
url(r'^settings/github$', RedirectView.as_view(pattern_name='setting_github')),
58+
url(r'^settings/github/$', setting.github, name='setting_github'),
59+
url(r'^settings/github/(?P<id>[0-9]+)/?$', setting.github_delete, name='setting_github_delete'),
60+
url(r'^settings/notification$', RedirectView.as_view(pattern_name='setting_notification')),
61+
url(r'^settings/notification/$', setting.notification, name='setting_notification'),
62+
url(r'^settings/notification/setting/?$', setting.notification_setting, name='setting_notification_setting'),
63+
url(r'^settings/ssh$', RedirectView.as_view(pattern_name='setting_ssh')),
64+
url(r'^settings/ssh/$', setting.ssh, name='setting_ssh'),
65+
url(r'^settings/ssh/(?P<id>[0-9]+)/?$', setting.ssh_delete, name='setting_ssh_delete'),
66+
url(r'^settings/codereview$', RedirectView.as_view(pattern_name='setting_codereview')),
67+
url(r'^settings/codereview/$', setting.codereview, name='setting_codereview'),
68+
url(r'^settings/codereview/setting/?$', setting.codereview_setting, name='setting_codereview_setting'),
4969

5070
# gist
5171
url(r'^gist/$', gist.index, name='gist_index'),

vilya/views/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
ISSUES_COUNT_PER_PAGE = 5
3737

38-
_q_exports = ['hub', 'api', 'preview', 'settings', 'oauth', 'j', 'teams']
38+
_q_exports = ['hub', 'api', 'preview', 'oauth', 'j', 'teams']
3939

4040

4141
class StaticUI(object):

vilya/views/django/project.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
from django.http import HttpResponseRedirect
1010
from django.http import HttpResponseBadRequest
1111
from django.http import StreamingHttpResponse
12-
from vilya.models.consts import TEMP_BRANCH_MARKER
1312
from django.utils.decorators import method_decorator
1413
from django.views.decorators.csrf import csrf_exempt
1514
from django.views.generic import View
1615
from vilya.libs.template import st
16+
from vilya.models.consts import TEMP_BRANCH_MARKER
1717

1818

1919
def _latest_update_branch(project, ref, user):

vilya/views/django/setting.py

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import json
4+
from django.http import HttpResponse
5+
from django.http import HttpResponseRedirect
6+
from django.views.decorators.csrf import csrf_exempt
7+
from vilya.libs.template import st
8+
9+
10+
@csrf_exempt
11+
def index(request):
12+
return HttpResponseRedirect("/settings/emails/")
13+
14+
15+
@csrf_exempt
16+
def emails(request):
17+
from vilya.models.user import CodeDoubanUserEmails
18+
errors = []
19+
user = request.user
20+
emails = user.emails
21+
if request.method == "POST":
22+
email = request.POST.get('email')
23+
errors = CodeDoubanUserEmails.validate(user.name, email)
24+
if not errors:
25+
CodeDoubanUserEmails.add(user.name, email)
26+
return HttpResponseRedirect('/settings/emails')
27+
return HttpResponse(st('/settings/emails.html', **locals()))
28+
29+
30+
@csrf_exempt
31+
def emails_delete(request, id):
32+
from vilya.models.user import CodeDoubanUserEmails
33+
user = request.user
34+
email = CodeDoubanUserEmails.check_own_by_user(user.name, id)
35+
if email:
36+
email.delete()
37+
return HttpResponseRedirect('/settings/emails')
38+
39+
40+
@csrf_exempt
41+
def emails_set_notif(request, id):
42+
from vilya.models.user import CodeDoubanUserEmails
43+
user = request.user
44+
email = CodeDoubanUserEmails.check_own_by_user(user.name, id)
45+
if email:
46+
addr = email.email
47+
user.settings.notif_other_emails \
48+
= user.settings.notif_other_emails + [addr]
49+
return HttpResponseRedirect('/settings/emails')
50+
51+
52+
@csrf_exempt
53+
def emails_un_notif(request, id):
54+
from vilya.models.user import CodeDoubanUserEmails
55+
user = request.user
56+
email = CodeDoubanUserEmails.check_own_by_user(user.name, id)
57+
if email:
58+
addr = email.email
59+
user.settings.notif_other_emails = [
60+
e for e in user.settings.notif_other_emails
61+
if e != addr]
62+
return HttpResponseRedirect('/settings/emails')
63+
64+
65+
@csrf_exempt
66+
def github(request):
67+
from vilya.models.user import CodeDoubanUserGithub
68+
errors = []
69+
user = request.user
70+
githubs = user.githubs
71+
if request.method == "POST":
72+
user_name = request.POST.get('github')
73+
errors = CodeDoubanUserGithub.validate(user.name, user_name)
74+
if not errors:
75+
CodeDoubanUserGithub.add(user.name, user_name)
76+
return HttpResponseRedirect('/settings/github')
77+
return HttpResponse(st('/settings/github.html', **locals()))
78+
79+
80+
@csrf_exempt
81+
def github_delete(request, id):
82+
from vilya.models.user import CodeDoubanUserGithub
83+
if request.POST.get('_method') == 'delete':
84+
user = request.user
85+
github = CodeDoubanUserGithub.check_own_by_user(user.name, id)
86+
if github:
87+
github.delete()
88+
return HttpResponseRedirect('/settings/github')
89+
90+
91+
def notification(request):
92+
user = request.user
93+
return HttpResponse(st('settings/notification.html', **locals()))
94+
95+
96+
@csrf_exempt
97+
def notification_setting(request):
98+
is_on = request.POST.get('is_on')
99+
notifications_meta = request.POST.get('notifications_meta')
100+
user = request.user
101+
result = "success"
102+
try:
103+
user.settings.__setattr__(notifications_meta, is_on)
104+
except Exception:
105+
result = "fail"
106+
return HttpResponse(json.dumps({"result": result}))
107+
108+
109+
@csrf_exempt
110+
def ssh(request):
111+
from vilya.models.sshkey import SSHKey
112+
errors = []
113+
key_lines = ''
114+
user = request.user
115+
sshkeys = user.sshkeys
116+
if request.method == "POST":
117+
key_lines = request.POST.get('ssh')
118+
newsshkeys = []
119+
errorkeys = []
120+
for index, line in enumerate(key_lines.splitlines()):
121+
valid = SSHKey.validate(user.name, line)
122+
if not valid:
123+
errorkeys.append((index, line))
124+
continue
125+
duplicated = SSHKey.is_duplicated(user.name, line)
126+
if duplicated:
127+
errorkeys.append((index, line))
128+
continue
129+
newsshkeys.append(line)
130+
131+
if not errorkeys:
132+
for key in newsshkeys:
133+
SSHKey.add(user.name, key)
134+
return HttpResponseRedirect('/settings/ssh')
135+
136+
error_prefix = 'Please check your SSH Key, Line: '
137+
for no, key in errorkeys:
138+
error = error_prefix + '%s ' % no
139+
errors.append(error)
140+
return HttpResponse(st('/settings/ssh.html', **locals()))
141+
142+
143+
@csrf_exempt
144+
def ssh_delete(request, id):
145+
from vilya.models.sshkey import SSHKey
146+
user = request.user
147+
if request.POST.get('_method') == 'delete':
148+
sshkey = SSHKey.check_own_by_user(user.name, id)
149+
if sshkey:
150+
sshkey.delete()
151+
return HttpResponseRedirect('/settings/ssh')
152+
153+
154+
def codereview(request):
155+
user = request.user
156+
return HttpResponse(st('settings/codereview.html', **locals()))
157+
158+
159+
@csrf_exempt
160+
def codereview_setting(request):
161+
is_enable = request.POST.get('is_enable')
162+
field = request.POST.get('field')
163+
user = request.user
164+
result = "success"
165+
origin = user.settings.__getattr__(field)
166+
try:
167+
user.settings.__setattr__(field, is_enable)
168+
except Exception:
169+
result = "fail"
170+
return HttpResponse(json.dumps({"result": result, "origin": origin}))

vilya/views/hub/__init__.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,10 @@
2020

2121
_q_exports = ['teams', 'create', 'future', 'notification', 'my_pull_requests',
2222
'remove', 'watch', 'unwatch', 'yours', 'my_issues',
23-
'public_timeline', 'search', 'emoji', 'bo', 'team',
23+
'public_timeline', 'search', 'emoji', 'team',
2424
'add_team', 'beacon', 'shop', 'stat', 'chat', 'center']
2525

2626

27-
def bo(request):
28-
return request.redirect('/shire_git_RO/commits/master/?author=bo')
29-
30-
3127
def teams(request):
3228
return TeamsUI()._q_index(request)
3329

vilya/views/settings/__init__.py

Lines changed: 0 additions & 19 deletions
This file was deleted.

vilya/views/settings/codereview.py

Lines changed: 0 additions & 27 deletions
This file was deleted.

vilya/views/settings/emails.py

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)