>
+            six.text_type(user.pk) + six.text_type(timestamp) +
8
+            six.text_type(user.email)
9
+        )
10
+
11
+account_activation_token = AccountActivationTokenGenerator()

+ 4 - 0
app/fruit/urls.py

24
     path('vendororder/create', views.vendororder_create, name='vendororder_create'),
24
     path('vendororder/create', views.vendororder_create, name='vendororder_create'),
25
     path('vendororder/<pk>', views.vendororder_edit, name='vendororder_edit'),
25
     path('vendororder/<pk>', views.vendororder_edit, name='vendororder_edit'),
26
     path('signup', views.signup, name='signup'),
26
     path('signup', views.signup, name='signup'),
27
+    path('account_activation_sent', views.account_activation_sent, name='account_activation_sent'),
28
+    path(r'activate/<uidb64>/<token>/',
29
+        views.activate, name='activate'),
30
+
27
 ]
31
 ]
28
 
32
 
29
 app_name = 'fruit'
33
 app_name = 'fruit'

+ 48 - 12
app/fruit/views.py

8
 
8
 
9
 from fruit.models import Store, Product, Photo, ProductSKU, Sale, Inbox, Vendor, VendorProduct
9
 from fruit.models import Store, Product, Photo, ProductSKU, Sale, Inbox, Vendor, VendorProduct
10
 
10
 
11
-from .forms import StoreForm, ProductForm, InboxForm, SaleForm,  PhotoFormSet,VendorFilter,  InlinePhotoFormset, ProductSKUForm, ProductFilter, SaleFilter, InboxFilter, VendorForm, VendorOrderForm, VendorOrderFilter, VendorOrder, InlineVendorProductFormset, VendorProductForm
11
+from .forms import StoreForm, ProductForm, InboxForm, SaleForm,  PhotoFormSet,VendorFilter,  InlinePhotoFormset, ProductSKUForm, ProductFilter, SaleFilter, InboxFilter, VendorForm, VendorOrderForm, VendorOrderFilter, VendorOrder, InlineVendorProductFormset, VendorProductForm, SignUpForm
12
 from django.contrib import messages
12
 from django.contrib import messages
13
 from django.core.paginator import Paginator
13
 from django.core.paginator import Paginator
14
 
14
 
15
+from django.utils.encoding import force_bytes, force_text
16
+from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
17
+from django.template.loader import render_to_string
18
+from .tokens import account_activation_token
19
+
20
+
21
+from django.contrib.auth.models import User
22
+
15
 
23
 
16
 def index(request):
24
 def index(request):
17
     return render(request, 'fruit/index.html')
25
     return render(request, 'fruit/index.html')
304
 
312
 
305
     form = VendorForm()
313
     form = VendorForm()
306
 
314
 
307
-    form.fields['products'].queryset = stores[0].product_set.all().order_by("-created_at")
315
+    #form.fields['products'].queryset = stores[0].product_set.all().order_by("-created_at")
308
 
316
 
309
     if request.method == "POST":
317
     if request.method == "POST":
310
         form = VendorForm(request.POST)
318
         form = VendorForm(request.POST)
417
 
425
 
418
     obj = VendorOrder.objects.get(pk=pk)
426
     obj = VendorOrder.objects.get(pk=pk)
419
     form = VendorOrderForm(instance = obj)
427
     form = VendorOrderForm(instance = obj)
420
-
428
+    form.fields['vendor'].queryset = stores[0].vendor_set.all().order_by("-created_at")
421
     #form.fields['product'].queryset = stores[0].product_set.all().order_by("-created_at")
429
     #form.fields['product'].queryset = stores[0].product_set.all().order_by("-created_at")
422
 
430
 
423
     if request.method == "POST":
431
     if request.method == "POST":
445
     stores = request.user.store_created.all().order_by("-created_at")
453
     stores = request.user.store_created.all().order_by("-created_at")
446
 
454
 
