Пример #1
0
 def move_file(self, user, curr_seg, file_name, next_seg):
     """
     handle moving files to other segs
     """
     try:
         print curr_seg.get_user_premission(user.get_name())
         if curr_seg.__can_change__(
                 user.get_name()) and next_seg.__can_change__(
                     user.get_name()):
             print 'movingggg'
             db.write_in_log(
                 Cloud.event_log_dir, "moving file: " +
                 str(datetime.datetime.now()) + "--" + file_name + ':' +
                 curr_seg.get_name() + '->' + next_seg.get_name())
             #file_id = self.segments[curr_seg.get_name()].get_file_id(file_name)
             if db.move_file_to_another_seg(self.cloud_dir,
                                            curr_seg.get_name(),
                                            next_seg.get_name(), file_name):
                 next_seg.add_file(
                     user.get_name(),
                     (curr_seg.delete_file(user.get_name(), file_name)))
                 return True
         return False
     except:
         print "failed"
         return False
Пример #2
0
    def add(self, user, file_path, file_binary):
        """
        create and save the file data in the server folder and in the database
        """
        premission = self.users_and_premissions[user]
        print user, "pre: ", premission, "uploading:  ", file_path, "file binary: ", len(
            file_binary)
        if premission == 'W' or premission == 'A':
            #file_data = (file_path.split('\\')[-1]).split('.')
            file_data = os.path.splitext(os.path.basename(file_path))
            file_name, file_extention = file_data[0], file_data[1]
            file_name = self.name_management(file_name)
            saved_file_path = os.path.join(Cloud.files_data_dir, file_name)

            if db.add_file(self.cloud_dir, file_name, file_extention,
                           file_binary, saved_file_path, self.name):
                self.files.append(
                    (file_name, file_extention, len(file_binary)))
            print self.name, " files: ", self.files
            db.write_in_log(
                Cloud.event_log_dir,
                user + "file added " + str(datetime.datetime.now()) + "seg: " +
                self.name + ' file data: ' + str(
                    (file_name, file_extention, len(file_binary))))
            return True
        else:
            return False
Пример #3
0
 def __del__(self):
     """
     delete the seg
     """
     db.write_in_log(
         Cloud.event_log_dir, "seg deleted--" +
         str(datetime.datetime.now()) + "--seg name: " + str(self.name))
     return db.delete_seg(self.cloud_dir, self.name)
Пример #4
0
 def __create_event_log__(self, dir_name):
     """
     create the event_log file
     """
     if not os.path.isfile(dir_name):
         with open(dir_name, 'w') as f:
             db.write_in_log(Cloud.event_log_dir,
                             "cloud created" + str(datetime.datetime.now()))
Пример #5
0
 def add_file(self, username, file_data):
     """
     add file details to the seg lists
     """
     if self.__can_change__(username):
         self.files.append(file_data)
         db.write_in_log(
             Cloud.event_log_dir,
             username + "file added " + str(datetime.datetime.now()) +
             "seg: " + self.name + ' file data: ' + str(file_data))
         return True
     return False
Пример #6
0
 def add_user(self, user, password):
     """
     manage adding new user to the seg - premissions
     """
     if user.get_name() in self.users_and_premissions.keys():
         return False
     db.add_user_premission(Segment.login_db_dir, user.get_name(),
                            self.name)
     print "added", user, "to", self.name, " premissions"
     db.write_in_log(
         Cloud.event_log_dir,
         str(datetime.datetime.now()) + "added" + user.get_name(), "to",
         self.name)
     return self.add_new_premission(user.get_name(), password)
Пример #7
0
 def add_user_to_seg(self, username, seg_name, password):
     """
     join the user to the seg
     """
     seg = self.get_seg_object(seg_name)
     if seg:
         print 'adding to seg........'
         if seg.add_user(username, password) and username.add_seg(seg):
             db.write_in_log(
                 Cloud.event_log_dir,
                 "user joined -" + str(user.get_name()) + "---" +
                 str(datetime.datetime.now()) + "-- from: " +
                 seg.get_name())
             return True
     return False
