Skip to content

Commit c8ec1a2

Browse files
committed
[Update] Clean code, minor fixes
1 parent cf6b8c6 commit c8ec1a2

7 files changed

Lines changed: 107 additions & 43 deletions

File tree

__init__.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

example/backup.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
# -*- coding: utf-8 -*-
22

3-
'''
4-
IF YOU INSTALLED PYBACKUP WITH PIP
5-
YOU'LL BE ABLE TO IMPORT IT FROM <PyBackup>
6-
THIS EXAMPLE SHOWS HOW TO WORK IT IN THAT WAY
7-
'''
8-
9-
import PyBackup
3+
from pybackup.backup import Backup
104

115
bkp = Backup(verbose=True)
126
bkp.Run()

pybackup/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
__version__ = '0.0.2'

backup.py renamed to pybackup/backup.py

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,18 @@
2323
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2424
'''
2525

26-
from os import path, makedirs, scandir
26+
from os import path, makedirs
2727
from sys import argv
2828
from shutil import copy, copytree, ignore_patterns
2929
from errno import ENOTDIR
30-
import utils
30+
from . import utils
3131

3232

3333
class Backup():
3434
'''
3535
Main class of the backup system
3636
'''
37+
3738
def __init__(self, verbose=False):
3839

3940
# Initial attributes
@@ -43,15 +44,15 @@ def __init__(self, verbose=False):
4344
self.backup_list = []
4445

4546
except BaseException as e:
46-
self.log.UpdateLog(e)
47+
self.log.update_log(e)
4748
raise BaseException(e)
4849

4950
# Check if settings.py is properly configured and import it
5051
try:
5152
from settings import backup_items, sub_folder_name, target_folder, ignore_extensions, now, mailing_list, send_mail, mail_body, mail_subject, mail_settings
5253

5354
except ImportError as e:
54-
self.log.UpdateLog(e)
55+
self.log.update_log('Settings file or attributes not found')
5556
raise ImportError(e)
5657

5758
else:
@@ -70,10 +71,10 @@ def __init__(self, verbose=False):
7071

7172
# Check mailing list
7273
if len(self.mail.excludedMails) > 0:
73-
self.log.UpdateLog('Invalid mail addresses detected: %s' % self.mail.excludedMails, 'INFO')
74+
self.log.update_log('Invalid mail addresses detected: %s' % self.mail.excludedMails, 'INFO')
7475

7576

76-
def CleanList(self):
77+
def clean_list(self):
7778
'''
7879
Manage the list of items
7980
to backup
@@ -82,18 +83,18 @@ def CleanList(self):
8283
# Case <backupItems> is empty
8384
if self.backupItems == []:
8485
self.backup_list.append(path.abspath(path.dirname(argv[0])))
85-
86+
8687
return None
8788

8889
# Add items
8990
for item in self.backupItems:
9091
if path.isfile(path.abspath(item)) or path.isdir(path.abspath(item)):
9192
self.backup_list.append(path.abspath(item))
9293
else:
93-
log.UpdateLog("Invalid item. It'll be wiped from backup list: <%s>" % item, 'INFO')
94+
log.update_log("Invalid item. It'll be wiped from backup list: <%s>" % item, 'INFO')
9495

9596

96-
def ProcessItem(self, source, destination):
97+
def process_item(self, source, destination):
9798
'''
9899
Backup a single item
99100
'''
@@ -106,16 +107,16 @@ def ProcessItem(self, source, destination):
106107
copy(source, destination)
107108

108109
except:
109-
log.UpdateLog("Error processing file <%s>: <%s>" % (source, e))
110+
log.update_log("Error processing file <%s>: <%s>" % (source, e))
110111

111112
else:
112-
self.log.UpdateLog("Source <%s> could not be copied to <%s>: <%s>" % (source, destination, e))
113+
self.log.update_log("Source <%s> could not be copied to <%s>: <%s>" % (source, destination, e))
113114

114115
except BaseException as e:
115-
self.log.UpdateLog("Unkown error copying <%s>: <%s>" % (source, e))
116+
self.log.update_log("Unkown error copying <%s>: <%s>" % (source, e))
116117

117118

118-
def ProcessList(self):
119+
def process_list(self):
119120
'''
120121
Process every item from a <backup_list>
121122
'''
@@ -125,33 +126,25 @@ def ProcessList(self):
125126
if path.isdir(item):
126127
folder = path.abspath(item).split('\\')[-1]
127128
dest = path.join(default_dest, folder)
128-
self.log.UpdateLog('Processing directory: %s' % item, 'INFO')
129-
self.ProcessItem(path.abspath(item), dest)
129+
self.log.update_log('Processing directory: %s' % item, 'INFO')
130+
self.process_item(path.abspath(item), dest)
130131