447
     form = VendorOrderForm()
455
     form = VendorOrderForm()
448
-
456
+    form.fields['vendor'].queryset = stores[0].vendor_set.all().order_by("-created_at")
457
+    #form = stores[0].vendor_set.all()
449
 
458
 
450
     if request.method == "POST":
459
     if request.method == "POST":
451
         form = VendorOrderForm(request.POST)
460
         form = VendorOrderForm(request.POST)
472
 
481
 
473
 def signup(request):
482
 def signup(request):
474
     if request.method == 'POST':
483
     if request.method == 'POST':
475
-        form = UserCreationForm(request.POST)
484
+        form = SignUpForm(request.POST)
476
         if form.is_valid():
485
         if form.is_valid():
477
-            form.save()
478
-            username = form.cleaned_data.get('username')
479
-            raw_password = form.cleaned_data.get('password1')
480
-            user = authenticate(username=username, password=raw_password)
481
-            login(request, user)
482
-            return redirect('front:index')
486
+            user = form.save(commit=False)
487
+            user.is_active = False
488
+            user.save()
489
+            current_site = "https://localhost:8000"
490
+            subject = 'Activate Your MySite Account'
491
+            message = render_to_string('fruit/account_activation_email.html', {
492
+                'user': user,
493
+                'domain': current_site,
494
+                'uid': urlsafe_base64_encode(force_bytes(user.pk)),
495
+                'token': account_activation_token.make_token(user),
496
+            })
497
+            user.email_user(subject, message)
498
+            return redirect('fruit:account_activation_sent')
499
+
483
     else:
500
     else:
484
-        form = UserCreationForm()
501
+        form = SignUpForm()
485
     return render(request, 'fruit/signup.html', {'form': form})
502
     return render(request, 'fruit/signup.html', {'form': form})
503
+
504
+def activate(request, uidb64, token):
505
+    try:
506
+        uid = force_text(urlsafe_base64_decode(uidb64))
507
+        user = User.objects.get(pk=uid)
508
+    except (TypeError, ValueError, OverflowError, User.DoesNotExist):
509
+        user = None
510
+
511
+    if user is not None and account_activation_token.check_token(user, token):
512
+        user.is_active = True
513
+        user.profile.email_confirmed = True
514
+        user.save()
515
+        login(request, user)
516
+        return redirect('front:index')
517
+    else:
518
+        return render(request, 'account_activation_invalid.html')
519
+
520
+def account_activation_sent(request):
521
+    return render(request, "fruit/account_activation_sent.html")

BIN
app/shaqfindbed/__pycache__/settings.cpython-39.pyc


+ 7 - 0
app/shaqfindbed/settings.py

74
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
74
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
75
 ]
75
 ]
76
 
76
 
77
+EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
78
+EMAIL_HOST = 'smtp.gmail.com'
79
+EMAIL_HOST_USER = 'tech@simplico.net'
80
+EMAIL_HOST_PASSWORD = 'SteveJobs1984'
81
+EMAIL_PORT = 587
82
+EMAIL_USE_TLS = True
83
+DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
77
 ROOT_URLCONF = 'shaqfindbed.urls'
84
 ROOT_URLCONF = 'shaqfindbed.urls'
78
 
85
 
