def update(colla, body): name = body['name'] uni = body['uni'] description = body['description'] phoneNumber = body['phoneNumber'] email = body['email'] web = body['web'] address = body['address'] color = body['color'] img = body['img'] image_name = None if img is not None: if colla.img is not None and os.path.exists(colla.img): os.remove(colla.img) image_name = os.path.expanduser("~/images/colles") + "/" + colla.name.lower() + ".png" with open(image_name, "wb") as fh: fh.write(img.decode('base64')) colla.name = name colla.uni = uni colla.description = description colla.phoneNumber = phoneNumber colla.email = email colla.web = web colla.address = address colla.color = color colla.img = image_name db_configuration = json.loads(open("api/db/db.json").read()) from api.db.CtrlFactory import get_colla_ctrl colla_ctrl = get_colla_ctrl(DB(db_configuration).get_database_connection()) colla_ctrl.update(colla) colla.img = img return colla
def test_get_followed_colles_by_user(self): test_user = User(name='Test_name', surname='Test surnames', email='*****@*****.**', password='') user_ctrl = get_user_ctrl(self.cnx) user_ctrl.insert(test_user) colla1 = Colla(name='Test colla 1', uni=0, color='#FFFFFF') colla2 = Colla(name='Test colla 2', uni=1, color='#FFFFFF') colla3 = Colla(name='Test colla 3', uni=1, color='#FFFFFF') colla_ctrl = get_colla_ctrl(self.cnx) colla_ctrl.insert(colla1) colla_ctrl.insert(colla2) colla_ctrl.insert(colla3) sql = "INSERT INTO follows(id_user, id_colla) VALUES ('%s','%s')" data = [(test_user.id, colla1.id), (test_user.id, colla2.id)] self.cnx.cursor().executemany(sql, data) following_ctrl = get_following_ctrl(self.cnx) following_colles = following_ctrl.get_followed_by_user(test_user.id) self.assertEquals(2, len(following_colles)) self.assertEquals(colla1, following_colles[0]) self.assertEquals(colla2, following_colles[1])
def test_insert(self): colla = Colla(name="Test_Name", uni=0, color="#123456") db_colla = get_colla_ctrl(self.cnx).insert(colla) self.assertIsNotNone(db_colla.id) self.assertEquals("Test_Name", db_colla.name) self.assertFalse(db_colla.uni) self.assertEquals("#123456", db_colla.color)
def revoke_admin(): user_id = request.args.get('user_id') colla_id = request.args.get('colla_id') if colla_id is None or user_id is None: abort(400) db_configuration = json.loads(open("api/db/db.json").read()) from api.db.CtrlFactory import get_user_ctrl user = get_user_ctrl(DB(db_configuration).get_database_connection()).get(user_id) from api.db.CtrlFactory import get_colla_ctrl colla = get_colla_ctrl(DB(db_configuration).get_database_connection()).get(colla_id) if colla is None or user is None: abort(404) from api.db.CtrlFactory import get_admin_ctrl get_admin_ctrl(DB(db_configuration).get_database_connection()).delete(user.id, colla.id) return make_response(jsonify({}), 202)
def get_all_info_colla(colla_id): db_configuration = json.loads(open("api/db/db.json").read()) from api.db.CtrlFactory import get_colla_ctrl colla_ctrl = get_colla_ctrl(DB(db_configuration).get_database_connection()) colla = colla_ctrl.get_full(colla_id) encoded_img = None if colla: if colla.img is not None: try: img_path = os.path.expanduser(colla.img) with open(img_path, "rb") as fh: encoded_img = base64.b64encode(fh.read()) except IOError: pass finally: colla.img = encoded_img return colla
def follow(user_id): db_configuration = json.loads(open("api/db/db.json").read()) user_ctrl = get_user_ctrl(DB(db_configuration).get_database_connection()) user = user_ctrl.get(user_id) if user is None: abort(404) else: colla_id = request.args.get('colla_id') if colla_id is not None: colla = get_colla_ctrl( DB(db_configuration).get_database_connection()).get(colla_id) if colla: user_service.add_following(user.id, colla_id) user = user_service.get_all_info(user) return make_response(jsonify(user.__dict__), 200) else: abort(404) abort(400)
def get_all(): db_configuration = json.loads(open("api/db/db.json").read()) from api.db.CtrlFactory import get_colla_ctrl colla_ctrl = get_colla_ctrl(DB(db_configuration).get_database_connection()) colles = colla_ctrl.get_all() # for colla in colles: # encoded_img = None # if colla.img is not None: # try: # img_path = os.path.expanduser(colla.img) # with open(img_path, "rb") as fh: # encoded_img = base64.b64encode(fh.read()) # except IOError: # pass # finally: # colla.img = encoded_img return colles
def test_get_all(self): sql = 'INSERT INTO colles (name, uni, color, img_path) ' \ 'VALUES ("%s", "%s", "%s", "%s")' % ('Test_Name', 1, 'FFFFFF', '~/TestProjectes') cursor = self.cnx.cursor() cursor.execute(sql) sql = 'INSERT INTO colles (name, uni, color, img_path) ' \ 'VALUES ("%s", "%s", "%s", "%s")' % ('Test_Name2', 1, 'FFFFFF', '~/TestProjectes') cursor = self.cnx.cursor() cursor.execute(sql) sql = 'INSERT INTO colles (name, uni, color, img_path) ' \ 'VALUES ("%s", "%s", "%s", "%s")' % ('Test_Name3', 0, 'FFFFFF', '~/TestProjectes') cursor = self.cnx.cursor() cursor.execute(sql) colles = get_colla_ctrl(self.cnx).get_all() self.assertIsNotNone(colles) self.assertEquals(3, len(colles))
def add_performance(item): db_configuration = json.loads(open("api/db/db.json").read()) from api.db.CtrlFactory import get_result_ctrl result_ctrl = get_result_ctrl( DB(db_configuration).get_database_connection()) pub_date = strptime(item.pubDate.string[:-6], '%a, %d %b %Y %H:%M:%S') performance = Performance(title=item.title.string, date=datetime.fromtimestamp(mktime(pub_date))) performance = result_ctrl.insert_performance(performance) inner_html = BeautifulSoup(item.description.string, 'html.parser') rows = inner_html.find('table').find_all('tr') colla_name = None colla = None first = True from api.db.CtrlFactory import get_colla_ctrl for row in rows: if first: first = False else: cells = row.find_all('td') name = cells[0].get_text() if colla_name != name and name.encode('utf-8') != '': colla_name = name colla = get_colla_ctrl( DB(db_configuration).get_database_connection() ).get_by_name(colla_name) if colla: ronda = Round(num=cells[1].get_text(), tries=cells[2].get_text(), castell=cells[3].get_text(), result=cells[4].get_text()) try: result_ctrl.insert_result(performance, colla, ronda) except _mysql_exceptions.IntegrityError: pass return