Пример #8
0
 def add_change_premission(self, user, password, premission='W'):
     """
     change premissions
     """
     last_premission = self.users_and_premissions[user]
     if password == self.password and last_premission != 'A' and last_premission != 'W':
         self.users_and_premissions[user] = premission
         db.write_in_log(
             Cloud.event_log_dir, "seg premissions changed--" +
             str(datetime.datetime.now()) + "--seg: " + str(self.name) +
             " -- " + str(self.users_and_premissions))
         return db.update_premissions(
             self.cloud_dir,
             self.__convert_dict_to_premission_str__(
                 self.users_and_premissions), self.name)
     return False
Пример #9
0
 def delete_user_from_seg(self, user, seg):
     """
     delete the user to the seg
     """
     print seg
     print user.getSegments()
     if seg in user.getSegments():
         print 'deletingggg'
         if (seg.delete_user(user.get_name()) and user.delete_seg(seg)):
             db.write_in_log(
                 Cloud.event_log_dir,
                 "user exited -" + str(user.get_name()) + "---" +
                 str(datetime.datetime.now()) + "-- from: " +
                 seg.get_name())
             return True
     return False
Пример #10
0
 def change_seg_name(self, seg_object, username, password, new_name):
     """
     handle renaming segments
     """
     last_name = seg_object.get_name()
     if seg_object.change_table_name(username, password, new_name):
         #self.segments_names.remove(last_name)
         #self.segments_names.append(new_name)
         print self.segments_names
         self.segments[new_name] = self.segments[last_name]
         del self.segments[last_name]
         db.write_in_log(
             Cloud.event_log_dir,
             "seg name changed--" + str(datetime.datetime.now()) +
             "--from: " + str(last_name) + "to: " + new_name)
         return True
     return False
Пример #11
0
 def set_user_name(self, username, new_username):
     """
     rename the username
     """
     if db.rename_user(self.dir_name_login, username, new_username):
         self.all_users[username].set_name(new_username)
         user_segments = self.all_users[username].getSegments()
         for seg in user_segments:
             seg.update_username(username, new_username)
         self.all_users[new_username] = self.all_users[username]
         del self.all_users[username]
         db.write_in_log(
             Cloud.event_log_dir, "username changed -" +
             str(user.get_name()) + "---" + str(datetime.datetime.now()) +
             "-- from: " + username + " to: " + new_username)
         return (True, self.all_users[new_username])
     return False
Пример #12
0
 def createNewSegment(self, name, users_and_premissions, password):
     """
     add to the database and the objects(cloud, the relevant users) the seg
     """
     new_seg = Segment(
         self.cloud_dir, name,
         self.__handle_users_premissions_protocol__(users_and_premissions),
         password, False)
     self.segments_names.append(name)
     self.segments[name] = (new_seg)
     self.add_seg_to_users(
         self.__handle_users_premissions_protocol__(users_and_premissions),
         new_seg)
     db.write_in_log(
         Cloud.event_log_dir,
         "seg created--" + str(datetime.datetime.now()) + "--seg name: " +
         str(name) + " premissions: " + str(users_and_premissions))
     return new_seg
Пример #13
0
 def __convertDataToObject_USER__(self, list_of_data):
     """
     create all the users objects
     """
     users_list = {}
     for data in list_of_data:
         if data[0] == self.admin_username:
             users_list[data[0]] = (Client(data[0], self.segments.values(),
                                           data[1], data[3], data[4]))
         else:
             users_list[data[0]] = (Client(
                 data[0],
                 self.get_segements_by_premissions(data[2], data[0]),
                 data[1], data[3], data[4]))
     print users_list
     db.write_in_log(
         Cloud.event_log_dir, "users loaded -" +
         str(datetime.datetime.now()) + "--" + str(users_list))
     return users_list