79
 TEMPLATES = [
86
 TEMPLATES = [

tum/tmt_learning - Gogs: Simplico Git Service

暂无描述

package.json 3.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. {
  2. "name": "sucrase",
  3. "version": "3.32.0",
  4. "description": "Super-fast alternative to Babel for when you can target modern JS runtimes",
  5. "author": "Alan Pierce <alangpierce@gmail.com>",
  6. "license": "MIT",
  7. "main": "dist/index.js",
  8. "module": "dist/esm/index.js",
  9. "types": "dist/types/index.d.ts",
  10. "bin": {
  11. "sucrase": "./bin/sucrase",
  12. "sucrase-node": "./bin/sucrase-node"
  13. },
  14. "scripts": {
  15. "build": "sucrase-node script/build.ts",
  16. "fast-build": "sucrase-node script/build.ts --fast",
  17. "clean": "rm -rf ./build ./dist ./dist-self-build ./dist-types ./example-runner/example-repos ./spec-compliance-tests/test262/test262-checkout ./spec-compliance-tests/babel-tests/babel-tests-checkout",
  18. "generate": "sucrase-node generator/generate.ts",
  19. "benchmark": "cd benchmark && yarn && sucrase-node ./benchmark.ts",
  20. "benchmark-compare": "sucrase-node ./benchmark/compare-performance.ts",
  21. "microbenchmark": "sucrase-node benchmark/microbenchmark.ts",
  22. "lint": "sucrase-node script/lint.ts",
  23. "profile": "node --inspect-brk ./node_modules/.bin/sucrase-node ./benchmark/profile",
  24. "profile-project": "node --inspect-brk ./node_modules/.bin/sucrase-node ./benchmark/benchmark-project.ts --profile",
  25. "prepublishOnly": "yarn clean && yarn build",
  26. "release": "sucrase-node script/release.ts",
  27. "run-examples": "sucrase-node example-runner/example-runner.ts",
  28. "test": "yarn lint && yarn test-only",
  29. "test-only": "mocha './test/**/*.ts'",
  30. "integration-test": "cd integration-test && yarn && yarn link @sucrase/jest-plugin && mocha --timeout 10000 ./integration-tests.ts",
  31. "test262": "sucrase-node spec-compliance-tests/test262/run-test262.ts",
  32. "check-babel-tests": "sucrase-node spec-compliance-tests/babel-tests/check-babel-tests.ts",
  33. "test-with-coverage": "nyc mocha './test/**/*.ts'",
  34. "report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov"
  35. },
  36. "repository": {
  37. "type": "git",
  38. "url": "https://github.com/alangpierce/sucrase.git"
  39. },
  40. "keywords": [
  41. "babel",
  42. "jsx",
  43. "typescript",
  44. "flow"
  45. ],
  46. "bugs": {
  47. "url": "https://github.com/alangpierce/sucrase/issues"
  48. },
  49. "devDependencies": {
  50. "@babel/core": "^7.18.6",
  51. "@jridgewell/trace-mapping": "^0.3.18",
  52. "@types/glob": "^7",
  53. "@types/mocha": "^9.1.1",
  54. "@types/mz": "^2.7.4",
  55. "@types/node": "^17.0.41",
  56. "@typescript-eslint/eslint-plugin": "^5.27.1",
  57. "@typescript-eslint/parser": "^5.27.1",
  58. "chalk": "^4",
  59. "codecov": "^3.8.3",
  60. "eslint": "^8.17.0",
  61. "eslint-config-airbnb-base": "^15.0.0",
  62. "eslint-config-prettier": "^8.5.0",
  63. "eslint-plugin-import": "~2.26",
  64. "eslint-plugin-prettier": "^4.0.0",
  65. "mocha": "^10.0.0",
  66. "nyc": "^15.1.0",
  67. "prettier": "^2.6.2",
  68. "sucrase": "^3.31.0",
  69. "test262-harness": "^10.0.0",
  70. "ts-interface-builder": "^0.3.3",
  71. "typescript": "~4.7"
  72. },
  73. "dependencies": {
  74. "@jridgewell/gen-mapping": "^0.3.2",
  75. "commander": "^4.0.0",
  76. "glob": "7.1.6",
  77. "lines-and-columns": "^1.1.6",
  78. "mz": "^2.7.0",
  79. "pirates": "^4.0.1",
  80. "ts-interface-checker": "^0.1.9"
  81. },
  82. "engines": {
  83. "node": ">=8"
  84. },
  85. "resolutions": {
  86. "**/eshost/socket.io": "^4"
  87. }
  88. }