my-cloud-devops-consulting 0.1.14__tar.gz → 0.1.16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {my_cloud_devops_consulting-0.1.14/my_cloud_devops_consulting.egg-info → my_cloud_devops_consulting-0.1.16}/PKG-INFO +1 -1
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16/my_cloud_devops_consulting.egg-info}/PKG-INFO +1 -1
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/my_cloud_devops_consulting.egg-info/SOURCES.txt +0 -1
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/setup.py +1 -1
- my_cloud_devops_consulting-0.1.14/templates/test.html +0 -277
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/MANIFEST.in +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/README.md +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/app.py +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/my_cloud_devops_consulting.egg-info/dependency_links.txt +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/my_cloud_devops_consulting.egg-info/requires.txt +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/my_cloud_devops_consulting.egg-info/top_level.txt +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/setup.cfg +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/contact-form.css +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/index.css +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/login.css +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/main.css +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/register.css +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/services.css +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/images/image.jpg +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/js/index.js +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/js/login.js +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/js/main.js +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/js/register.js +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/js/services.js +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/contact-form.html +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/index.html +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/login.html +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/register.html +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/services.html +0 -0
- {my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/tests/test_unit_test.py +0 -0
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
2
2
|
|
3
3
|
setup(
|
4
4
|
name='my-cloud-devops-consulting',
|
5
|
-
version='0.1.
|
5
|
+
version='0.1.16',
|
6
6
|
author='Betrand Mutagha',
|
7
7
|
author_email='mmutagha@gmail.com',
|
8
8
|
description='This is my consulting website for Cloud & DevOps services.',
|
@@ -1,277 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html lang="en">
|
3
|
-
<head>
|
4
|
-
<meta charset="UTF-8" />
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
6
|
-
<title>Consulting Homepage</title>
|
7
|
-
<link
|
8
|
-
rel="stylesheet"
|
9
|
-
href="{{ url_for('static', filename='css/main.css') }}"
|
10
|
-
/>
|
11
|
-
<link
|
12
|
-
rel="stylesheet"
|
13
|
-
href="{{ url_for('static', filename='css/index.css') }}"
|
14
|
-
/>
|
15
|
-
</head>
|
16
|
-
<body>
|
17
|
-
<header>
|
18
|
-
<div class="header-container">
|
19
|
-
<div class="logo">CDC</div>
|
20
|
-
<h1>Cloud & DevOps Consulting</h1>
|
21
|
-
<nav aria-label="Main Navigation">
|
22
|
-
<ul>
|
23
|
-
<li><a href="{{ url_for('home') }}">Home</a></li>
|
24
|
-
<li><a href="{{ url_for('services') }}">Services</a></li>
|
25
|
-
<li><a href="{{ url_for('contact') }}">Contact</a></li>
|
26
|
-
<li><a href="{{ url_for('contact_form') }}">Contact Form</a></li>
|
27
|
-
<li><a href="{{ url_for('register') }}">Register</a></li>
|
28
|
-
<li><a href="{{ url_for('login') }}">Login</a></li>
|
29
|
-
</ul>
|
30
|
-
</nav>
|
31
|
-
</div>
|
32
|
-
</header>
|
33
|
-
|
34
|
-
<main>
|
35
|
-
<!-- Hero Section -->
|
36
|
-
<section class="hero">
|
37
|
-
<h2>Empowering Your Cloud & DevOps Journey</h2>
|
38
|
-
<p>
|
39
|
-
We specialize in delivering Cloud and DevOps consulting services
|
40
|
-
tailored to meet your unique business needs.
|
41
|
-
</p>
|
42
|
-
<button onclick="window.location.href='{{ url_for('services') }}'">
|
43
|
-
Explore Services
|
44
|
-
</button>
|
45
|
-
</section>
|
46
|
-
|
47
|
-
<!-- Video Section (only if logged in) -->
|
48
|
-
{% if video_url %}
|
49
|
-
<section class="video-section">
|
50
|
-
<h2>Watch Our Video</h2>
|
51
|
-
<video controls>
|
52
|
-
<source src="{{ video_url }}" type="video/mp4" />
|
53
|
-
Your browser does not support the video tag.
|
54
|
-
</video>
|
55
|
-
</section>
|
56
|
-
{% endif %}
|
57
|
-
|
58
|
-
<!-- Services Highlights -->
|
59
|
-
<section class="services-highlight">
|
60
|
-
<h3>Our Key Services</h3>
|
61
|
-
<div class="service-cards">
|
62
|
-
<div class="card">
|
63
|
-
<h4>Cloud Consulting</h4>
|
64
|
-
<p>
|
65
|
-
Cloud migration, strategy, and optimization tailored for your
|
66
|
-
business.
|
67
|
-
</p>
|
68
|
-
<a href="{{ url_for('services') }}" class="btn-link">Learn More</a>
|
69
|
-
</div>
|
70
|
-
<div class="card">
|
71
|
-
<h4>DevOps Solutions</h4>
|
72
|
-
<p>
|
73
|
-
CI/CD pipelines, automated infrastructure, and efficient delivery.
|
74
|
-
</p>
|
75
|
-
<a href="{{ url_for('services') }}" class="btn-link">Learn More</a>
|
76
|
-
</div>
|
77
|
-
<div class="card">
|
78
|
-
<h4>Security & Compliance</h4>
|
79
|
-
<p>
|
80
|
-
Ensure security and compliance across your cloud and on-premise
|
81
|
-
environments.
|
82
|
-
</p>
|
83
|
-
<a href="{{ url_for('services') }}" class="btn-link">Learn More</a>
|
84
|
-
</div>
|
85
|
-
</div>
|
86
|
-
</section>
|
87
|
-
|
88
|
-
<!-- Quick Links Section -->
|
89
|
-
<section class="quick-links">
|
90
|
-
<h3>Quick Links</h3>
|
91
|
-
<ul>
|
92
|
-
<li><a href="{{ url_for('services') }}">View Our Services</a></li>
|
93
|
-
<li><a href="{{ url_for('contact') }}">Get in Touch</a></li>
|
94
|
-
<li><a href="{{ url_for('contact_form') }}">Contact Form</a></li>
|
95
|
-
</ul>
|
96
|
-
</section>
|
97
|
-
</main>
|
98
|
-
|
99
|
-
<footer>
|
100
|
-
<div class="contact-info">
|
101
|
-
<p>
|
102
|
-
Phone: 240 298 1823 | Email:
|
103
|
-
<a href="mailto:mmutagha@gmail.com">mmutagha@gmail.com</a>
|
104
|
-
</p>
|
105
|
-
</div>
|
106
|
-
<p>© 2024 Cloud & DevOps Consulting. All rights reserved.</p>
|
107
|
-
</footer>
|
108
|
-
|
109
|
-
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
|
110
|
-
</html>
|
111
|
-
<button class="scroll-to-top" onclick="scrollToTop()">↑ Top</button>
|
112
|
-
|
113
|
-
</body>
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
# register
|
119
|
-
|
120
|
-
<!DOCTYPE html>
|
121
|
-
<html lang="en">
|
122
|
-
<head>
|
123
|
-
<meta charset="UTF-8" />
|
124
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
125
|
-
<title>Register</title>
|
126
|
-
<link
|
127
|
-
rel="stylesheet"
|
128
|
-
href="{{ url_for('static', filename='css/register.css') }}"
|
129
|
-
/>
|
130
|
-
</head>
|
131
|
-
<body>
|
132
|
-
<header>
|
133
|
-
<div class="header-container">
|
134
|
-
<div class="logo">CDC</div>
|
135
|
-
<h1>Register for Cloud & DevOps Consulting</h1>
|
136
|
-
<nav>
|
137
|
-
<ul>
|
138
|
-
<li><a href="{{ url_for('home') }}">Home</a></li>
|
139
|
-
<li><a href="{{ url_for('services') }}">Services</a></li>
|
140
|
-
<li><a href="{{ url_for('contact') }}">Contact</a></li>
|
141
|
-
<li><a href="{{ url_for('contact_form') }}">Contact Form</a></li>
|
142
|
-
</ul>
|
143
|
-
</nav>
|
144
|
-
</div>
|
145
|
-
</header>
|
146
|
-
|
147
|
-
<main>
|
148
|
-
<section class="register-form">
|
149
|
-
<h2>Register</h2>
|
150
|
-
<!-- Flash messages for feedback -->
|
151
|
-
{% with messages = get_flashed_messages() %} {% if messages %}
|
152
|
-
<ul>
|
153
|
-
{% for message in messages %}
|
154
|
-
<li>{{ message }}</li>
|
155
|
-
{% endfor %}
|
156
|
-
</ul>
|
157
|
-
{% endif %} {% endwith %}
|
158
|
-
|
159
|
-
<form method="POST" action="{{ url_for('register') }}">
|
160
|
-
<label for="username">Username:</label><br />
|
161
|
-
<input
|
162
|
-
type="text"
|
163
|
-
id="username"
|
164
|
-
name="username"
|
165
|
-
required
|
166
|
-
/><br /><br />
|
167
|
-
<label for="password">Password:</label><br />
|
168
|
-
<input
|
169
|
-
type="password"
|
170
|
-
id="password"
|
171
|
-
name="password"
|
172
|
-
required
|
173
|
-
/><br /><br />
|
174
|
-
<button type="submit">Register</button>
|
175
|
-
</form>
|
176
|
-
<p>
|
177
|
-
Already have an account?
|
178
|
-
<a href="{{ url_for('login') }}">Login here</a>
|
179
|
-
</p>
|
180
|
-
</section>
|
181
|
-
</main>
|
182
|
-
|
183
|
-
<footer>
|
184
|
-
<div class="contact-info">
|
185
|
-
<p>
|
186
|
-
Phone: 240 298 1823 | Email:
|
187
|
-
<a href="mailto:mmutagha@gmail.com">mmutagha@gmail.com</a>
|
188
|
-
</p>
|
189
|
-
</div>
|
190
|
-
<p>© 2024 Cloud & DevOps Consulting. All rights reserved.</p>
|
191
|
-
</footer>
|
192
|
-
|
193
|
-
<script src="{{ url_for('static', filename='js/register.js') }}"></script>
|
194
|
-
<script src="{{ url_for('static', filename='js/register.js') }}"></script>
|
195
|
-
</body>
|
196
|
-
</html>
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
# app
|
201
|
-
from flask import Flask, render_template, request, redirect, url_for, session
|
202
|
-
from pymongo import MongoClient
|
203
|
-
from werkzeug.security import generate_password_hash, check_password_hash
|
204
|
-
import boto3
|
205
|
-
|
206
|
-
app = Flask(__name__)
|
207
|
-
app.secret_key = 'your_secret_key' # Change this to a secure value
|
208
|
-
|
209
|
-
# AWS S3 Configuration (Remove credentials from code for security)
|
210
|
-
s3_client = boto3.client(
|
211
|
-
's3',
|
212
|
-
aws_access_key_id='your_aws_access_key',
|
213
|
-
aws_secret_access_key='your_aws_secret_key',
|
214
|
-
region_name='us-east-1'
|
215
|
-
)
|
216
|
-
bucket_name = 'my-websites-videos'
|
217
|
-
|
218
|
-
# MongoDB Configuration (Remove sensitive credentials)
|
219
|
-
client = MongoClient("your_mongodb_connection_string")
|
220
|
-
db = client['my-database']
|
221
|
-
users_collection = db['inventory_collection']
|
222
|
-
|
223
|
-
@app.route('/')
|
224
|
-
def home():
|
225
|
-
video_url = None
|
226
|
-
if 'username' in session:
|
227
|
-
video_url = f"https://{bucket_name}.s3.amazonaws.com/videos/death%20row.mp4"
|
228
|
-
return render_template('index.html', video_url=video_url)
|
229
|
-
|
230
|
-
@app.route('/login', methods=['GET', 'POST'])
|
231
|
-
def login():
|
232
|
-
if request.method == 'POST':
|
233
|
-
username = request.form['username']
|
234
|
-
password = request.form['password']
|
235
|
-
user = users_collection.find_one({'username': username})
|
236
|
-
if user and check_password_hash(user['password'], password):
|
237
|
-
session['username'] = username
|
238
|
-
return redirect(url_for('home'))
|
239
|
-
else:
|
240
|
-
return "Invalid username or password"
|
241
|
-
return render_template('login.html')
|
242
|
-
|
243
|
-
@app.route('/register', methods=['GET', 'POST'])
|
244
|
-
def register():
|
245
|
-
if request.method == 'POST':
|
246
|
-
username = request.form['username']
|
247
|
-
password = request.form['password']
|
248
|
-
hashed_password = generate_password_hash(password)
|
249
|
-
user_data = {'username': username, 'password': hashed_password}
|
250
|
-
users_collection.insert_one(user_data)
|
251
|
-
return redirect(url_for('login'))
|
252
|
-
return render_template('register.html')
|
253
|
-
|
254
|
-
@app.route('/services')
|
255
|
-
def services():
|
256
|
-
return render_template('services.html')
|
257
|
-
|
258
|
-
@app.route('/contact')
|
259
|
-
def contact():
|
260
|
-
return render_template('contact.html')
|
261
|
-
|
262
|
-
@app.route('/contact-form', methods=['GET', 'POST'])
|
263
|
-
def contact_form():
|
264
|
-
if request.method == 'POST':
|
265
|
-
name = request.form['name']
|
266
|
-
email = request.form['email']
|
267
|
-
phone = request.form['phone']
|
268
|
-
message = request.form['message']
|
269
|
-
contact_data = {'name': name, 'email': email, 'phone': phone, 'message': message}
|
270
|
-
db.contacts.insert_one(contact_data)
|
271
|
-
return redirect(url_for('home'))
|
272
|
-
return render_template('contact-form.html')
|
273
|
-
|
274
|
-
if __name__ == '__main__':
|
275
|
-
app.run(debug=True,port=8080)
|
276
|
-
|
277
|
-
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/contact-form.css
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/index.css
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/login.css
RENAMED
File without changes
|
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/register.css
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/css/services.css
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/images/image.jpg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/js/register.js
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/static/js/services.js
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/contact-form.html
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/index.html
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/login.html
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/register.html
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/templates/services.html
RENAMED
File without changes
|
{my_cloud_devops_consulting-0.1.14 → my_cloud_devops_consulting-0.1.16}/tests/test_unit_test.py
RENAMED
File without changes
|