1
0
Fork 0

- configuration information file (like mailman)

- GNU GPL information in each file
- more pythonic way to define attributes
- exception class


git-svn-id: file:///home/www/usr01/svn/gnuviechadmin/gnuviech.info/gnuviechadmin/trunk@215 a67ec6bc-e5d5-0310-a910-815c51eb3124
This commit is contained in:
Jan Dittberner 2007-02-10 13:52:59 +00:00
parent adbf8e440d
commit a0778661c6
6 changed files with 200 additions and 47 deletions

View file

@ -1,16 +1,28 @@
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
# This file is part of gnuviechadmin.
# Copyright (C) 2007 by Jan Dittberner.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Author: Jan Dittberner <jan@dittberner.info>
# Copyright (c) 2007 Jan Dittberner
# Version: $Id$
import getopt, sys
from sqlalchemy import *
import getopt, sys, sqlalchemy
from gnuviechadmin import client
from gnuviechadmin import client, exceptions
def usage():
print """Usage: %s [-h|--help] [-v|--verbose]
@ -91,13 +103,19 @@ def main():
clientdata["phone"] = a
if verbose:
print "parsed client data is ", clientdata
myclient = client.Client(clientdata)
if not myclient:
try:
myclient = client.Client(**clientdata)
except exceptions.MissingFieldsError, mfe:
print mfe
usage()
sys.exit(2)
sess = create_session()
sess.save(myclient)
sess.flush()
try:
sess = sqlalchemy.create_session()
sess.save(myclient)
sess.flush()
except sqlalchemy.exceptions.SQLError, e:
print "saving client failed: ", e
sys.exit(2)
if verbose:
print myclient

34
gnuviechadmin/Defaults.py Normal file
View file

@ -0,0 +1,34 @@
# -*- python -*-
#
# Copyright (C) 2007 by Jan Dittberner.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Version: $Id$
"""Distributed default settings for significant GnuviechAdmin config
variables."""
# NEVER make site configuration changes to this file. ALWAYS make
# them in gva_cfg.py instead, in the designated area. See the
# comments in that file for details.
#----------------------------------------------------------------------
# The database connection string in a format usable for
# sqlalchemy. The default is an sqlite in memory database which is not
# very usable for a real installation.
#
GVA_DBE = 'sqlite:///:memory:'

View file

@ -1,11 +1,22 @@
# This file is part of gnuviechadmin.
# -*- coding: UTF-8 -*-
#
# Author: Jan Dittberner <jan@dittberner.info>
# Copyright (c) 2007, Jan Dittberner
# Copyright (C) 2007 by Jan Dittberner.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Version: $Id$
"""
This is the gnuviechadmin package.
"""
"""This is the gnuviechadmin package."""

View file

@ -1,13 +1,28 @@
# This file is part of gnuviechadmin.
# -*- coding: UTF-8 -*-
#
# Author: Jan Dittberner <jan@dittberner.info>
# Copyright (c) 2007 Jan Dittberner
# Copyright (C) 2007 by Jan Dittberner.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Version: $Id$
from sqlalchemy import *
from gnuviechadmin import gva_cfg, exceptions
meta = BoundMetaData('sqlite:///database.txt')
meta = BoundMetaData(gva_cfg.GVA_DBE)
client_table = Table('clients', meta,
Column('clientid', Integer, primary_key=True),
Column('title', String(10)),
@ -25,32 +40,29 @@ client_table = Table('clients', meta,
client_table.create(checkfirst=True)
class Client(object):
mandatory = ('firstname', 'lastname', 'address1', 'zip', 'city',
'country', 'phone', 'email')
"""This class provides a client representation"""
def __init__(self, clientdata):
mandatory = ('firstname', 'lastname', 'address1', 'zip', 'city',
'email', 'phone', 'country')
data = {"country": "de", "title": None, "address2": None,
"mobile": None, "fax": None, "organisation": None}
for key in clientdata.keys():
data[key] = clientdata[key]
for key in mandatory:
if not key in data:
print "mandatory client field %s is missing" % (key)
self = None
return
self.title = data["title"]
self.firstname = data["firstname"]
self.lastname = data["lastname"]
self.address1 = data["address1"]
self.address2 = data["address2"]
self.organisation = data["organisation"]
self.zip = data["zip"]
self.city = data["city"]
self.country = data["country"]
self.phone = data["phone"]
self.mobile = data["mobile"]
self.fax = data["fax"]
self.email = data["email"]
def __init__(self, **kwargs):
self.clientid = None
self.country = 'de'
self.title = None
self.address2 = None
self.mobile = None
self.fax = None
self.organisation = None
for key in kwargs.keys():
self.__setattr__(key, kwargs[key])
self.validate()
def validate(self):
missingfields = []
for key in self.mandatory:
if self.__getattribute__(key) is None:
missingfields.append(key)
if missingfields:
raise exceptions.MissingFieldsError(missingfields)
def __repr__(self):
return """Client (Id %(clientid)d):

View file

@ -0,0 +1,30 @@
# -*- coding: UTF-8 -*-
#
# Copyright (C) 2007 by Jan Dittberner.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Version: $Id$
"""This file defines the gnuviechadmin specific exception types."""
class MissingFieldsError(Exception):
"""This exception should be raised when a required field of a data
class is missing."""
def __init__(self, missingfields):
self.missing = missingfields
def __str__(self):
return "the fields %s are missing." % (repr(self.missing))

View file

@ -0,0 +1,48 @@
# -*- python -*-
#
# Copyright (C) 2007 by Jan Dittberner.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Version: $Id$
"""This is the module which takes your site-specific settings.
From a raw distribution it should be copied to gva_cfg.py. If you
already have a gva_cfg.py, be careful to add in only the new settings
you want. The complete set of distributed defaults, with annotation,
are in ./Defaults. In mm_cfg, override only those you want to change,
after the
from Defaults import *
line (see below)."""
###############################################################
# Here's where we get the distributed defaults. #
from Defaults import *
###############################################################
# Put YOUR site-specific configuration below, in gva_cfg.py . #
# See Defaults.py for explanations of the values. #
#--------------------------------------------------------------
# The database connection string in a format usable for
# sqlalchemy. For examples see
# http://www.sqlalchemy.org/docs/dbengine.myt
#
GVA_DBE = 'sqlite:///database.txt'