131132
else:
132-
self.log.UpdateLog('Processing file: %s' % item, 'INFO')
133-
self.ProcessItem(path.abspath(item), default_dest)
133+
self.log.update_log('Processing file: %s' % item, 'INFO')
134+
self.process_item(path.abspath(item), default_dest)
134135

135136

136-
def Run(self):
137+
def run(self):
137138
'''
138139
Run backup routine
139140
'''
140-
self.CleanList()
141-
self.ProcessList()
141+
self.clean_list()
142+
self.process_list()
142143

143144
# Send email if configured to do so
144145
if self.sendMail:
145146

146147
subject = self.mailSubject.format(self.now)
147148
body = self.mailBody.format(self.now, self.backupItems, self.targetFolder)
148149

149-
self.mail.Send(subject, body)
150-
151-
152-
153-
# Debug purpose
154-
if __name__ == "__main__":
155-
156-
Bkp = Backup(verbose=True)
157-
Bkp.Run()
150+
self.mail.send(subject, body)

pybackup/settings.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from time import localtime, strftime
4+
5+
sub_folder_name = strftime("%Y_%m_%d_%H%M%S", localtime())
6+
7+
now = strftime("%Y-%m-%d %H:%M:%S", localtime())
8+
9+
backup_items = []
10+
11+
mailing_list = []
12+
13+
ignore_extensions = ['*.py','*.pyc', '*.log']
14+
15+
target_folder = ''
16+
17+
send_mail = True
18+
19+
mail_settings = {
20+
'server' : 'smtp.live.com',
21+
'port' : 25,
22+
'mail_address' : '@live.com',
23+
'username' : '@live.com',
24+
'password' : '',
25+
'tls' : True,
26+
}
27+
28+
mail_subject = 'Backup System. {0}'
29+
30+
mail_body = '''
31+
Backup System
32+
33+
Backup Performed at: {0}
34+
Backup Items: {1}
35+
Destination folder: {2}
36+
'''

utils.py renamed to pybackup/utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ def __init__(self, verbose=False):
1818
self.verbose = verbose
1919
logging.basicConfig(filename='backup.log', level=logging.INFO)
2020

21-
def UpdateTime(self):
21+
def update_time(self):
2222
self.now = getDateTime()
2323

24-
def UpdateLog(self, exception, type='ERROR'):
25-
self.UpdateTime()
24+
def update_log(self, exception, type='ERROR'):
25+
self.update_time()
2626
msg = self.now+': '+exception
2727
if type == 'ERROR':
2828
logging.error(msg)
@@ -59,7 +59,7 @@ def __init__(self, *mail_list, **config):
5959

6060
# Create SMTP object
6161

62-
def Connect(self):
62+
def connect(self):
6363
'''
6464
connect to SMTP server an return the SMTP object
6565
'''
@@ -88,12 +88,12 @@ def Connect(self):
8888

8989
return SMTP_obj
9090

91-
def Send(self, subject, message):
91+
def send(self, subject, message):
9292
'''
9393
Send email to mailing list
9494
'''
9595

96-
smtp = self.Connect()
96+
smtp = self.connect()
9797

9898
header = 'from: %s\n' % self.mail_address
9999
header += 'to: %s\n' % ','.join(self.mailingList)

setup.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
4+
5+
from setuptools import setup, find_packages
6+
7+
8+
with open('README.md') as readme_file:
9+
readme = readme_file.read()
10+
11+
requirements = ['']
12+
13+
test_requirements = [
14+
# TODO: put package test requirements here
15+
]
16+
17+
setup(
18+
name='PyBackup',
19+
version='0.0.2',
20+
description=('Python module for Backup routines'
21+
'of files and folders'),
22+
long_description=readme,
23+
author="Fabricio Roberto reinert",
24+
author_email='fabricio.reinert@live.com',
25+
url='https://github.com/FRReinert/PyBackup',
26+
packages=find_packages(),
27+
include_package_data=True,
28+
install_requires=requirements,
29+
license="MIT license",
30+
zip_safe=False,
31+
keywords='Python, backup, files, folders',
32+
classifiers=[
33+
'Development Status :: 2 - Pre-Alpha',
34+
'Intended Audience :: Developers',
35+
'License :: OSI Approved :: MIT License',
36+
'Natural Language :: English',
37+
'Programming Language :: Python :: 3.6',
38+
],
39+
test_suite='tests.test_app.tests',
40+
tests_require=test_requirements
41+
)

0 commit comments

Comments
 (0)