Пример #14
0
 def delete_file(self, user, file_name):
     """
     delete file in the database
     according the user premissions
     """
     premission = self.users_and_premissions[user]
     if premission == 'W' or premission == 'A':
         if db.delete_file(self.cloud_dir, self.name, file_name):
             data = filter(lambda file_data: file_data[0] == file_name,
                           self.files)[0]
             self.files.remove(data)
             db.write_in_log(
                 Cloud.event_log_dir,
                 str(datetime.datetime.now()) + 'removed from' + self.name +
                 " : " + str(data))
             print 'removed from', self.name, " : ", data
             return data
     else:
         return False
Пример #15
0
 def change_table_name(self, username, seg_password, new_name):
     """
     change table name in the object + database
     """
     print self.users_and_premissions.keys()
     last_name = self.name
     if self.password == seg_password and self.__can_change__(username):
         result = db.change_name_segment(self.cloud_dir,
                                         Segment.login_db_dir, self.name,
                                         new_name,
                                         self.users_and_premissions.keys())
         if result:
             self.name = new_name
             db.write_in_log(
                 Cloud.event_log_dir,
                 "seg name changed--" + str(datetime.datetime.now()) +
                 "--from: " + str(last_name) + " to: " + str(self.name))
         return result
     return False
Пример #16
0
 def change_name_file(self, user, file_name, new_name):
     """
     change file name: seg_object + database
     """
     premission = self.users_and_premissions[user]
     if premission == 'W' or premission == 'A':
         if db.change_name_file(self.cloud_dir, self.name, file_name,
                                new_name):
             last_file_details = filter(
                 lambda file_data: file_data[0] == file_name, self.files)[0]
             self.files[self.files.index(last_file_details)] = (
                 new_name, last_file_details[1], last_file_details[2])
             db.write_in_log(
                 Cloud.event_log_dir, "file name changed--" +
                 str(datetime.datetime.now()) + "--seg: " + str(self.name) +
                 " file: " + str(file_name) + " to: " + new_name)
             return True
         return False
     else:
         return False
Пример #17
0
 def download(self, user, file_name, directory_folder):
     """
     return the download path of the user, the file binary
     according the Premission
     """
     premission = self.users_and_premissions[user]
     if premission == 'R' or premission == 'A':
         command = '''SELECT file_directory,file_extension  FROM ''' + str(
             self.name) + ''' WHERE file_name= "''' + (file_name) + '''"'''
         path = os.path.join(directory_folder, file_name)
         file_data = db.getDataFromCloud(self.cloud_dir, command)
         server_file_path, file_extension = str(
             file_data[0][0]), file_data[0][1]
         #
         print server_file_path
         with open((server_file_path + file_extension), "rb") as f:
             file_binary = f.read()
         db.write_in_log(
             Cloud.event_log_dir, user + "downloaded file " +
             str(datetime.datetime.now()) + 'file name: ' + file_name)
         return file_binary, path + file_extension
     else:
         return None
Пример #18
0
 def __load_segments_from_cloud__(self, cloud_dir):
     """
     load from the database all the segments
     """
     segments = {}
     for name in self.segments_names:
         print name
         if name[0] != "segments_data":
             command = (
                 '''SELECT password,users_premissions FROM segments_data WHERE segment_name= "'''
                 + name[0] + '''"''')
             print command
             password, users_and_premissions = (db.getDataFromCloud(
                 cloud_dir, command)[0])
             users_and_premissions = self.__handle_users_premissions_protocol__(
                 users_and_premissions)
             segments[name[0]] = (Segment(self.cloud_dir, name[0],
                                          users_and_premissions, password,
                                          True))
     print segments
     db.write_in_log(
         Cloud.event_log_dir, "segs loaded -" +
         str(datetime.datetime.now()) + "--" + str(segments))
     return segments